Files
wehub-resource-sync 49405815d9
CodeQL Advanced / Analyze (actions) (push) Waiting to run
Vulnerability Scan / pip-audit (push) Waiting to run
CodeQL Advanced / Analyze (python) (push) Waiting to run
docs: make Chinese README the default
2026-07-13 10:13:07 +00:00

32 KiB
Raw Permalink Blame History

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。

开源多 AI 智能体编排框架

crewAIInc%2FcrewAI | Trendshift

首页 · 开源 · 文档 · 开始云端试用 · 博客 · 论坛

GitHub 仓库 Star 数 GitHub Fork 数 GitHub Issues GitHub Pull Requests 许可证:MIT

PyPI 版本 PyPI 下载量 Twitter 关注

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

CrewAI 是一个开源 Python 框架,提供高层抽象与底层 API,用于构建可用于生产环境的多智能体工作流。 它通过 Crews 为开发者提供自主的智能体协作能力,并通过 Flows 实现精确的事件驱动控制。

  • CrewAI Crews:通过基于角色的 AI 智能体,优化自主性与协作智能。
  • CrewAI Flows:构建事件驱动自动化,结合精确的工作流控制、单次 LLM 调用,以及对 Crews 的原生支持。

已有超过 100,000 名开发者通过我们在 learn.crewai.com, 的社区课程获得认证,CrewAI 正迅速成为可用于生产环境的智能体自动化的标准。

CrewAI AMP Suite

对于需要在 CrewAI 周围配备商业控制平面的组织,CrewAI AMP Suite 提供托管部署、可观测性、治理、安全与企业级支持。

你可以免费试用该套件的一部分:Crew Control Plane, for free.

Crew Control Plane 核心功能:

  • 追踪与可观测性(Tracing & Observability:实时监控并追踪你的 AI 智能体与工作流,包括指标、日志与追踪数据。
  • 统一控制平面(Unified Control Plane:集中式平台,用于管理、监控和扩展你的 AI 智能体与工作流。
  • 无缝集成(Seamless Integrations:轻松连接现有企业系统、数据源与云基础设施。
  • 高级安全(Advanced Security:内置强大的安全与合规措施,确保安全部署与管理。
  • 可操作的洞察(Actionable Insights:实时分析与报告,用于优化性能与决策。
  • 7×24 支持(24/7 Support:专属企业级支持,确保不间断运行并快速解决问题。
  • 本地与云端部署选项(On-premise and Cloud Deployment Options:根据你的安全与合规要求,在本地或云端部署 CrewAI AMP。

CrewAI AMP 面向寻求强大、可靠解决方案的企业,旨在将复杂的业务流程转化为高效、智能的自动化。

目录

用 AI 构建

正在使用 AI 编程智能体?一条命令即可教会它 CrewAI 最佳实践:

Claude Code

/plugin marketplace add crewAIInc/skills
/plugin install crewai-skills@crewai-plugins
/reload-plugins

四个技能会在你提出相关 CrewAI 问题时自动激活:

技能 触发场景
getting-started 搭建新项目,在 LLM.call() / Agent / Crew / Flow 之间做选择,配置 crew.py / main.py
design-agent 配置智能体——角色、目标、背景故事、工具、LLM、记忆、护栏(guardrails
design-task 编写任务描述、依赖关系、结构化输出(output_pydanticoutput_json)及人工审核
ask-docs 查询实时 CrewAI 文档 MCP 服务器 以获取最新 API 详情

Cursor、Codex、Windsurf 及其他工具(skills.sh):

npx skills add crewaiinc/skills

这将安装官方的 CrewAI Skills ——结构化指令,用于教会编程智能体如何搭建 Flows、配置 Crews、设计智能体与任务,并遵循 CrewAI 模式。

为什么选择 CrewAI

CrewAI Logo

CrewAI 释放多智能体自动化的真正潜力,通过 AI 智能体 Crews 与事件驱动 Flows 提供速度、灵活性与控制力:

  • 专用架构(Purpose-built architecture:专为智能体编排而设计,拥有轻量级 Python 核心与简洁原语,适用于真实世界的自动化场景。
  • 高性能(High Performance:针对速度与最小资源占用进行优化,实现更快执行。
  • 灵活的底层定制(Flexible Low-Level Customization:完全自由定制,从工作流与系统架构到智能体行为、内部提示词与执行逻辑。
  • 适用于各类场景(Ideal for Every Use Case:经实践证明,对简单任务、复杂工作流与生产级自动化均有效。
  • 活跃的社区(Robust Community:由快速增长的社区支持,已有超过 100,000 名认证开发者,提供全面的支持与资源。

CrewAI 赋能开发者与团队,构建在简洁性、灵活性与生产级控制之间取得平衡的智能自动化。

入门指南

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

CrewAI 入门教程

学习资源

通过我们的综合课程学习 CrewAI

理解 Flows 与 Crews

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

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

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

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

CrewAI 的真正威力在于将 Crews 与 Flows 结合使用。这种协同使你可以:

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

安装入门

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

1. 安装

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

首先,安装 CrewAI

uv pip install crewai

如果你想安装带有可选功能的 'crewai' 包(包含供智能体使用的额外工具),可使用以下命令:

uv pip install 'crewai[tools]'

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

依赖问题排查

如果在安装或使用过程中遇到问题,可参考以下常见解决方案:

常见问题

  1. ModuleNotFoundError: No module named 'tiktoken'

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

    • 确保已安装 Rust 编译器(见上文安装步骤)
    • Windows:确认已安装 Visual C++ Build Tools
    • 尝试升级 pipuv pip install --upgrade pip
    • 若问题仍然存在,使用预编译 wheel:uv pip install tiktoken --prefer-binary

2. 使用 YAML 配置搭建 Crew

要创建新的 CrewAI 项目,请运行以下 CLICommand Line Interface,命令行界面)命令:

crewai create crew <project_name>

该命令会创建一个新项目文件夹,结构如下:

my_project/
├── .gitignore
├── pyproject.toml
├── README.md
├── .env
└── src/
    └── my_project/
        ├── __init__.py
        ├── main.py
        ├── crew.py
        ├── tools/
        │   ├── custom_tool.py
        │   └── __init__.py
        └── config/
            ├── agents.yaml
            └── tasks.yaml

现在可通过编辑 src/my_project 文件夹中的文件开始开发 crew。main.py 文件是项目入口,crew.py 文件用于定义 crewagents.yaml 文件用于定义 agentstasks.yaml 文件用于定义 tasks。

定制项目时,你可以:

  • 修改 src/my_project/config/agents.yaml 以定义 agents。
  • 修改 src/my_project/config/tasks.yaml 以定义 tasks。
  • 修改 src/my_project/crew.py 以添加自定义逻辑、工具和特定参数。
  • 修改 src/my_project/main.py 为 agents 和 tasks 添加自定义输入。
  • 将环境变量添加到 .env 文件中。

顺序流程的简单 crew 示例:

实例化你的 crew

crewai create crew latest-ai-development

按需修改文件以适配你的用例:

agents.yaml

# src/my_project/config/agents.yaml
researcher:
  role: >
    {topic} Senior Data Researcher
  goal: >
    Uncover cutting-edge developments in {topic}
  backstory: >
    You're a seasoned researcher with a knack for uncovering the latest
    developments in {topic}. Known for your ability to find the most relevant
    information and present it in a clear and concise manner.

reporting_analyst:
  role: >
    {topic} Reporting Analyst
  goal: >
    Create detailed reports based on {topic} data analysis and research findings
  backstory: >
    You're a meticulous analyst with a keen eye for detail. You're known for
    your ability to turn complex data into clear and concise reports, making
    it easy for others to understand and act on the information you provide.

tasks.yaml

# src/my_project/config/tasks.yaml
research_task:
  description: >
    Conduct a thorough research about {topic}
    Make sure you find any interesting and relevant information given
    the current year is 2025.
  expected_output: >
    A list with 10 bullet points of the most relevant information about {topic}
  agent: researcher

reporting_task:
  description: >
    Review the context you got and expand each topic into a full section for a report.
    Make sure the report is detailed and contains any and all relevant information.
  expected_output: >
    A fully fledge reports with the mains topics, each with a full section of information.
    Formatted as markdown without '```'
  agent: reporting_analyst
  output_file: report.md

crew.py

# src/my_project/crew.py
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai_tools import SerperDevTool
from crewai.agents.agent_builder.base_agent import BaseAgent
from typing import List

@CrewBase
class LatestAiDevelopmentCrew():
	"""LatestAiDevelopment crew"""
	agents: List[BaseAgent]
	tasks: List[Task]

	@agent
	def researcher(self) -> Agent:
		return Agent(
			config=self.agents_config['researcher'],
			verbose=True,
			tools=[SerperDevTool()]
		)

	@agent
	def reporting_analyst(self) -> Agent:
		return Agent(
			config=self.agents_config['reporting_analyst'],
			verbose=True
		)

	@task
	def research_task(self) -> Task:
		return Task(
			config=self.tasks_config['research_task'],
		)

	@task
	def reporting_task(self) -> Task:
		return Task(
			config=self.tasks_config['reporting_task'],
			output_file='report.md'
		)

	@crew
	def crew(self) -> Crew:
		"""Creates the LatestAiDevelopment crew"""
		return Crew(
			agents=self.agents, # Automatically created by the @agent decorator
			tasks=self.tasks, # Automatically created by the @task decorator
			process=Process.sequential,
			verbose=True,
		)

main.py

#!/usr/bin/env python
# src/my_project/main.py
import sys
from latest_ai_development.crew import LatestAiDevelopmentCrew

def run():
    """
    Run the crew.
    """
    inputs = {
        'topic': 'AI Agents'
    }
    LatestAiDevelopmentCrew().crew().kickoff(inputs=inputs)

3. 运行 Crew

运行 crew 之前,请确保在 .env 文件中设置以下环境变量:

使用 CLI 命令锁定依赖并安装,但请先进入项目目录:

cd my_project
crewai install (Optional)

在项目根目录执行以下命令以运行 crew:

crewai run

python src/my_project/main.py

若因使用 poetry 而出现错误,请运行以下命令更新 crewai 包:

crewai update

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

除顺序流程(sequential process)外,你还可以使用层级流程(hierarchical process),它会自动为已定义的 crew 指派一名 manager,通过任务委派和结果校验来协调任务的规划与执行。在此了解更多流程相关信息.

核心特性

CrewAI 为开发者提供了实用的基础,用于构建能从原型走向生产的智能体(agentic)系统:在有帮助的地方实现自主协作,在关键之处进行显式工作流控制,并全程支持 Python 原生定制。

  • Crews 实现自主性:组建由角色、目标、工具和任务定义的专项 AI 智能体团队。
  • Flows 实现可控性:构建具备状态、分支、路由和生产级逻辑的事件驱动工作流。
  • 无缝集成:组合 Crews 与 Flows,打造复杂的真实场景自动化。
  • Python 原生定制:自定义提示词、工具、执行路径、状态和集成,无需与框架对抗。
  • 面向智能体的能力:使用工具、记忆、知识、检查点(checkpointing)、异步执行以及 MCP/A2A 支持,打造更强大的生产级智能体。
  • 生产就绪模式:随系统成长添加确定性步骤、人工输入、结构化输出和检查点。
  • 活跃的社区:拥有完善的文档和超过 100,000 名认证开发者的支持,提供出色的指导与帮助。

选择 CrewAI,构建强大、灵活且生产就绪的 AI 自动化。

示例

你可以在 CrewAI-examples 仓库: 中测试各类真实场景的 AI crew 示例:

快速教程

CrewAI 教程

编写职位描述

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

职位发布

行程规划

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

行程规划器

股票分析

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

股票分析

结合使用 Crews 与 Flows

当 Crews 与 Flows 结合使用时,CrewAI 的真正威力得以展现,可打造复杂的自动化流水线。 CrewAI flows 支持 or_and_ 等逻辑运算符来组合多个条件。可与 @start@listen@router 装饰器配合使用,创建复杂的触发条件。

  • or_:当满足任意指定条件时触发。
  • and_当满足全部指定条件时触发。

以下展示如何在 Flow 中编排多个 Crew:

from crewai.flow.flow import Flow, listen, start, router, or_
from crewai import Crew, Agent, Task, Process
from pydantic import BaseModel

# Define structured state for precise control
class MarketState(BaseModel):
    sentiment: str = "neutral"
    confidence: float = 0.0
    recommendations: list = []

class AdvancedAnalysisFlow(Flow[MarketState]):
    @start()
    def fetch_market_data(self):
        # Demonstrate low-level control with structured state
        self.state.sentiment = "analyzing"
        return {"sector": "tech", "timeframe": "1W"}  # These parameters match the task description template

    @listen(fetch_market_data)
    def analyze_with_crew(self, market_data):
        # Show crew agency through specialized roles
        analyst = Agent(
            role="Senior Market Analyst",
            goal="Conduct deep market analysis with expert insight",
            backstory="You're a veteran analyst known for identifying subtle market patterns"
        )
        researcher = Agent(
            role="Data Researcher",
            goal="Gather and validate supporting market data",
            backstory="You excel at finding and correlating multiple data sources"
        )

        analysis_task = Task(
            description="Analyze {sector} sector data for the past {timeframe}",
            expected_output="Detailed market analysis with confidence score",
            agent=analyst
        )
        research_task = Task(
            description="Find supporting data to validate the analysis",
            expected_output="Corroborating evidence and potential contradictions",
            agent=researcher
        )

        # Demonstrate crew autonomy
        analysis_crew = Crew(
            agents=[analyst, researcher],
            tasks=[analysis_task, research_task],
            process=Process.sequential,
            verbose=True
        )
        return analysis_crew.kickoff(inputs=market_data)  # Pass market_data as named inputs

    @router(analyze_with_crew)
    def determine_next_steps(self):
        # Show flow control with conditional routing
        if self.state.confidence > 0.8:
            return "high_confidence"
        elif self.state.confidence > 0.5:
            return "medium_confidence"
        return "low_confidence"

    @listen("high_confidence")
    def execute_strategy(self):
        # Demonstrate complex decision making
        strategy_crew = Crew(
            agents=[
                Agent(role="Strategy Expert",
                      goal="Develop optimal market strategy")
            ],
            tasks=[
                Task(description="Create detailed strategy based on analysis",
                     expected_output="Step-by-step action plan")
            ]
        )
        return strategy_crew.kickoff()

    @listen(or_("medium_confidence", "low_confidence"))
    def request_additional_analysis(self):
        self.state.recommendations.append("Gather more data")
        return "Additional analysis required"

此示例演示了如何:

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

将 Crew 连接到模型

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

有关配置智能体与模型连接的详情,请参阅 将 CrewAI 连接到 LLM 页面。

何时使用 CrewAI

当你需要的不仅是单次提示或聊天机器人,而是多步骤工作、专项智能体、工具调用、结构化输出、人工审核,或需要将有明确业务逻辑的工作流与自主推理相结合时,请使用 CrewAI。

CrewAI 在以下场景中尤其有用:

  • 协调多个具有明确角色与任务的智能体。
  • 将智能体工作封装在确定性、事件驱动的工作流中。
  • 用常规 Python 保留应用逻辑。
  • 在不更换框架的情况下从实验走向生产。
  • 随系统成长逐步添加工具、记忆、检查点和异步执行。

贡献

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

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

贡献文档

docs.crewai.com 站点由 docs/ 发布,托管于 Mintlify. 文档采用基于目录的版本管理:对 docs/edge/<lang>/... 的编辑(例如 docs/edge/en/concepts/agents.mdx)会立即出现在 Edge 版本选择器下,并在下一次发布切分时冻结为 docs/v<X.Y.Z>/ 下的新版本快照。已冻结的快照不可变——CI 会拒绝在未使用 [docs-freeze] 标题前缀的情况下修改它们的 PR。发布 CLI(devtools release)会自动处理冻结;完整贡献指南见 AGENTS.md,发布切分操作手册见 RELEASING.md

安装依赖

uv lock
uv sync

虚拟环境

uv venv

Pre-commit 钩子

pre-commit install

运行测试

uv run pytest .

运行静态类型检查

uvx mypy src

打包

uv build

本地安装

uv pip install dist/*.tar.gz

遥测(Telemetry

CrewAI 使用匿名遥测收集使用数据,主要目的是通过将精力集中在最常用的功能、集成和工具上,帮助我们改进该库。

务必理解:不会收集与提示词(prompts)、任务描述、智能体(agent)背景故事或目标、工具使用情况、API 调用、响应、智能体处理的任何数据,或密钥和环境变量相关的数据,下文提到的例外情况除外。启用 share_crew 功能后,会收集包括任务描述、智能体背景故事或目标以及其他特定属性在内的详细数据,以便在尊重用户隐私的同时提供更深洞察。用户可通过将环境变量 OTEL_SDK_DISABLED 设置为 true 来禁用遥测。

收集的数据包括:

  • CrewAI 版本
    • 以便了解有多少用户在使用最新版本
  • Python 版本
    • 以便决定更好地支持哪些版本
  • 通用操作系统信息(例如 CPU 数量、macOS/Windows/Linux
    • 以便了解应重点支持哪些操作系统,以及是否可以构建特定于操作系统的功能
  • Crew 中智能体和任务的数量
    • 以便确保我们在内部使用类似用例进行测试,并指导用户遵循最佳实践
  • 使用的 Crew Process
    • 了解应将精力集中在何处
  • 智能体是否使用 memory 或允许 delegation
    • 了解我们是否改进了这些功能,或是否应弃用它们
  • 任务是并行还是顺序执行
    • 了解是否应更侧重于并行执行
  • 使用的语言模型
    • 改进对最常用语言的支持
  • Crew 中智能体的角色
    • 了解高层用例,以便构建更好的工具、集成和示例
  • 可用工具名称
    • 了解在公开可用工具中哪些使用最多,以便改进它们

用户可通过在其 Crew 上将 share_crew 属性设置为 True 来选择加入进一步遥测(Further Telemetry),共享完整遥测数据。启用 share_crew 会收集详细的 crew 和任务执行数据,包括任务的 goalbackstorycontextoutput。这能在尊重用户共享选择的同时,更深入地洞察使用模式。

许可证

CrewAI 在 MIT License. 下发布

常见问题(FAQ

通用

功能与能力

资源与社区

企业功能

Q: CrewAI 究竟是什么?

A: CrewAI 是一个轻量、快速的 Python 框架,专为编排自主 AI 智能体和生产就绪的 agentic 工作流而构建。

Q: 如何安装 CrewAI

A: 使用 pip 安装 CrewAI

uv pip install crewai

如需额外工具,请使用:

uv pip install 'crewai[tools]'

Q: CrewAI 是独立框架吗?

A: 是的。CrewAI 是独立的 Python 框架,拥有自己的智能体、任务、crew、flow、工具和编排原语。

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

A: 可以。CrewAI 既擅长简单场景,也擅长高度复杂的真实世界场景,在高层次和低层次都提供深度定制选项,从内部提示词到复杂的工作流编排。

Q: 我可以用本地 AI 模型配合 CrewAI 吗?

A: 当然可以!CrewAI 支持多种语言模型,包括本地模型。Ollama 和 LM Studio 等工具可实现无缝集成。更多详情请参阅 LLM Connections 文档

Q: Crews 与 Flows 有何不同?

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

Q: CrewAI 是开源的吗?

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

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

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

Q: 在哪里可以找到真实的 CrewAI 示例?

A: 请查看 CrewAI-examples 仓库, 中的实用示例,涵盖旅行规划、股票分析和职位发布等用例。

Q: 如何为 CrewAI 做贡献?

A: 热烈欢迎贡献!Fork 仓库、创建分支、实现更改并提交 pull request。详细指南请参阅 README 中的贡献(Contribution)部分。

Q: CrewAI AMP 还提供哪些额外功能?

A: CrewAI AMP 提供统一控制平面、实时可观测性、安全集成、高级安全、可操作的洞察以及全天候企业支持等高级功能。

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

A: 是的,CrewAI AMP 同时支持基于云端的部署和本地(on-premise)部署,使企业能够满足其特定的安全与合规要求。

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

A: 可以,你可以通过访问 Crew Control Plane 免费探索 CrewAI AMP Suite 的部分功能。

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

A:可以,CrewAI 可与自定义训练或微调(fine-tuned)的模型集成,让你用领域专属知识与更高精度来增强智能体(agent)。

Q:CrewAI 智能体能否与外部工具和 API 交互?

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

QCrewAI 是否适用于生产环境?

A:是的,CrewAI 采用面向生产环境的设计模式,支持可靠、稳定且可扩展的智能体工作流。

QCrewAI 的可扩展性如何?

A:CrewAI 具备高度可扩展性,既支持简单自动化,也支持同时涉及大量智能体与复杂任务的大规模工作流。

Q:CrewAI 是否提供调试与监控工具?

A:是的,CrewAI AMP 提供高级调试、追踪(tracing)与实时可观测性(observability)功能,简化自动化的管理与故障排查。

QCrewAI 支持哪些编程语言?

ACrewAI 主要以 Python 为基础,但通过灵活的 API 集成能力,可轻松与任何编程语言编写的服务与 API 对接。

Q:CrewAI 是否为初学者提供学习资源?

A:是的,CrewAI 通过 learn.crewai.com 提供大量面向初学者的教程、课程与文档,支持各技能水平的开发者。

Q:CrewAI 能否自动化人在回路(human-in-the-loop)工作流?

A:可以,CrewAI 全面支持人在回路工作流,让人类专家与 AI 智能体无缝协作,以提升决策质量。