文档索引
获取完整文档索引: https://docs.crewai.com.cn/llms.txt
在深入了解之前,请使用此文件来浏览所有可用页面。
“流程优先”思维模式
在使用 CrewAI 构建生产级 AI 应用时,我们建议从“流程”(Flow)开始。 虽然可以运行独立的 Crew(工作组)或 Agent(智能体),但将其封装在 Flow 中可为构建稳健、可扩展的应用程序提供必要的结构。为什么选择 Flow?
- 状态管理:Flow 提供了一种内置方式来管理应用程序各个步骤之间的状态。这对于在 Crew 之间传递数据、维护上下文以及处理用户输入至关重要。
- 控制能力:Flow 允许您定义精确的执行路径,包括循环、条件判断和分支逻辑。这对于处理边界情况并确保应用程序行为可预测是必不可少的。
- 可观测性:Flow 提供了清晰的结构,使跟踪执行情况、调试问题和监控性能变得更加容易。我们建议使用 CrewAI Tracing 来获取深入见解。只需运行
crewai login即可启用免费的可观测性功能。
架构
一个典型的生产级 CrewAI 应用架构如下1. Flow 类
您的Flow 类是入口点。它定义了状态模式(Schema)以及执行逻辑的方法。
2. 状态管理
使用 Pydantic 模型来定义状态。这可以确保类型安全,并明确在每个步骤中可以使用哪些数据。- 保持精简:仅存储需要在步骤之间持久化的数据。
- 使用结构化数据:尽可能避免使用非结构化的字典。
3. 将 Crew 作为工作单元
将复杂任务委托给 Crew。每个 Crew 都应专注于特定目标(例如:“调研主题”、“撰写博客文章”)。- 不要过度设计 Crew:保持其专注度。
- 显式传递状态:将必要的 Flow 状态数据传递给 Crew 输入。
控制原语
利用 CrewAI 的控制原语为您的 Crew 增加稳健性和控制力。1. 任务护栏(Task Guardrails)
使用 任务护栏 在任务输出被接受之前对其进行验证。这确保了您的智能体能够产出高质量的结果。2. 结构化输出
在任务之间或向应用程序传递数据时,始终使用结构化输出(output_pydantic 或 output_json)。这可以防止解析错误并确保类型安全。
3. LLM 钩子(Hooks)
使用 LLM 钩子 在消息发送给 LLM 之前对其进行检查或修改,或用于对响应进行净化。部署模式
在部署 Flow 时,请考虑以下建议CrewAI 企业版
部署 Flow 最简单的方法是使用 CrewAI 企业版。它为您处理基础设施、身份验证和监控。 查看 部署指南 以开始使用。异步执行
对于长时间运行的任务,请使用kickoff_async 以避免阻塞 API。
持久化
使用@persist 装饰器将 Flow 的状态保存到数据库中。这样,如果进程崩溃或需要等待人工输入,您可以恢复执行。
kickoff(inputs={"id": <uuid>}) 时,@persist 会恢复流,并沿用同一个 flow_uuid 的历史记录。若要将持久化流分叉(fork)到新的谱系中(即从之前的运行中水合状态,但以新的 state.id 写入),请传入 restore_from_state_id。
state.id(自动生成,或者如果已固定则使用 inputs["id"]),因此其 @persist 写入不会扩展源数据的历史记录。将其与 from_checkpoint 结合使用会引发 ValueError;请选择一种水合来源。
总结
- 从 Flow 开始。
- 定义清晰的状态。
- 使用 Crew 处理复杂任务。
- 通过 API 和持久化机制进行部署。
