用途
CrewAI 用于构建由多个自主 AI 智能体组成的团队,让它们通过协作解决复杂任务。文档指出,适用于以下情况:构建具有专业化角色的多智能体系统;需要智能体之间自主协作;希望按角色进行任务委派(如研究员、写作者、分析师);需要顺序或层级式流程执行;构建带有记忆与可观测性的生产工作流;以及希望比 LangChain/LangGraph 更简单的配置方式。
主要能力
- 独立运行:无 LangChain 依赖,体量精简。
- 基于角色:每个智能体拥有角色、目标和背景故事。
- 双范式:Crews(自主协作)与 Flows(事件驱动)。
- 50+ 工具:网页抓取、搜索、数据库、AI 服务等。
- 记忆:短期、长期和实体记忆。
- 生产就绪:追踪、企业级特性。
核心概念包括三类:
- Agent(智能体)——自主工作者。可设置 role(角色)、goal(目标)、backstory(背景)、llm(使用的模型)、tools(工具)、memory(是否启用记忆)、verbose(是否显示推理过程)、allow_delegation(是否可委派给其他智能体)、max_iter(最大推理迭代数)、max_rpm(速率限制)等参数。
- Task(任务)——工作单元。可设置 description(描述)、expected_output(期望输出)、agent(分配的智能体)、context(来自其他任务的输入)、output_file(保存到文件)、async_execution(是否异步执行)、human_input(是否需要人工审批)等。
- Crew(团队)——智能体团队。组合 agents、tasks,并设置 process(流程类型)、verbose、memory、cache、max_rpm、share_crew 等。执行后可访问 result.raw(最终输出)、result.tasks_output(全部任务输出)、result.token_usage(token 消耗)。
流程类型有两种:
- Sequential(顺序,默认):任务按顺序执行,每个智能体完成自己的任务后再进行下一个。
- Hierarchical(层级):自动创建一个管理者智能体来委派与协调,可指定 manager_llm。
工具支持:安装 pip install 'crewai[tools]' 后可获得 50+ 内置工具,例如 SerperDevTool(网页搜索)、ScrapeWebsiteTool(网页抓取)、FileReadTool(读取文件)、PDFSearchTool(搜索 PDF)、WebsiteSearchTool(搜索网站)、CodeDocsSearchTool(搜索代码文档)、YoutubeVideoSearchTool(搜索 YouTube)。也支持通过继承 BaseTool 编写自定义工具。
记忆系统:在 Crew 中设置 memory=True 启用记忆,并可自定义 embedder(嵌入提供方与模型)。记忆类型包括短期(ChromaDB)、长期(SQLite)、实体(ChromaDB)。
LLM 提供方:支持通过 LLM 类配置多种模型,如 OpenAI(默认,如 gpt-4o)、Anthropic、本地 Ollama、Azure 等。
Flows:针对带条件逻辑的复杂工作流,可使用事件驱动的 Flow,配合 start、listen、router 等装饰器与 pydantic 状态模型实现步骤编排与分支路由。
使用方式
安装:
# Core framework
pip install crewai
# With 50+ built-in tools
pip install 'crewai[tools]'
用 CLI 创建项目:
# Create new crew project
crewai create crew my_project
cd my_project
# Install dependencies
crewai install
# Run the crew
crewai run
也可纯代码定义。官方示例:先定义 agent 与 task,再组装 Crew 并执行:
from crewai import Agent, Task, Crew, Process
researcher = Agent(
role="Senior Research Analyst",
goal="Discover cutting-edge developments in AI",
backstory="You are an expert analyst with a keen eye for emerging trends.",
verbose=True
)
writer = Agent(
role="Technical Writer",
goal="Create clear, engaging content about technical topics",
backstory="You excel at explaining complex concepts to general audiences.",
verbose=True
)
research_task = Task(
description="Research the latest developments in {topic}. Find 5 key trends.",
expected_output="A detailed report with 5 bullet points on key trends.",
agent=researcher
)
write_task = Task(
description="Write a blog post based on the research findings.",
expected_output="A 500-word blog post in markdown format.",
agent=writer,
context=[research_task]
)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
verbose=True
)
result = crew.kickoff(inputs={"topic": "AI Agents"})
print(result.raw)
推荐使用 YAML 配置方式。项目结构如下:
my_project/
├── src/my_project/
│ ├── config/
│ │ ├── agents.yaml # Agent definitions
│ │ └── tasks.yaml # Task definitions
│ ├── crew.py # Crew assembly
│ └── main.py # Entry point
└── pyproject.toml
agents.yaml、tasks.yaml 分别定义智能体与任务,crew.py 使用 @CrewBase 装饰器与 @agent、@task、@crew 方法组装,main.py 作为入口调用 kickoff 并传入 inputs。
适用场景
文档给出的典型场景包括:需要专业化角色的多智能体系统、智能体间自主协作、按角色委派任务(研究员、写作者、分析师)、顺序或层级流程执行、带记忆与可观测性的生产工作流,以及希望比 LangChain/LangGraph 更易配置的项目。文档同时建议以下情况选用替代方案:LangChain 适合通用 LLM 应用与 RAG 流水线;LangGraph 适合带环路的复杂有状态工作流;AutoGen 适合微软生态与多智能体对话;LlamaIndex 适合文档问答与知识检索。
限制与注意事项
文档列出了常见问题与最佳实践:
- 智能体陷入循环:可设置 max_iter(默认 15)与 max_rpm 限制。
- 任务未使用上下文:需通过 context=[task1] 显式传递。
- 记忆错误:可通过环境变量 CREWAI_STORAGE_DIR 指定存储目录。
- 最佳实践:为每个智能体设定清晰且互不重复的角色;较大项目使用 YAML 配置;启用记忆以改善跨任务上下文;设置 max_iter 防止无限循环;每个智能体工具数限制在 3-5 个;设置 max_rpm 避免 API 限流。
版本与许可:文档标注版本为 1.2.0+,许可证为 MIT。资源:GitHub https://github.com/crewAIInc/crewAI (25k+ stars)、文档 https://docs.crewai.com 、工具 https://github.com/crewAIInc/crewAI-tools 、示例 https://github.com/crewAIInc/crewAI-examples 。
关于具体收费、价格、平台支持范围或实际效果,资料未提供,暂未提供。