跳到内容

入门#

让我们从在 LlamaDeploy 的本地实例上部署一个简单的工作流开始。安装 LlamaDeploy 后,创建一个 src 文件夹并在其中创建一个 workflow.py 文件,包含以下 Python 代码:

import asyncio
from llama_index.core.workflow import Workflow, StartEvent, StopEvent, step


class EchoWorkflow(Workflow):
    """A dummy workflow with only one step sending back the input given."""

    @step()
    async def run_step(self, ev: StartEvent) -> StopEvent:
        message = str(ev.get("message", ""))
        return StopEvent(result=f"Message received: {message}")


# `echo_workflow` will be imported by LlamaDeploy
echo_workflow = EchoWorkflow()


async def main():
    print(await echo_workflow.run(message="Hello!"))


# Make this script runnable from the shell so we can test the workflow execution
if __name__ == "__main__":
    asyncio.run(main())

在本地测试工作流运行情况

$ python src/workflow.py
Message received: Hello!

现在是部署这个工作流的时候了!创建一个名为 deployment.yml 的文件,包含以下 YAML 代码:

name: QuickStart

control-plane:
  port: 8000

default-service: echo_workflow

services:
  echo_workflow:
    name: Echo Workflow
    # We tell LlamaDeploy where to look for our workflow
    source:
      # In this case, we instruct LlamaDeploy to look in the local filesystem
      type: local
      # The path in the local filesystem where to look. This assumes there's an src folder in the
      # current working directory containing the file workflow.py we created previously
      name: ./src
    # This assumes the file workflow.py contains a variable called `echo_workflow` containing our workflow instance
    path: workflow:echo_workflow

上述 YAML 代码定义了 LlamaDeploy 将创建并作为服务运行的部署。如您所见,这个部署有一个名称、一些控制平面的配置以及一个用于包装我们工作流的服务。该服务将在名为 workflow 的 Python 模块中查找名为 echo_workflow 的 Python 变量并运行工作流。

至此,我们已经具备了运行此部署所需的一切。理想情况下,API 服务器应该已经在云中的某个地方运行,但为了快速入门,让我们先在本地启动一个实例。从 shell 中运行以下 Python 脚本:

$ python -m llama_deploy.apiserver
INFO:     Started server process [10842]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:4501 (Press CTRL+C to quit)

在另一个 shell 中,使用 llamactl 创建部署:

$ llamactl deploy deployment.yml
Deployment successful: QuickStart

我们的工作流现在是 QuickStart 部署的一部分,并已准备好提供请求服务!我们可以使用 llamactl 与此部署进行交互:

$ llamactl run --deployment QuickStart --arg message 'Hello from my shell!'
Message received: Hello from my shell!

使用 Docker 运行 API 服务器#

LlamaDeploy 提供了 Docker 镜像,可以轻松地用于运行 API 服务器。在前面的示例中,如果您安装了 Docker,可以将本地运行 API 服务器的命令 python -m llama_deploy.apiserver 替换为:

$ docker run -p 4501:4501 -v .:/opt/quickstart -w /opt/quickstart llamaindex/llama-deploy:main
INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:4501 (Press CTRL+C to quit)

API 服务器将在您主机的 http://localhost:4501 地址可用,因此 llamactl 的工作方式与您运行 python -m llama_deploy.apiserver 时相同。

注意

llamaindex/llama-deploy:main Docker 镜像持续从 Git 仓库 main 分支的最新提交构建。虽然这确保您获得项目的最新版本,但该镜像可能包含尚未完全稳定的未发布功能,请谨慎使用!