入门#
让我们从在 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
分支的最新提交构建。虽然这确保您获得项目的最新版本,但该镜像可能包含尚未完全稳定的未发布功能,请谨慎使用!