纲要
CrewAI简介与定位:多智能体协作框架的设计哲学与适用场景- 核心概念
Agent:具备角色、目标和背景的智能体单元Task:描述具体工作内容与期望输出的任务Crew:编排多个智能体与任务的团队执行单元Flow:面向复杂业务的多团队流水线编排
- 安装与环境配置
- 使用
pip安装核心库与命令行工具 - 通过脚手架
crewai create crew创建标准化项目 - 项目目录结构解析
- 使用
- 首个多智能体示例:翻译与校对团队
- 定义具有角色分工的
Agent - 配置带上下文传递的
Task - 组建顺序执行的
Crew - 启动执行并获取结构化结果
- 定义具有角色分工的
- API 速览
- Demo 示例
- 参考文档
- 总结
- 润色纠正的前后对比
CrewAI 简介与定位
CrewAI 是一个专注于多智能体协作的开源框架,当前在 GitHub 上已获得数万星标。与 LangChain / LangGraph 等底层编排工具不同,CrewAI 提供了更高层次的抽象,大量采用配置化与约定式设计,显著降低了多智能体系统的开发门槛。
CrewAI 的设计哲学可以概括为“像管理团队一样管理 AI”:开发者定义成员(Agent)、分配工作(Task)、组建团队(Crew),框架自动协调智能体之间的任务分配、工具调用与信息传递。在复杂业务场景下,还可以通过 Flow 将多个团队串联成流水线,支持分支、循环和条件路由等高级编排模式。
对于快速构建原型、自动化业务流程以及希望减少底层编码的团队,CrewAI 提供了一条高效路径。其高度封装的设计使得即便编程经验较少的成员也能参与 AI 应用的开发。
核心概念
在 CrewAI 中,存在四个核心抽象。理解这些概念是掌握框架用法的关键。
- Agent:智能体,是执行任务的最小单元。每个
Agent绑定特定的大语言模型、一组工具以及定义其职责的角色提示词(role、goal、backstory)。 - Task:任务,描述某个
Agent需要完成的具体工作。Task支持结构化输出、异步执行、上下文传递(context)以及预期输出描述(expected_output)。 - Crew:团队,由多个
Agent和Task组成的完整工作单元。Crew负责调度成员、管理记忆、协调工具调用,并支持顺序(sequential)或层级(hierarchical)执行流程。 - Flow:流水线(自
v0.70.0版本起稳定支持),用于将多个Crew或独立任务串联或并联,形成更复杂的业务流。Flow内置状态管理和条件分支能力,其设计目标与LangGraph类似,但更紧密地集成在CrewAI生态中。
以下流程图展示了多团队流水线的典型拓扑结构:
在实际项目中,建议先用单个 Crew 快速验证核心流程;当业务逻辑变长或需要精细化控制(如条件分支、循环重试)时,再引入 Flow 来编排多个 Crew。
安装与环境配置
CrewAI 要求 Python 版本在 3.10 至 3.13 之间。推荐使用 pip 进行安装:
pip install crewai
从 v0.70.0 开始,官方将命令行工具集成在主包中,无需单独安装 crewai-cli。如需使用最新脚手架功能,可直接执行:
crewai create crew my_project
生成的项目目录结构如下:
my_project/
├── src/
│ ├── config/
│ │ ├── agents.yaml # 声明式定义智能体角色、目标、背景
│ │ └── tasks.yaml # 声明式定义任务描述与预期输出
│ ├── crew.py # 将智能体和任务组合成 Crew
│ ├── main.py # 程序执行入口
│ └── tools/ # 自定义工具目录
├── knowledge/ # 知识库文件(RAG 场景)
├── .env # 环境变量(API Key 等)
├── .gitignore
└── pyproject.toml # 项目依赖与元数据
agents.yaml/tasks.yaml:采用声明式配置,降低编码量,便于非开发人员参与调整。crew.py:将声明或代码定义的Agent与Task组合成Crew,并配置执行流程(Process)。main.py:程序入口,负责触发crew.kickoff()。
脚手架方式适合规范化、可维护性要求高的项目。若仅需快速验证想法,直接编写单脚本(如 simple_crew.py)同样可行。下文将采用脚本方式构建第一个示例。
首个多智能体示例:翻译与校对团队
本示例构建一个极简的多智能体系统——一个由两名成员组成的“翻译团队”:
translator:负责将英文翻译成中文。proofreader:负责校对翻译质量,检查漏译、错译与语病。
完整可运行代码
将以下代码保存为 simple_crew.py,并确保已配置大模型 API Key(通过 .env 文件或系统环境变量)。
# simple_crew.py
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
# 加载 .env 中的环境变量(需包含 OPENAI_API_KEY 或兼容接口的 API Key)
load_dotenv()
# 1. 定义智能体
translator = Agent(
role="英文翻译专家",
goal="将用户提供的英文文本准确翻译成中文",
backstory="你是一名资深翻译,精通中英双语,译文流畅自然。",
verbose=True,
allow_delegation=False,
# 若不指定 llm,默认使用环境变量 OPENAI_API_KEY 对应的模型
# 也可显式指定:llm=ChatOpenAI(model="gpt-4o-mini")
)
proofreader = Agent(
role="中文校对员",
goal="检查中文翻译是否准确、通顺,并修正可能存在的错误",
backstory="你是一名资深中文编辑,对语言细节极为敏感,追求完美。",
verbose=True,
allow_delegation=False,
)
# 2. 定义任务
translate_task = Task(
description=(
"请将以下英文段落翻译成中文:\n"
"'Artificial intelligence is transforming every aspect of our lives. "
"From healthcare to transportation, AI-powered systems are making "
"decisions that affect millions of people.'"
),
agent=translator,
expected_output="一段流畅、准确的中文翻译文本",
)
proofread_task = Task(
description="校对翻译任务(上一任务)的输出,确保无漏译、错译和语病。",
agent=proofreader,
expected_output=(
"校对后的最终中文翻译,并附上简短的校对说明(如:'校对通过' 或 '已修正XX处')。"
),
context=[translate_task], # 将翻译任务的输出作为上下文传入
)
# 3. 组建团队(Crew)
crew = Crew(
agents=[translator, proofreader],
tasks=[translate_task, proofread_task],
process=Process.sequential, # 按定义顺序依次执行
verbose=True,
)
# 4. 启动团队工作
result = crew.kickoff()
print("\n===== 最终结果 =====\n")
print(result)
运行说明
- 安装依赖:
pip install crewai python-dotenv - 在项目根目录创建
.env文件,写入:
若使用其他兼容 OpenAI 接口的模型服务(如 Azure OpenAI、本地 vLLM),需额外配置OPENAI_API_KEY=your-api-key-hereOPENAI_API_BASE等参数。 - 执行脚本:
python simple_crew.py - 观察控制台输出,可以看到两个智能体依次工作的详细日志(
verbose=True启用),最终打印校对后的中文翻译。
代码说明
Agent定义:通过role、goal和backstory三个自然语言字段赋予智能体明确的职责与个性,框架自动将其组装为系统提示词。Task定义:description给出具体指令;agent指定执行者;expected_output为输出格式提供参考;context实现任务间数据传递。Crew组装:将智能体列表与任务列表绑定,Process.sequential指示按顺序执行。框架会自动将前一任务的输出注入后续任务的上下文。- 执行入口:
crew.kickoff()启动同步执行,返回CrewOutput对象,其__str__方法返回最终任务的输出文本。
技术点总结
- 多智能体角色分工与协作
- 任务间上下文传递(
context参数) - 顺序执行流程(
Process.sequential) - 基于自然语言描述的低代码智能体定义
- 环境变量管理 API 凭证
API 速览
以下梳理本示例及常见场景中涉及的核心 API(基于 crewai v0.70.0+ 版本)。
Agent 构造器
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
role | str | 是 | 智能体的角色名称,用于提示词模板 |
goal | str | 是 | 智能体的核心目标 |
backstory | str | 否 | 背景故事,丰富角色设定 |
llm | BaseLLM | 否 | 绑定的语言模型实例,默认使用 OPENAI_API_KEY |
tools | List[BaseTool] | 否 | 可调用的工具列表 |
allow_delegation | bool | 否 | 是否允许委派任务给其他智能体,默认 False |
verbose | bool | 否 | 是否输出详细执行日志,默认 False |
示例:
from crewai import Agent
from langchain_openai import ChatOpenAI
agent = Agent(
role="数据分析师",
goal="从给定数据中提取关键趋势",
backstory="你拥有多年的商业分析经验。",
llm=ChatOpenAI(model="gpt-4o-mini"),
verbose=True
)
Task 构造器
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
description | str | 是 | 任务详细描述 |
agent | Agent | 是 | 负责执行该任务的智能体 |
expected_output | str | 是 | 预期输出的描述,用于引导模型生成 |
context | List[Task] | 否 | 依赖的前置任务列表,其输出将作为上下文注入 |
tools | List[BaseTool] | 否 | 任务级别绑定的工具,覆盖智能体默认工具 |
示例:
task1 = Task(
description="提取 PDF 文件中的财务数据",
agent=analyst_agent,
expected_output="结构化 JSON 格式的财务摘要",
)
task2 = Task(
description="根据财务数据生成投资建议",
agent=advisor_agent,
expected_output="一份包含买入/持有/卖出建议的报告",
context=[task1],
)
Crew 构造器
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
agents | List[Agent] | 是 | 团队包含的智能体列表 |
tasks | List[Task] | 是 | 团队需要执行的任务列表 |
process | Process | 否 | 执行流程,Process.sequential 或 Process.hierarchical,默认 sequential |
verbose | bool | 否 | 是否输出团队执行日志 |
manager_llm | BaseLLM | 否 | 层级模式下管理者的语言模型 |
示例:
from crewai import Crew, Process
crew = Crew(
agents=[agent_a, agent_b],
tasks=[task_a, task_b],
process=Process.sequential,
verbose=True,
)
result = crew.kickoff()
Flow 基础用法(进阶)
Flow 用于编排多个 Crew 或函数,支持状态共享与条件路由。以下是一个最小示例:
from crewai.flow.flow import Flow, start, listen
class MyFlow(Flow):
@start()
def fetch_data(self):
return {"raw": "some data"}
@listen(fetch_data)
def process_data(self, data):
print(f"Processing: {data['raw']}")
return "processed"
flow = MyFlow()
flow.kickoff()
Demo 示例
本节提供一个可直接运行的完整 Demo,演示一个具备“信息检索 → 内容撰写 → 合规审查”三个角色的多智能体团队,模拟内部内容生产流程。
目录结构
demo_crew/
├── .env
├── demo.py
└── requirements.txt
依赖文件
# requirements.txt
crewai>=0.70.0
python-dotenv>=1.0.0
完整代码
# demo.py
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
load_dotenv()
# 1. 定义三个专业智能体
researcher = Agent(
role="资深技术研究员",
goal="针对用户指定的技术主题,搜集并整理关键信息与最新动态",
backstory="你曾在多家科技媒体担任技术主编,擅长从海量信息中提炼核心要点。",
verbose=True,
)
writer = Agent(
role="技术内容撰写专家",
goal="根据研究员提供的信息,撰写清晰、有深度的技术博客文章",
backstory="你是资深技术作者,文笔流畅,擅长将复杂概念转化为易懂的叙述。",
verbose=True,
)
reviewer = Agent(
role="内容合规审查员",
goal="审核文章内容,确保技术准确性与合规性,杜绝错误与风险表述",
backstory="你拥有法律与技术的双重背景,对信息准确性极为敏感。",
verbose=True,
)
# 2. 定义任务链
research_task = Task(
description=(
"针对 '大型语言模型在医疗领域的应用现状' 这一主题,进行信息搜集。"
"重点关注:已落地的应用场景、关键挑战、主流模型与效果评估。"
),
agent=researcher,
expected_output="一份结构化的信息摘要,包含 3-5 个要点,每个要点附简要说明。",
)
writing_task = Task(
description="基于研究员提供的摘要,撰写一篇约 500 字的技术博客文章,标题自拟。",
agent=writer,
expected_output="完整的技术博客 Markdown 格式文章,包含引言、正文段落和结语。",
context=[research_task],
)
review_task = Task(
description="对撰写完成的文章进行技术准确性与合规性审查,指出潜在问题并给出修正建议。",
agent=reviewer,
expected_output="一份审查报告,包含:通过/不通过结论,以及具体修改建议列表。",
context=[writing_task],
)
# 3. 组建团队
content_crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, writing_task, review_task],
process=Process.sequential,
verbose=True,
)
# 4. 执行
if __name__ == "__main__":
print("===== 启动内容生产团队 =====")
result = content_crew.kickoff()
print("\n===== 最终审查报告 =====\n")
print(result)
运行说明
- 创建虚拟环境并安装依赖:
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt - 在
.env中配置OPENAI_API_KEY。 - 运行:
python demo.py
技术点总结
- 多角色协作:研究员、撰写者、审查者各司其职,形成完整内容生产流水线。
- 上下文链式传递:
research_task→writing_task→review_task,输出自动流转。 - 顺序执行流程:
Process.sequential保证任务严格按序完成。 - 低代码定义:全部使用自然语言配置,无需编写复杂的提示词模板或解析逻辑。
参考文档
官方文档
- CrewAI 官方文档:完整的 API 参考、指南与示例库。
- CrewAI GitHub 仓库:源码、版本发布与社区贡献指南。
参考链接
- LangChain 官方文档:
CrewAI的底层 LLM 抽象依赖LangChain,其文档有助于理解模型接口与工具系统。 - OpenAI API 文档:配置大模型时的 API 参数参考。
总结
本文系统性地介绍了 CrewAI 框架的设计理念、核心概念与实操方法。CrewAI 通过高度封装的 Agent、Task、Crew 和 Flow 抽象,将多智能体系统的开发范式从“编码控制流”转向“声明式角色配置”,显著降低了开发门槛。
借助其顺序与层级执行流程、任务上下文传递机制以及可选的声明式 YAML 配置,开发者可以在数分钟内构建起具备分工协作能力的智能体团队。
在实际落地中,CrewAI 适用于自动化内容生产、智能客服路由、多步骤数据分析、报告生成等典型业务流程。当业务复杂度进一步上升时,可引入 Flow 实现多团队流水线编排,兼顾灵活性与可维护性。
411



被折叠的 条评论
为什么被折叠?



