多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 安装依赖
pipinstallcrewai crewai-tools4.2 定义Agent角色
fromcrewaiimportAgent# 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 定义任务
fromcrewaiimportTask# 调研任务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 组建团队并执行
fromcrewaiimportCrew# 创建团队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绑定工具
fromcrewai_toolsimportSerperDevTool,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-mvenv crewai_envsourcecrewai_env/bin/activate# Linux/Maccrewai_env\Scripts\activate# Windows - 若安装超时,换国内镜像源:
pipinstallcrewai-ihttps://pypi.tuna.tsinghua.edu.cn/simple - 检查
crewai与crewai-tools版本是否兼容,建议锁定版本:pipinstallcrewai==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的世界才刚刚开始,期待你的探索与实践!
