多Agent协作实战:让AI们分工合作完成任务
摘要本文深入探讨多Agent协作的核心概念通过CrewAI框架实战搭建一个多Agent内容创作团队并总结项目落地中的最佳实践与常见问题排查方法。无论你是AI初学者还是资深开发者都能从中获得可落地的协作思路与代码示例。关键词多Agent协作CrewAIAI AgentLangGraphPython1. 引言随着大语言模型能力的不断提升单一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 → 情感分析Agent3. 技术选型与框架对比目前主流的Python多Agent框架包括框架特点适用场景LangGraph基于图的状态机灵活可控复杂工作流编排CrewAI角色化设计开箱即用快速原型开发AutoGen微软出品支持多轮对话研究实验MetaGPT模拟软件公司角色软件开发全流程本文以CrewAI为例因为它角色定义清晰、上手简单非常适合入门实战。4. 实战搭建一个多Agent内容创作团队我们将搭建一个由三个Agent组成的「内容创作团队」完成一篇技术博客的撰写。4.1 安装依赖pipinstallcrewai crewai-tools4.2 定义Agent角色fromcrewaiimportAgent# 1. 调研Agent负责收集资料researcherAgent(role技术调研员,goal收集并整理最新的技术资料和最佳实践,backstory你是一名资深技术研究员擅长从文档、论文和社区中提取关键信息。,verboseTrue,allow_delegationFalse)# 2. 写作Agent负责撰写内容writerAgent(role技术写手,goal将调研结果转化为清晰易懂的技术文章,backstory你是一名技术博客作者擅长用生动的语言解释复杂概念。,verboseTrue,allow_delegationFalse)# 3. 审核Agent负责质量把控reviewerAgent(role内容审核员,goal检查文章的技术准确性、可读性和格式规范,backstory你是一名严谨的技术编辑对细节要求极高。,verboseTrue,allow_delegationFalse)4.3 定义任务fromcrewaiimportTask# 调研任务research_taskTask(description调研多Agent协作框架的最新发展重点了解CrewAI和LangGraph的对比。,expected_output一份包含框架对比表、核心概念和最佳实践的调研报告。,agentresearcher)# 写作任务write_taskTask(description基于调研报告撰写一篇面向初学者的多Agent协作实战教程。,expected_output一篇结构完整、语言生动的技术博客包含引言、概念、实战和总结。,agentwriter)# 审核任务review_taskTask(description审核文章的技术准确性、逻辑连贯性和格式规范性。,expected_output审核意见列表包含需要修改的问题和建议。,agentreviewer)4.4 组建团队并执行fromcrewaiimportCrew# 创建团队content_crewCrew(agents[researcher,writer,reviewer],tasks[research_task,write_task,review_task],verboseTrue)# 启动协作resultcontent_crew.kickoff()print(result)4.5 运行结果执行上述代码后三个Agent会按顺序工作调研Agent先收集资料输出调研报告写作Agent拿到报告后撰写文章初稿审核Agent检查初稿给出修改建议最终输出是一篇经过调研、撰写、审核全流程的完整技术文章。4.6 效果展示下面是多Agent协作过程中的模拟终端输出日志展示了三个Agent依次执行任务时的中间状态Agent 1调研AgentResearchAgent执行日志[ResearchAgent] 开始执行任务调研多Agent协作框架 [ResearchAgent] 调用工具web_search(queryCrewAI vs AutoGen 多Agent框架对比 2025) [ResearchAgent] 获取到 5 条搜索结果 [ResearchAgent] 提取关键信息 - CrewAI轻量级适合中小规模团队支持角色定义与任务委派 - AutoGen微软出品支持多轮对话与代码执行适合复杂推理 - LangGraphLangChain生态支持有向图流程控制 [ResearchAgent] 生成调研报告共 3 个要点... [ResearchAgent] 任务完成输出已写入共享上下文 context[research_report]日志1调研Agent正在收集资料并输出调研报告可以看到它调用了搜索工具并提取了关键信息。Agent 2写作AgentWritingAgent执行日志[WritingAgent] 开始执行任务基于调研报告生成文章初稿 [WritingAgent] 从 context[research_report] 读取调研结果 [WritingAgent] 拟定文章标题「多Agent协作实战用CrewAI搭建内容创作团队」 [WritingAgent] 生成大纲 1. 引言 2. 什么是多Agent协作 3. 技术选型 4. 实战搭建 5. 进阶技巧 [WritingAgent] 逐段撰写正文... [WritingAgent] 初稿完成共 1200 字已写入 context[draft]日志2写作Agent接收到调研报告后开始生成文章初稿日志中展示了标题拟定、段落组织等中间步骤。Agent 3审核AgentReviewAgent执行日志[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_toolSerperDevTool()scrape_toolScrapeWebsiteTool()researcher_with_toolsAgent(role技术调研员,goal收集并整理最新的技术资料,backstory你擅长使用搜索引擎和网页抓取工具获取信息。,tools[search_tool,scrape_tool],verboseTrue)5.2 启用记忆功能content_crewCrew(agents[researcher,writer,reviewer],tasks[research_task,write_task,review_task],memoryTrue,# 启用记忆Agent可引用历史对话verboseTrue)启用记忆后写作Agent可以引用调研Agent之前输出的内容审核Agent也能看到完整的创作过程协作更加流畅。6. 最佳实践与注意事项6.1 角色定义要清晰每个Agent的role、goal和backstory要具体明确避免角色重叠导致输出混乱。6.2 任务依赖要合理使用context参数指定任务依赖关系确保下游任务能拿到上游的输出write_taskTask(description撰写文章,expected_output文章正文,agentwriter,context[research_task]# 依赖调研任务)6.3 控制Agent数量不是Agent越多越好。3-5个Agent通常能取得较好的效果过多会增加通信开销和token消耗。6.4 设置合理的超时与重试Agent(role调研员,max_iter5,# 最大迭代次数max_execution_time120,# 最大执行时间秒allow_delegationFalse)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版本是否兼容建议锁定版本pipinstallcrewai0.30.0 crewai-tools0.1.0错误 2Agent 无响应或超时现象任务执行时 Agent 长时间卡住最终抛出TimeoutError。排查步骤检查 LLM API 密钥是否有效以及 API 服务是否正常如 OpenAI 的api.openai.com能否访问。在 Agent 定义中显式设置max_execution_time和max_iter避免无限等待Agent(role研究员,max_iter10,max_execution_time180,verboseTrue# 开启日志便于定位)若使用本地模型如 Ollama确认模型已加载且上下文窗口足够大。检查网络代理设置确保请求未被拦截。错误 3任务陷入死循环现象Agent 反复执行同一任务输出内容不断重复无法进入下一阶段。排查步骤检查任务description是否过于模糊导致 Agent 无法判断何时完成。应明确指定expected_output的格式和内容要求。避免 Agent 之间循环委托A 委托 BB 又委托 A在 Agent 定义中设置allow_delegationFalse可临时关闭委托功能。为关键任务设置max_iter上限防止无限迭代。开启verboseTrue观察 Agent 的思考过程定位循环触发点。错误 4输出格式不符合预期现象Agent 返回的内容结构混乱缺少关键字段或格式错误。排查步骤在Task的expected_output中给出明确的格式模板例如Task(description生成产品介绍,expected_output一个 JSON 对象包含 title、description、price 三个字段,agentwriter)使用output_json或output_pydantic参数强制结构化输出需配合支持结构化输出的模型。在description末尾追加示例输出引导 Agent 遵循格式。7. 总结多Agent协作是AI应用的重要发展方向。通过让多个AI Agent分工合作我们可以构建出更强大、更可靠的智能系统。本文从概念到实战带你搭建了一个完整的多Agent内容创作团队。下一步你可以尝试将Agent数量扩展到5个以上模拟更复杂的团队结构接入外部API如数据库、搜索引擎增强Agent能力使用LangGraph构建更灵活的工作流多Agent的世界才刚刚开始期待你的探索与实践