OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  LlamaIndex Workflows — 用事件驱动方式编排复杂 LLM 工作流

LlamaIndex Workflows — 用事件驱动方式编排复杂 LLM 工作流

 
  basic ·  2026-03-19 11:00:25 · 5 次点击  · 0 条评论  

LlamaIndex Workflows

单元测试
覆盖率状态
GitHub 贡献者

PyPI - 下载量
Discord
Twitter
Reddit

LlamaIndex Workflows 是一个用于编排和链接复杂多步骤系统与事件的框架。

使用 Workflows 可以构建什么?

当你需要编排涉及 AI 模型、API 和决策的复杂多步骤流程时,Workflows 表现出色。以下是一些可以构建的示例:

  • AI 智能体 - 创建能够在多个步骤中进行推理、决策和执行操作的智能系统。
  • 文档处理流水线 - 构建能够通过不同处理阶段来摄取、分析、总结和路由文档的系统。
  • 多模型 AI 应用 - 协调不同的 AI 模型(大语言模型、视觉模型等)以解决复杂任务。
  • 研究助手 - 开发能够搜索、分析、综合信息并提供全面答案的工作流。
  • 内容生成系统 - 创建包含人工审核环节的内容生成、审查、编辑和发布流水线。
  • 客户支持自动化 - 构建能够理解、分类和响应客户咨询的智能路由系统。

其异步优先、事件驱动的架构使得构建工作流变得简单,这些工作流可以在不同功能之间路由、实现并行处理模式、循环复杂的序列,并在多个步骤中保持状态——这些都是使你的 AI 应用达到生产就绪状态所需的所有功能。

主要特性

  • 异步优先 - 工作流围绕 Python 的异步功能构建。步骤是异步函数,它们处理来自 asyncio 队列的传入事件,并将新事件发送到其他队列。这也意味着工作流在你的异步应用(如 FastAPI、Jupyter Notebooks 等)中运行效果最佳。
  • 事件驱动 - 工作流由步骤和事件组成。围绕事件和步骤组织代码使其更易于推理和测试。
  • 状态管理 - 工作流的每次运行都是独立的,这意味着你可以启动一个工作流,在其中保存信息,序列化工作流的状态并在以后恢复它。
  • 可观测性 - 工作流自动集成了可观测性工具,这意味着你可以直接使用 Arize PhoenixOpenTelemetry 等工具。

快速开始

安装包:

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 的示例!

更多示例

相关包

5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 16 ms
Developed with Cursor