多Agent协作实战:让AI们分工合作完成任务
摘要: 本文深入探讨多Agent协作的核心概念,通过CrewAI框架实战搭建一个多Agent内容创作团队,并总结项目落地中的最佳实践与常见问题排查方法。无论你是AI初学者还是资深开发者,都能从中获得可落地的协作思路与代码示例。
关键词: 多Agent协作;CrewAI;AI Agent;LangGraph;Python
1. 引言
随着大语言模型能力的不断提升,单一Agent已经能够完成许多复杂的任务。然而,当面对需要多领域知识、多步骤协同的复杂场景时,单个Agent往往力不从心。多Agent协作(Multi-Agent Collaboration)应运而生——它让多个AI Agent像人类团队一样分工合作,各司其职,共同完成一个复杂目标。
本文将带你从零开始,理解多Agent协作的核心概念,并通过一个实战项目,亲手搭建一个多Agent协作系统。
2. 什么是多Agent协作
多Agent协作是指多个独立的AI Agent通过通信、协调和分工,共同完成一个复杂任务的过程。每个Agent拥有独立的角色定义、知识库和工具集,它们可以:
- 分工:不同Agent负责不同子任务
- 协作:Agent之间传递中间结果
- 仲裁:由协调Agent汇总并决策最终输出
2.1 核心角色
一个典型的多Agent系统通常包含以下角色:
| 角色 | 职责 | 示例 |
|---|---|---|
| 协调者(Coordinator) | 拆解任务、分配子任务、汇总结果 | 项目经理 |
| 专家Agent | 执行特定领域的子任务 | 代码编写、文案撰写 |
| 审核者(Reviewer) | 检查输出质量、提出修改建议 | 代码审查、内容校对 |
| 记忆模块 | 存储对话历史与中间状态 | 共享上下文 |
2.2 适用场景
- 复杂报告生成:调研Agent收集资料 → 分析Agent整理数据 → 写作Agent撰写报告 → 审核Agent润色
- 软件开发:需求分析Agent → 架构设计Agent → 编码Agent → 测试Agent
- 客服系统:意图识别Agent → 知识库检索Agent → 回复生成Agent → 情感分析Agent
3. 技术选型与框架对比
目前主流的Python多Agent框架包括:
| 框架 | 特点 | 适用场景 |
|---|---|---|
| LangGraph | 基于图的状态机,灵活可控 | 复杂工作流编排 |
| CrewAI | 角色化设计,开箱即用 | 快速原型开发 |
| AutoGen | 微软出品,支持多轮对话 | 研究实验 |
| MetaGPT | 模拟软件公司角色 | 软件开发全流程 |
本文以 CrewAI 为例,因为它角色定义清晰、上手简单,非常适合入门实战。
4. 实战:搭建一个多Agent内容创作团队
我们将搭建一个由三个Agent组成的「内容创作团队」,完成一篇技术博客的撰写。
4.1 安装依赖
pip install crewai crewai-tools
4.2 定义Agent角色
from crewai import Agent
# 1. 调研Agent:负责收集资料
researcher = Agent(
role="技术调研员",
goal="收集并整理最新的技术资料和最佳实践",
backstory="你是一名资深技术研究员,擅长从文档、论文和社区中提取关键信息。",
verbose=True,
allow_delegation=False
)
# 2. 写作Agent:负责撰写内容
writer = Agent(
role="技术写手",
goal="将调研结果转化为清晰易懂的技术文章",
backstory="你是一名技术博客作者,擅长用生动的语言解释复杂概念。",
verbose=True,
allow_delegation=False
)
# 3. 审核Agent:负责质量把控
reviewer = Agent(
role="内容审核员",
goal="检查文章的技术准确性、可读性和格式规范",
backstory="你是一名严谨的技术编辑,对细节要求极高。",
verbose=True,
allow_delegation=False
)
4.3 定义任务
from crewai import Task
# 调研任务
research_task = Task(
description="调研多Agent协作框架的最新发展,重点了解CrewAI和LangGraph的对比。",
expected_output="一份包含框架对比表、核心概念和最佳实践的调研报告。",
agent=researcher
)
# 写作任务
write_task = Task(
description="基于调研报告,撰写一篇面向初学者的多Agent协作实战教程。",
expected_output="一篇结构完整、语言生动的技术博客,包含引言、概念、实战和总结。",
agent=writer
)
# 审核任务
review_task = Task(
description="审核文章的技术准确性、逻辑连贯性和格式规范性。",
expected_output="审核意见列表,包含需要修改的问题和建议。",
agent=reviewer
)
4.4 组建团队并执行
from crewai import Crew
# 创建团队
content_crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, write_task, review_task],
verbose=True
)
# 启动协作
result = content_crew.kickoff()
print(result)
4.5 运行结果
执行上述代码后,三个Agent会按顺序工作:
- 调研Agent先收集资料,输出调研报告
- 写作Agent拿到报告后撰写文章初稿
- 审核Agent检查初稿,给出修改建议
最终输出是一篇经过调研、撰写、审核全流程的完整技术文章。
4.6 效果展示
下面是多Agent协作过程中的模拟终端输出日志,展示了三个Agent依次执行任务时的中间状态:
Agent 1:调研Agent(ResearchAgent)执行日志
[ResearchAgent] 开始执行任务:调研多Agent协作框架
[ResearchAgent] 调用工具:web_search(query="CrewAI vs AutoGen 多Agent框架对比 2025")
[ResearchAgent] 获取到 5 条搜索结果
[ResearchAgent] 提取关键信息:
- CrewAI:轻量级,适合中小规模团队,支持角色定义与任务委派
- AutoGen:微软出品,支持多轮对话与代码执行,适合复杂推理
- LangGraph:LangChain生态,支持有向图流程控制
[ResearchAgent] 生成调研报告(共 3 个要点)...
[ResearchAgent] 任务完成,输出已写入共享上下文 context["research_report"]
日志1:调研Agent正在收集资料并输出调研报告,可以看到它调用了搜索工具并提取了关键信息。
Agent 2:写作Agent(WritingAgent)执行日志
[WritingAgent] 开始执行任务:基于调研报告生成文章初稿
[WritingAgent] 从 context["research_report"] 读取调研结果
[WritingAgent] 拟定文章标题:「多Agent协作实战:用CrewAI搭建内容创作团队」
[WritingAgent] 生成大纲:
1. 引言
2. 什么是多Agent协作
3. 技术选型
4. 实战搭建
5. 进阶技巧
[WritingAgent] 逐段撰写正文...
[WritingAgent] 初稿完成,共 1200 字,已写入 context["draft"]
日志2:写作Agent接收到调研报告后,开始生成文章初稿,日志中展示了标题拟定、段落组织等中间步骤。
Agent 3:审核Agent(ReviewAgent)执行日志
[ReviewAgent] 开始执行任务:审核文章初稿并给出修改建议
[ReviewAgent] 从 context["draft"] 读取初稿
[ReviewAgent] 检查项:
✅ 格式规范:Markdown标题层级正确
✅ 技术准确性:代码示例与描述一致
⚠️ 逻辑连贯性:第3节与第4节之间缺少过渡段落
✅ 代码可运行性:所有代码块均标注了语言
[ReviewAgent] 生成审核报告(共 3 条建议)...
[ReviewAgent] 任务完成,审核结果已写入 context["review_feedback"]
日志3:审核Agent对初稿进行检查,输出修改建议,包括格式规范、技术准确性、逻辑连贯性等方面的反馈。
从日志中可以看到,每个Agent都在独立执行自己的任务,并通过共享的上下文(context)传递中间结果,实现了完整的「调研 → 写作 → 审核」协作流水线。
5. 进阶:引入工具与记忆
5.1 为Agent绑定工具
from crewai_tools import SerperDevTool, ScrapeWebsiteTool
search_tool = SerperDevTool()
scrape_tool = ScrapeWebsiteTool()
researcher_with_tools = Agent(
role="技术调研员",
goal="收集并整理最新的技术资料",
backstory="你擅长使用搜索引擎和网页抓取工具获取信息。",
tools=[search_tool, scrape_tool],
verbose=True
)
5.2 启用记忆功能
content_crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research_task, write_task, review_task],
memory=True, # 启用记忆,Agent可引用历史对话
verbose=True
)
启用记忆后,写作Agent可以引用调研Agent之前输出的内容,审核Agent也能看到完整的创作过程,协作更加流畅。
6. 最佳实践与注意事项
6.1 角色定义要清晰
每个Agent的 role、goal 和 backstory 要具体明确,避免角色重叠导致输出混乱。
6.2 任务依赖要合理
使用 context 参数指定任务依赖关系,确保下游任务能拿到上游的输出:
write_task = Task(
description="撰写文章",
expected_output="文章正文",
agent=writer,
context=[research_task] # 依赖调研任务
)
6.3 控制Agent数量
不是Agent越多越好。3-5个Agent通常能取得较好的效果,过多会增加通信开销和token消耗。
6.4 设置合理的超时与重试
Agent(
role="调研员",
max_iter=5, # 最大迭代次数
max_execution_time=120, # 最大执行时间(秒)
allow_delegation=False
)
6.5 常见错误与排查
错误 1:依赖安装失败
现象:运行 pip install crewai 时出现版本冲突或安装超时。
排查步骤:
- 确认 Python 版本 ≥ 3.10,建议使用 3.11 或 3.12。
- 使用虚拟环境隔离依赖:
python -m venv crewai_env source crewai_env/bin/activate # Linux/Mac crewai_env\Scripts\activate # Windows - 若安装超时,换国内镜像源:
pip install crewai -i https://pypi.tuna.tsinghua.edu.cn/simple - 检查
crewai与crewai-tools版本是否兼容,建议锁定版本:pip install crewai==0.30.0 crewai-tools==0.1.0
错误 2:Agent 无响应或超时
现象:任务执行时 Agent 长时间卡住,最终抛出 TimeoutError。
排查步骤:
- 检查 LLM API 密钥是否有效,以及 API 服务是否正常(如 OpenAI 的
api.openai.com能否访问)。 - 在 Agent 定义中显式设置
max_execution_time和max_iter,避免无限等待:Agent( role="研究员", max_iter=10, max_execution_time=180, verbose=True # 开启日志便于定位 ) - 若使用本地模型(如 Ollama),确认模型已加载且上下文窗口足够大。
- 检查网络代理设置,确保请求未被拦截。
错误 3:任务陷入死循环
现象:Agent 反复执行同一任务,输出内容不断重复,无法进入下一阶段。
排查步骤:
- 检查任务
description是否过于模糊,导致 Agent 无法判断何时完成。应明确指定expected_output的格式和内容要求。 - 避免 Agent 之间循环委托(A 委托 B,B 又委托 A),在 Agent 定义中设置
allow_delegation=False可临时关闭委托功能。 - 为关键任务设置
max_iter上限,防止无限迭代。 - 开启
verbose=True观察 Agent 的思考过程,定位循环触发点。
错误 4:输出格式不符合预期
现象:Agent 返回的内容结构混乱,缺少关键字段或格式错误。
排查步骤:
- 在
Task的expected_output中给出明确的格式模板,例如:Task( description="生成产品介绍", expected_output="一个 JSON 对象,包含 title、description、price 三个字段", agent=writer ) - 使用
output_json或output_pydantic参数强制结构化输出(需配合支持结构化输出的模型)。 - 在
description末尾追加示例输出,引导 Agent 遵循格式。
7. 总结
多Agent协作是AI应用的重要发展方向。通过让多个AI Agent分工合作,我们可以构建出更强大、更可靠的智能系统。本文从概念到实战,带你搭建了一个完整的多Agent内容创作团队。
下一步,你可以尝试:
- 将Agent数量扩展到5个以上,模拟更复杂的团队结构
- 接入外部API(如数据库、搜索引擎)增强Agent能力
- 使用LangGraph构建更灵活的工作流
多Agent的世界才刚刚开始,期待你的探索与实践!
更多推荐



所有评论(0)