快速且灵活的多智能体自动化框架

CrewAI 是一个轻量、极速的 Python 框架,完全从零构建——完全独立于 LangChain 或其他智能体框架。 它同时为开发者提供高层次的简洁性和精确的底层控制,非常适合创建适用于任何场景的定制化自主 AI 智能体。

  • CrewAI Crews:针对自主性与协作智能进行优化。
  • CrewAI Flows:用于构建和部署多智能体系统的企业级与生产级架构。它提供细粒度、事件驱动的控制,通过单次 LLM 调用实现精确任务编排,并原生支持 Crews。

已有超过 100,000 名开发者通过我们的社区课程 learn.crewai.com 获得认证,CrewAI 正迅速成为企业级 AI 自动化的标准。

CrewAI AMP 套件

CrewAI AMP 套件是一个全面的产品组合,专为需要安全、可扩展且易于管理的智能体驱动自动化的组织打造。

你可以免费试用该套件中的一个部分:Crew Control Plane

Crew Control Plane 关键特性:

  • 链路追踪与可观测性:实时监控和跟踪你的 AI 智能体与工作流,包括指标、日志和追踪信息。
  • 统一控制平面:一个集中式平台,用于管理、监控和扩展你的 AI 智能体与工作流。
  • 无缝集成:轻松连接现有企业系统、数据源和云基础设施。
  • 高级安全性:内置强大的安全与合规措施,确保安全部署和管理。
  • 可执行洞察:实时分析与报告,帮助优化性能和决策。
  • 7×24 小时支持:专属企业支持,确保持续运行并快速解决问题。
  • 本地部署与云部署选项:可根据你的安全与合规需求,在本地或云端部署 CrewAI AMP。

CrewAI AMP 专为希望将复杂业务流程转变为高效、智能自动化的企业而设计,是一个强大且可靠的解决方案。

为什么选择 CrewAI?

CrewAI 通过 AI 智能体团队(Crews)或事件流(Flows),以业内领先的速度、灵活性和控制力组合,释放多智能体自动化的真正潜力:

  • 独立框架:从零构建,独立于 LangChain 或任何其他智能体框架。
  • 高性能:针对速度和最小资源占用进行优化,实现更快执行。
  • 灵活的底层定制能力:从整体工作流和系统架构,到细粒度的智能体行为、内部提示和执行逻辑,都可自由定制。
  • 适用于各种场景:无论是简单任务,还是高度复杂、真实世界中的企业级场景,都已被验证行之有效。
  • 强大的社区:由一个快速增长、拥有 100,000+ 认证开发者 的社区提供全面支持与资源。

CrewAI 赋能开发者与企业,能够自信地构建智能自动化,弥合简洁性、灵活性与性能之间的鸿沟。

快速开始

按照本教程设置并运行你的第一个 CrewAI 智能体。

CrewAI 入门教程

学习资源

通过我们的系统课程学习 CrewAI:

理解 Flows 与 Crews

CrewAI 提供了两种强大且互补的方法,它们可以无缝协同,用于构建复杂的 AI 应用:

  1. Crews:由真正具备自主性和能动性的 AI 智能体组成的团队,通过基于角色的协作共同完成复杂任务。Crews 支持:

    • 智能体之间自然、自主的决策
    • 动态任务委派与协作
    • 具备明确目标和专长的专业角色
    • 灵活的问题解决方式
  2. Flows:面向生产环境、事件驱动的工作流,为复杂自动化提供精确控制。Flows 提供:

    • 针对真实场景的细粒度执行路径控制
    • 任务之间安全且一致的状态管理
    • AI 智能体与生产级 Python 代码的清晰集成
    • 面向复杂业务逻辑的条件分支

当 Crews 与 Flows 结合使用时,CrewAI 的真正威力才会显现。这种协同可以让你:

  • 构建复杂的生产级应用
  • 在自主性与精确控制之间取得平衡
  • 处理复杂的真实世界场景
  • 保持代码结构清晰且易于维护

开始安装

要开始使用 CrewAI,请按照以下简单步骤操作:

1. 安装

请确保你的系统已安装 Python >=3.10 <3.14。CrewAI 使用 UV 进行依赖管理和包处理,从而提供流畅的安装与执行体验。

首先,安装 CrewAI:

  1. uv pip install crewai

如果你希望安装包含可选功能(例如为智能体提供额外工具)的 crewai 包,可以使用以下命令:

  1. uv pip install 'crewai[tools]'

上述命令会安装基础包,并额外添加一些需要更多依赖才能运行的组件。

依赖问题排查

如果你在安装或使用过程中遇到问题,以下是一些常见解决方案:

常见问题

  1. ModuleNotFoundError: No module named ‘tiktoken’

    • 显式安装 tiktoken:uv pip install 'crewai[embeddings]'
    • 如果使用 embedchain 或其他工具:uv pip install 'crewai[tools]'
  2. Failed building wheel for tiktoken

    • 请确保已安装 Rust 编译器(见上方安装步骤)
    • 对于 Windows:确认已安装 Visual C++ Build Tools
    • 尝试升级 pip:uv pip install --upgrade pip
    • 如果问题仍然存在,可尝试使用预构建 wheel:uv pip install tiktoken --prefer-binary

2. 使用 YAML 配置来设置你的 Crew

要创建一个新的 CrewAI 项目,请运行以下 CLI(命令行接口)命令:

  1. crewai create crew <project_name>

此命令会创建一个具有如下结构的新项目文件夹:

  1. my_project/
  2. ├── .gitignore
  3. ├── pyproject.toml
  4. ├── README.md
  5. ├── .env
  6. └── src/
  7. └── my_project/
  8. ├── __init__.py
  9. ├── main.py
  10. ├── crew.py
  11. ├── tools/
  12. ├── custom_tool.py
  13. └── __init__.py
  14. └── config/
  15. ├── agents.yaml
  16. └── tasks.yaml

现在,你可以通过编辑 src/my_project 文件夹中的文件开始开发你的 crew。main.py 是项目的入口文件,crew.py 用于定义你的 crew,agents.yaml 用于定义智能体,tasks.yaml 用于定义任务。

你可以通过以下方式自定义项目:

  • 修改 src/my_project/config/agents.yaml 来定义你的智能体。
  • 修改 src/my_project/config/tasks.yaml 来定义你的任务。
  • 修改 src/my_project/crew.py 来添加你自己的逻辑、工具和特定参数。
  • 修改 src/my_project/main.py 来为智能体和任务添加自定义输入。
  • .env 文件中添加你的环境变量。

一个简单的顺序流程 crew 示例:

实例化你的 crew:

  1. crewai create crew latest-ai-development

根据你的使用场景修改相应文件:

agents.yaml

  1. # src/my_project/config/agents.yaml
  2. researcher:
  3. role: >
  4. {topic} 高级数据研究员
  5. goal: >
  6. 发掘 {topic} 领域的前沿进展
  7. backstory: >
  8. 你是一位经验丰富的研究员,擅长发现 {topic} 领域中的最新发展。
  9. 你以能够找到最相关的信息,并以清晰简洁的方式呈现而闻名。
  10. reporting_analyst:
  11. role: >
  12. {topic} 报告分析师
  13. goal: >
  14. 基于对 {topic} 的数据分析与研究结果生成详细报告
  15. backstory: >
  16. 你是一位一丝不苟、注重细节的分析师。你以能够将复杂数据转化为清晰简洁的报告而闻名,
  17. 让他人能够轻松理解并据此采取行动。

tasks.yaml

  1. # src/my_project/config/tasks.yaml
  2. research_task:
  3. description: >
  4. {topic} 进行全面研究
  5. 请确保你找到所有在当前年份 2025
  6. 有趣且相关的信息。
  7. expected_output: >
  8. 一份包含 10 个要点的列表,列出与 {topic} 最相关的信息
  9. agent: researcher
  10. reporting_task:
  11. description: >
  12. 审阅你获得的上下文,并将每个主题扩展为报告中的完整章节。
  13. 确保报告详细且包含所有相关信息。
  14. expected_output: >
  15. 一份完整成形的报告,包含主要主题,并且每个主题都有完整的信息章节。
  16. markdown 格式输出,不包含 '```'
  17. agent: reporting_analyst
  18. output_file: report.md

crew.py

  1. # src/my_project/crew.py
  2. from crewai import Agent, Crew, Process, Task
  3. from crewai.project import CrewBase, agent, crew, task
  4. from crewai_tools import SerperDevTool
  5. from crewai.agents.agent_builder.base_agent import BaseAgent
  6. from typing import List
  7. @CrewBase
  8. class LatestAiDevelopmentCrew():
  9. """LatestAiDevelopment crew"""
  10. agents: List[BaseAgent]
  11. tasks: List[Task]
  12. @agent
  13. def researcher(self) -> Agent:
  14. return Agent(
  15. config=self.agents_config['researcher'],
  16. verbose=True,
  17. tools=[SerperDevTool()]
  18. )
  19. @agent
  20. def reporting_analyst(self) -> Agent:
  21. return Agent(
  22. config=self.agents_config['reporting_analyst'],
  23. verbose=True
  24. )
  25. @task
  26. def research_task(self) -> Task:
  27. return Task(
  28. config=self.tasks_config['research_task'],
  29. )
  30. @task
  31. def reporting_task(self) -> Task:
  32. return Task(
  33. config=self.tasks_config['reporting_task'],
  34. output_file='report.md'
  35. )
  36. @crew
  37. def crew(self) -> Crew:
  38. """创建 LatestAiDevelopment crew"""
  39. return Crew(
  40. agents=self.agents, # 由 @agent 装饰器自动创建
  41. tasks=self.tasks, # 由 @task 装饰器自动创建
  42. process=Process.sequential,
  43. verbose=True,
  44. )

main.py

  1. #!/usr/bin/env python
  2. # src/my_project/main.py
  3. import sys
  4. from latest_ai_development.crew import LatestAiDevelopmentCrew
  5. def run():
  6. """
  7. 运行 crew。
  8. """
  9. inputs = {
  10. 'topic': 'AI Agents'
  11. }
  12. LatestAiDevelopmentCrew().crew().kickoff(inputs=inputs)

3. 运行你的 Crew

在运行你的 crew 之前,请确保你已在 .env 文件中将以下密钥设置为环境变量:

  • 一个 OpenAI API key(或其他 LLM API key):OPENAI_API_KEY=sk-...
  • 一个 Serper.dev API key:SERPER_API_KEY=YOUR_KEY_HERE

首先切换到你的项目目录,然后使用 CLI 命令锁定依赖并安装:

  1. cd my_project
  2. crewai install (可选)

要运行你的 crew,请在项目根目录执行以下命令:

  1. crewai run

或者

  1. python src/my_project/main.py

如果由于使用 poetry 导致报错,请运行以下命令更新你的 crewai 包:

  1. crewai update

你应该会在控制台中看到输出,并且项目根目录下会生成包含完整最终报告的 report.md 文件。

除了顺序流程外,你还可以使用分层流程。该流程会自动为定义好的 crew 指派一个管理者,通过委派与结果验证来协调任务的规划与执行。在这里查看更多有关流程的信息

核心特性

CrewAI 作为一个轻量、独立、高性能的多 AI 智能体框架而脱颖而出,提供简洁性、灵活性和精确控制——摆脱了其他智能体框架中的复杂性与限制。

  • 独立且轻量:完全独立于 LangChain 等其他框架,执行更快、资源占用更低。
  • 灵活且精确:可通过直观的 Crews 或精确的 Flows 轻松编排自主智能体,实现最符合需求的平衡。
  • 无缝集成:轻松结合 Crews(自主性)和 Flows(精确性),构建复杂的真实世界自动化。
  • 深度可定制:从高层工作流到底层内部提示和智能体行为的每个方面都可定制。
  • 可靠性能:在简单任务和复杂企业级自动化场景中都能保持一致、稳定的结果。
  • 繁荣的社区:拥有完善的文档和超过 100,000 名认证开发者支持,提供卓越的帮助与指导。

选择 CrewAI,轻松构建强大、可适配且可用于生产环境的 AI 自动化。

示例

你可以在 CrewAI-examples 仓库 中测试不同的真实 AI crew 示例:

快速教程

CrewAI 教程

编写职位描述

查看此示例代码 或观看下方视频:

职位发布

旅行规划师

查看此示例代码 或观看下方视频:

旅行规划师

股票分析

查看此示例代码 或观看下方视频:

股票分析

结合使用 Crews 与 Flows

当 Crews 与 Flows 结合使用以创建复杂自动化流水线时,CrewAI 的能力才真正得到充分体现。 CrewAI 的 flows 支持像 or_and_ 这样的逻辑运算符,可用于组合多个条件。它们可以与 @start@listen@router 装饰器一起使用,以创建复杂的触发条件。

  • or_:当任意一个指定条件满足时触发。
  • and_:当所有指定条件都满足时触发。

下面展示了如何在一个 Flow 中编排多个 Crews:

  1. from crewai.flow.flow import Flow, listen, start, router, or_
  2. from crewai import Crew, Agent, Task, Process
  3. from pydantic import BaseModel
  4. # 定义结构化状态,以实现精确控制
  5. class MarketState(BaseModel):
  6. sentiment: str = "neutral"
  7. confidence: float = 0.0
  8. recommendations: list = []
  9. class AdvancedAnalysisFlow(Flow[MarketState]):
  10. @start()
  11. def fetch_market_data(self):
  12. # 通过结构化状态展示底层控制能力
  13. self.state.sentiment = "analyzing"
  14. return {"sector": "tech", "timeframe": "1W"} # 这些参数与任务描述模板匹配
  15. @listen(fetch_market_data)
  16. def analyze_with_crew(self, market_data):
  17. # 通过专业角色展现 crew 的能动性
  18. analyst = Agent(
  19. role="高级市场分析师",
  20. goal="以专家洞察开展深入的市场分析",
  21. backstory="你是一位资深分析师,以识别微妙的市场模式而闻名"
  22. )
  23. researcher = Agent(
  24. role="数据研究员",
  25. goal="收集并验证支撑市场分析的数据",
  26. backstory="你擅长发现并关联多个数据源"
  27. )
  28. analysis_task = Task(
  29. description="分析过去 {timeframe} 内 {sector} 行业的数据",
  30. expected_output="包含置信度评分的详细市场分析",
  31. agent=analyst
  32. )
  33. research_task = Task(
  34. description="寻找支持数据以验证该分析",
  35. expected_output="佐证证据及潜在矛盾点",
  36. agent=researcher
  37. )
  38. # 展示 crew 的自主性
  39. analysis_crew = Crew(
  40. agents=[analyst, researcher],
  41. tasks=[analysis_task, research_task],
  42. process=Process.sequential,
  43. verbose=True
  44. )
  45. return analysis_crew.kickoff(inputs=market_data) # 将 market_data 作为具名输入传入
  46. @router(analyze_with_crew)
  47. def determine_next_steps(self):
  48. # 通过条件路由展示 flow 控制
  49. if self.state.confidence > 0.8:
  50. return "high_confidence"
  51. elif self.state.confidence > 0.5:
  52. return "medium_confidence"
  53. return "low_confidence"
  54. @listen("high_confidence")
  55. def execute_strategy(self):
  56. # 展示复杂决策能力
  57. strategy_crew = Crew(
  58. agents=[
  59. Agent(role="策略专家",
  60. goal="基于分析制定最优市场策略")
  61. ],
  62. tasks=[
  63. Task(description="基于分析制定详细策略",
  64. expected_output="逐步行动计划")
  65. ]
  66. )
  67. return strategy_crew.kickoff()
  68. @listen(or_("medium_confidence", "low_confidence"))
  69. def request_additional_analysis(self):
  70. self.state.recommendations.append("收集更多数据")
  71. return "需要额外分析"

这个示例展示了如何:

  1. 使用 Python 代码执行基础数据操作
  2. 在工作流步骤中创建并执行 Crews
  3. 使用 Flow 装饰器管理操作顺序
  4. 基于 Crew 结果实现条件分支

将你的 Crew 连接到模型

CrewAI 支持通过多种连接方式使用各种 LLM。默认情况下,你的智能体在查询模型时会使用 OpenAI API。不过,还有多种其他方式可以让你的智能体连接到模型。例如,你可以配置智能体通过 Ollama 工具使用本地模型。

有关如何配置智能体与模型连接的详细信息,请参阅 Connect CrewAI to LLMs 页面。

CrewAI 对比其他方案

CrewAI 的优势:CrewAI 通过独特的 Crews 与 Flows 架构,将自主智能体智能与精确工作流控制结合起来。该框架同时擅长高层编排和底层定制,能够以细粒度控制构建复杂的生产级系统。

  • LangGraph:虽然 LangGraph 为构建智能体工作流提供了基础,但其方法需要大量样板代码和复杂的状态管理模式。该框架与 LangChain 的紧耦合也会在实现自定义智能体行为或集成外部系统时限制灵活性。

P.S. CrewAI 在某些场景下相较 LangGraph 展现出显著的性能优势,例如在此 QA 任务示例中执行速度快 5.76 倍(查看对比);在某些编码任务中,也能以更快的完成时间获得更高的评估分数(详细分析)。

  • Autogen:虽然 Autogen 擅长创建能够协同工作的对话式智能体,但它缺乏内在的流程概念。在 Autogen 中,编排智能体交互需要额外编程,而随着任务规模增长,这会变得复杂且笨重。
  • ChatDev:ChatDev 将流程的概念引入了 AI 智能体领域,但其实现方式较为僵化。ChatDev 的定制能力有限,也并非面向生产环境设计,这可能会阻碍真实应用中的可扩展性与灵活性。

贡献

CrewAI 是开源项目,我们欢迎贡献。如果你希望参与贡献,请:

  • Fork 该仓库。
  • 为你的功能创建新分支。
  • 添加你的功能或改进。
  • 发起 pull request。
  • 我们非常感谢你的参与!

安装依赖

  1. uv lock
  2. uv sync

虚拟环境

  1. uv venv

Pre-commit hooks

  1. pre-commit install

运行测试

  1. uv run pytest .

运行静态类型检查

  1. uvx mypy src

打包

  1. uv build

本地安装

  1. uv pip install dist/*.tar.gz

遥测

CrewAI 使用匿名遥测收集使用数据,其主要目的是帮助我们聚焦于最常用的功能、集成和工具,从而持续改进该库。

需要特别说明的是,不会收集任何与提示词、任务描述、智能体背景故事或目标、工具使用、API 调用、响应、智能体处理的任何数据,或密钥与环境变量有关的数据,除非符合下述特定条件。当启用 share_crew 功能时,会收集包括任务描述、智能体背景故事或目标以及其他特定属性在内的详细数据,以在尊重用户隐私的前提下提供更深入的洞察。用户可以通过将环境变量 OTEL_SDK_DISABLED 设置为 true 来禁用遥测。

收集的数据包括:

  • CrewAI 的版本

    • 以便了解有多少用户在使用最新版本
  • Python 的版本

    • 以便决定重点支持哪些版本
  • 通用操作系统信息(例如 CPU 数量、macOS/Windows/Linux)

    • 以便了解我们应重点关注哪些操作系统,以及是否可以构建特定于操作系统的功能
  • 一个 crew 中的智能体数量和任务数量

    • 以便确保我们的内部测试覆盖类似场景,并帮助用户了解最佳实践
  • 所使用的 Crew 流程类型

    • 帮助我们判断应重点投入哪些方向
  • 智能体是否使用记忆功能或允许委派

    • 帮助我们了解这些功能是否有所改进,甚至是否应当被移除
  • 任务是并行执行还是顺序执行

    • 帮助我们判断是否应进一步聚焦并行执行
  • 所使用的语言模型

    • 改进对最常用模型的支持
  • 一个 crew 中智能体的角色

    • 帮助我们理解高层次使用场景,从而构建更好的工具、集成和示例
  • 可用工具名称

    • 帮助我们了解公开可用工具中哪些使用最频繁,以便持续优化

用户还可以选择启用更深入的遥测,通过在其 Crew 上将 share_crew 属性设置为 True 来共享完整遥测数据。启用 share_crew 后,会收集详细的 crew 和任务执行数据,包括任务的 goalbackstorycontextoutput。这能够在尊重用户选择是否共享的前提下,提供更深入的使用模式洞察。

许可证

CrewAI 基于 MIT License 发布。

常见问题(FAQ)

一般问题

功能与能力

资源与社区

企业特性

问:CrewAI 到底是什么?

答:CrewAI 是一个独立、轻量且快速的 Python 框架,专门用于编排自主 AI 智能体。与 LangChain 这类框架不同,CrewAI 不依赖外部框架,因此更轻、更快、更简单。

问:如何安装 CrewAI?

答:使用 pip 安装 CrewAI:

  1. uv pip install crewai

如果需要额外工具,请使用:

  1. uv pip install 'crewai[tools]'

问:CrewAI 依赖 LangChain 吗?

答:不依赖。CrewAI 完全从零构建,不依赖 LangChain 或其他智能体框架。这确保了它具备轻量、快速和灵活的使用体验。

问:CrewAI 能处理复杂用例吗?

答:可以。CrewAI 无论面对简单任务还是高度复杂的真实世界场景都表现出色,并在高层和底层都提供深度定制能力,从内部提示到底层复杂工作流编排都可以灵活处理。

问:我可以将 CrewAI 与本地 AI 模型一起使用吗?

答:当然可以!CrewAI 支持多种语言模型,包括本地模型。像 Ollama 和 LM Studio 这样的工具都可以无缝集成。详情请查看 LLM Connections 文档

问:Crews 和 Flows 有什么区别?

答:Crews 提供自主智能体协作,非常适合需要灵活决策和动态交互的任务。Flows 提供精确、事件驱动的控制,非常适合管理详细的执行路径和安全的状态管理。你可以无缝结合二者,以获得最佳效果。

问:CrewAI 比 LangChain 好在哪里?

答:CrewAI 提供更简单、更直观的 API、更快的执行速度、更可靠且一致的结果、完善的文档以及活跃的社区——解决了 LangChain 常见的批评点和局限性。

问:CrewAI 是开源的吗?

答:是的,CrewAI 是开源的,并积极鼓励社区贡献与协作。

问:CrewAI 会收集用户数据吗?

答:CrewAI 仅出于改进目的收集匿名遥测数据。除非用户明确启用,否则不会收集提示词、任务内容或 API 响应等敏感数据。

问:我可以在哪里找到真实世界的 CrewAI 示例?

答:你可以在 CrewAI-examples 仓库 中查看实用示例,其中涵盖旅行规划、股票分析、职位发布等应用场景。

问:我该如何为 CrewAI 做贡献?

答:非常欢迎贡献!Fork 仓库、创建分支、实现你的改动并提交 pull request。详细指南请参阅 README 中的 Contribution 部分。

问:CrewAI AMP 提供了哪些额外功能?

答:CrewAI AMP 提供统一控制平面、实时可观测性、安全集成、高级安全性、可执行洞察以及专属 7×24 小时企业支持等高级功能。

问:CrewAI AMP 是否支持云部署和本地部署?

答:是的,CrewAI AMP 同时支持云端部署和本地部署,帮助企业满足特定的安全与合规要求。

问:我可以免费试用 CrewAI AMP 吗?

答:可以,你可以免费访问 Crew Control Plane,体验 CrewAI AMP 套件中的部分功能。

问:CrewAI 支持微调或训练自定义模型吗?

答:是的,CrewAI 可以与经过自定义训练或微调的模型集成,从而让你的智能体具备领域知识并提升准确性。

问:CrewAI 智能体可以与外部工具和 API 交互吗?

答:当然可以!CrewAI 智能体可以轻松集成外部工具、API 和数据库,从而利用真实世界的数据和资源。

问:CrewAI 适合生产环境吗?

答:是的,CrewAI 明确按照生产级标准设计,能够为企业部署提供可靠性、稳定性和可扩展性。

问:CrewAI 的可扩展性如何?

答:CrewAI 具备很高的可扩展性,既支持简单自动化,也支持涉及大量智能体和复杂任务的大规模企业工作流。

问:CrewAI 提供调试和监控工具吗?

答:是的,CrewAI AMP 包含高级调试、链路追踪和实时可观测性功能,可显著简化自动化的管理与问题排查。

问:CrewAI 支持哪些编程语言?

答:CrewAI 主要基于 Python,但凭借其灵活的 API 集成能力,也可以轻松与使用任何编程语言编写的服务和 API 集成。

问:CrewAI 为初学者提供学习资源吗?

答:是的,CrewAI 通过 learn.crewai.com 提供丰富、适合初学者的教程、课程和文档,支持各个技能水平的开发者学习。

问:CrewAI 可以自动化 human-in-the-loop 工作流吗?

答:可以,CrewAI 完全支持 human-in-the-loop 工作流,能够让人类专家与 AI 智能体无缝协作,从而增强决策能力。