LlamaIndex Workflows 是一个用于编排和链接复杂多步骤系统与事件的框架。
当你需要编排涉及 AI 模型、API 和决策的复杂多步骤流程时,Workflows 表现出色。以下是一些可以构建的示例:
其异步优先、事件驱动的架构使得构建工作流变得简单,这些工作流可以在不同功能之间路由、实现并行处理模式、循环复杂的序列,并在多个步骤中保持状态——这些都是使你的 AI 应用达到生产就绪状态所需的所有功能。
Arize Phoenix 和 OpenTelemetry 等工具。安装包:
pip install llama-index-workflows
并创建你的第一个工作流:
import asyncio
from pydantic import BaseModel, Field
from workflows import Context, Workflow, step
from workflows.events import Event, StartEvent, StopEvent
class MyEvent(Event):
msg: list[str]
class RunState(BaseModel):
num_runs: int = Field(default=0)
class MyWorkflow(Workflow):
@step
async def start(self, ctx: Context[RunState], ev: StartEvent) -> MyEvent:
async with ctx.store.edit_state() as state:
state.num_runs += 1
return MyEvent(msg=[ev.input_msg] * state.num_runs)
@step
async def process(self, ctx: Context[RunState], ev: MyEvent) -> StopEvent:
data_length = len("".join(ev.msg))
new_msg = f"Processed {len(ev.msg)} times, data length: {data_length}"
return StopEvent(result=new_msg)
async def main():
workflow = MyWorkflow()
# [可选] 向工作流提供一个上下文对象
ctx = Context(workflow)
result = await workflow.run(input_msg="Hello, world!", ctx=ctx)
print("Workflow result:", result)
# 使用相同的上下文重新运行将保留状态
result = await workflow.run(input_msg="Hello, world!", ctx=ctx)
print("Workflow result:", result)
if __name__ == "__main__":
asyncio.run(main())
在上面的示例中:
- 接受 StartEvent 的步骤将首先运行。
- 返回 StopEvent 的步骤将结束工作流。
- 中间事件由用户定义,可用于在步骤之间传递信息。
- Context 对象也用于在步骤之间共享信息。
访问 完整文档 以获取更多使用 llama-index 的示例!
llama-index 构建函数调用智能体