资讯动态

【三个月 AI Agent 实战学习】Day 44:CrewAI 核心概念深入 —— Agent、Task、Process 详解

发布时间:2026/10/23 2:51:32 来源:尧图企业网站定制
Day 44CrewAI 核心概念深入 —— Agent、Task、Process 详解欢迎来到第四十四天昨天我们跑通了第一个多智能体系统体验了内容创作团队的协作流程。但那只是一个最简单的示例——Agent 的角色定义还比较粗糙Task 的依赖管理只用了contextProcess 也只用了sequential。今天我们将深入 CrewAI 的三大核心概念Agent角色、Task任务、Process流程掌握它们的高级用法为构建复杂的多智能体系统打下坚实基础。一、今日学习目标深入理解 Agent 的三个核心要素role、goal、backstory学会编写高质量的角色定义。掌握 Task 的高级特性context依赖管理、output_file输出到文件、async_execution异步执行、output_json结构化输出。理解 Process 的两种模式sequential和hierarchical的内部机制及适用场景。学会使用allow_delegation控制 Agent 之间的委托行为。通过重构内容创作团队项目应用今天所学的所有高级特性。二、详细实现步骤步骤 1深入理解 Agent 的三要素CrewAI 的 Agent 由三个核心要素定义1.1 Role角色角色是 Agent 的身份标签决定了它在团队中的定位。好的角色定义应该简洁明确一眼看出职责使用具体的职位名称而非泛泛的助手体现专业领域# ❌ 模糊的角色role助手# ✅ 清晰的角色role资深数据分析师role法律合规审查专家role用户体验研究员1.2 Goal目标目标是 Agent 的工作导向决定了它完成任务时的优先级和方向。好的目标定义应该具体可衡量避免空泛体现质量要求与角色匹配# ❌ 空泛的目标goal做好分析工作# ✅ 具体的目标goal基于数据提供可执行的业务洞察确保每个结论都有数据支撑goal识别代码中的安全漏洞和性能问题提供修复建议1.3 Backstory背景故事背景故事是 Agent 的人设影响它的语气、风格和决策方式。好的背景故事应该提供专业经验背景暗示工作风格和价值观增加角色的可信度和一致性# ❌ 简单的背景backstory你是一个分析师。# ✅ 丰富的背景backstory你是一位拥有 8 年经验的数据分析师曾在多家互联网公司负责用户增长分析。 你擅长用数据讲故事坚信没有数据支撑的观点都是耍流氓。 你的分析报告以逻辑清晰、结论明确著称深受管理层信赖。1.4 三要素的协同三者必须一致角色决定目标目标塑造背景背景强化角色。# 完整示例一个高质量的 Agent 定义senior_analystAgent(role资深数据分析师,goal基于用户行为数据提供可执行的增长策略建议确保每个结论都有数据支撑,backstory你是一位拥有 8 年经验的数据分析师曾在多家互联网公司负责用户增长分析。 你擅长用数据讲故事坚信没有数据支撑的观点都是耍流氓。 你的分析报告以逻辑清晰、结论明确著称深受管理层信赖。 在工作中你总是先质疑数据的可靠性再得出结论。,llmllm,verboseTrue,allow_delegationFalse)步骤 2掌握 Task 的高级特性2.1 context —— 任务依赖管理context参数用于声明当前任务依赖哪些前置任务的输出。CrewAI 会自动将前置任务的输出注入到当前任务的 Prompt 中。# task2 依赖 task1 的输出task2Task(description根据大纲撰写文章,expected_output一篇完整的文章,agentwriter,context[task1]# 自动获取 task1 的输出)多依赖示例# 一个任务可以依赖多个前置任务task_summaryTask(description综合市场分析和竞品分析撰写战略建议,expected_output战略建议报告,agentstrategist,context[task_market_analysis,task_competitor_analysis]# 依赖两个任务)2.2 output_file —— 输出到文件output_file参数让 Task 的输出自动保存到指定文件方便后续查看和存档。task2Task(description撰写文章,expected_output一篇完整的文章,agentwriter,context[task1],output_fileoutput/article.md# 自动保存到文件)2.3 async_execution —— 异步执行async_executionTrue让任务异步执行适合可以并行处理的独立任务。# 两个独立的市场调研任务可以并行task_market_sizeTask(description调研市场规模,expected_output市场规模报告,agentmarket_analyst,async_executionTrue# 异步执行)task_competitorTask(description分析竞争对手,expected_output竞品分析报告,agentcompetitor_analyst,async_executionTrue# 异步执行)# 汇总任务依赖上面两个异步任务task_summaryTask(description综合两份报告给出战略建议,expected_output战略建议,agentstrategist,context[task_market_size,task_competitor])注意异步任务需要Process.sequential配合且后续依赖任务会自动等待异步任务完成。2.4 output_json / output_pydantic —— 结构化输出如果需要结构化的输出可以使用output_json或output_pydantic参数。frompydanticimportBaseModelfromtypingimportListclassArticleOutline(BaseModel):title:strsections:List[str]key_points:List[str]task1Task(description为文章制定大纲,expected_output包含标题、章节和要点的结构化大纲,agentplanner,output_pydanticArticleOutline# 输出为 Pydantic 对象)# 执行后task1.output.pydantic 可以获取结构化结果步骤 3理解 Process 的两种模式3.1 Sequential顺序执行工作机制任务严格按照tasks列表的顺序执行。每个任务完成后其输出自动传递给依赖它的后续任务。适用于线性流水线。crewCrew(agents[planner,writer,editor],tasks[task1,task2,task3],processProcess.sequential,verboseTrue)3.2 Hierarchical层级管理工作机制需要一个 Manager Agent可以是自动生成的也可以指定。Manager 负责任务分配、协调和结果汇总。Worker Agent 只负责执行具体任务不直接交互。crewCrew(agents[planner,writer,editor],tasks[task1,task2,task3],processProcess.hierarchical,manager_llmllm,# 指定 Manager 使用的 LLMverboseTrue)两种模式的对比特性SequentialHierarchical流程控制固定顺序Manager 动态分配适用场景流水线任务复杂项目灵活性低高额外开销无Manager Agent 的调用开销可控性高中等3.3 何时使用哪种模式Sequential任务步骤明确、依赖关系清晰、不需要动态调整。Hierarchical任务复杂、需要动态拆解、Worker 之间需要协调。步骤 4掌握 allow_delegationallow_delegation控制 Agent 是否可以将任务委托给其他 Agent。# 不允许委托Agent 只能自己做任务workerAgent(role写手,goal撰写文章,backstory...,allow_delegationFalse# 默认值)# 允许委托Agent 可以将子任务委托给其他 AgentmanagerAgent(role项目经理,goal协调团队完成项目,backstory...,allow_delegationTrue# 可以委托任务)注意在sequential模式下allow_delegation通常设为False避免流程混乱。在hierarchical模式下Manager 的allow_delegation通常为True。步骤 5重构内容创作团队项目现在我们将昨天的基础版本重构应用今天所学的所有高级特性。5.1 完整的重构代码新建advanced_crew.pyimportosfromdotenvimportload_dotenvfromcrewaiimportAgent,Task,Crew,Process,LLMfrompydanticimportBaseModelfromtypingimportList load_dotenv()llmLLM(modeldeepseek/deepseek-chat,api_keyos.getenv(DEEPSEEK_API_KEY),base_urlhttps://api.deepseek.com,temperature0.7)# 定义结构化输出模型 classArticleOutline(BaseModel):title:strsections:List[str]key_points:List[str]classArticle(BaseModel):title:strcontent:strword_count:int# 定义 Agent高质量三要素 plannerAgent(role内容策划总监,goal为给定主题制定逻辑清晰、吸引读者的内容大纲确保每个章节都有明确的论点,backstory你是一位拥有十年经验的内容策划专家曾为多家知名媒体策划过爆款文章。 你擅长捕捉读者兴趣点设计开头抓人、中间有料、结尾有力的文章结构。 你坚信好的大纲是成功文章的一半。,llmllm,verboseTrue,allow_delegationFalse)writerAgent(role资深内容写手,goal根据大纲撰写高质量、有深度、语言流畅的文章确保论据充分、案例生动,backstory你是一位文笔流畅、知识渊博的写手擅长将复杂概念用通俗语言表达。 你的文章风格生动有趣善于用故事和案例让读者产生共鸣。 你曾在多家头部自媒体平台发表过阅读量 10 万 的文章。,llmllm,verboseTrue,allow_delegationFalse)editorAgent(role校对编辑,goal审查文章修正语法错误、优化表达、确保逻辑连贯输出可直接发布的最终版本,backstory你是一位严谨的编辑对文字有极高的敏感度能发现最细微的错误。 你曾在出版社工作多年经手过数百本图书的编辑工作。 你的座右铭是细节决定品质。,llmllm,verboseTrue,allow_delegationFalse)seo_specialistAgent(roleSEO 优化师,goal为文章添加关键词和元描述提升搜索引擎排名同时保持文章可读性,backstory你是一位精通搜索引擎优化的专家深谙关键词布局和内容营销。 你总能在不破坏文章流畅度的前提下巧妙地嵌入高价值关键词。 你相信好内容好SEO最大曝光。,llmllm,verboseTrue,allow_delegationFalse)# 定义 Task使用高级特性 topic人工智能对教育行业的影响# 任务1制定大纲结构化输出task1Task(descriptionf请为以下主题制定一份详细的内容大纲{topic}。 大纲应包含 1. 一个吸引人的标题 2. 引言部分的核心观点 3. 3-5 个核心论点的章节标题 4. 每个章节的关键要点 5. 结论部分的核心观点,expected_output包含标题、章节列表和每个章节要点的结构化大纲,agentplanner,output_fileoutput/outline.md,# 输出到文件output_pydanticArticleOutline# 结构化输出)# 任务2撰写文章依赖 task1task2Task(descriptionf根据大纲撰写一篇约 800 字的文章主题{topic}。 要求 - 语言流畅论据充分 - 每个论点都要有具体案例或数据支撑 - 文章风格生动有趣避免枯燥说教 - 开头要抓人结尾要有力,expected_output一篇约 800 字的完整文章,agentwriter,context[task1],# 依赖 task1output_fileoutput/article_draft.md)# 任务3校对编辑依赖 task2task3Task(description审查文章完成以下工作 1. 修正语法错误和错别字 2. 优化表达让语言更流畅 3. 确保逻辑连贯段落过渡自然 4. 检查论据是否充分 输出最终版本。,expected_output经过校对和优化的最终文章,agenteditor,context[task2],output_fileoutput/article_final.md)# 任务4SEO 优化依赖 task3task4Task(description为最终文章添加 SEO 优化 1. 提取 5-8 个核心关键词 2. 撰写一段 150 字以内的元描述 3. 在文章末尾添加关键词标签 输出包含 SEO 信息的完整文章。,expected_output包含关键词和元描述的完整文章,agentseo_specialist,context[task3],output_fileoutput/article_with_seo.md)# 组建 Crew crewCrew(agents[planner,writer,editor,seo_specialist],tasks[task1,task2,task3,task4],processProcess.sequential,verboseTrue)# 执行 resultcrew.kickoff()print(\n*60)print(最终输出)print(result)5.2 创建输出目录在运行前确保output/目录存在mkdir-poutput5.3 运行并观察python advanced_crew.py观察以下变化每个 Agent 的角色定义更加丰富输出风格更一致。task1输出了结构化的 Pydantic 对象同时保存到output/outline.md。task2自动获取了task1的输出作为输入。最终生成了多个文件大纲、初稿、终稿、SEO 优化版。步骤 6实验 Hierarchical 模式将Process.sequential改为Process.hierarchical并指定manager_llmcrewCrew(agents[planner,writer,editor,seo_specialist],tasks[task1,task2,task3,task4],processProcess.hierarchical,manager_llmllm,# Manager 使用的 LLMverboseTrue)运行后观察Manager Agent 会自动生成负责任务分配。Manager 可能会调整任务顺序或在 Worker 之间协调。输出可能更灵活但也可能不如 Sequential 稳定。步骤 7实验异步执行将两个独立任务设为异步# 假设有两个独立的调研任务task_research_aTask(description调研 AI 在教育领域的应用案例,expected_output案例列表,agentplanner,async_executionTrue)task_research_bTask(description调研 AI 教育产品的市场规模,expected_output市场规模数据,agentwriter,async_executionTrue)# 汇总任务task_summaryTask(description综合两份调研撰写总结报告,expected_output总结报告,agenteditor,context[task_research_a,task_research_b])三、常见问题与调试Q1output_pydantic报错提示无法解析。→ 确保 Pydantic 模型定义正确字段类型明确。如果 LLM 输出格式不稳定可以在 Task 的description中明确要求输出 JSON 格式并给出示例。也可以使用output_json替代。Q2context传递的内容太长导致 Token 超限。→ 可以在 Task 的description中要求 Agent 精炼输出或者在前置任务中设置output_file并让后续任务读取文件摘要。Q3async_executionTrue没有生效。→ 异步执行需要 CrewAI 版本支持且在某些模式下可能被忽略。确保processProcess.sequential并检查 CrewAI 版本是否为最新。Q4Hierarchical 模式下 Manager 分配任务不合理。→ 可以在 Manager 的 System Prompt 中增加指导通过manager_agent自定义 Manager。或者回到 Sequential 模式手动控制流程。Q5Agent 输出风格不一致。→ 检查backstory是否足够具体。可以在 Task 的description中明确要求输出格式和风格。也可以在 Agent 定义中加入style或tone的描述。Q6allow_delegationTrue导致死循环。→ 在 Sequential 模式下建议设为False。如果必须委托设置最大迭代次数并在 Task 中明确委托规则。Q7如何查看每个 Task 的独立输出→ 执行后可以通过task.output获取每个任务的输出。如果设置了output_file也可以直接查看文件。resultcrew.kickoff()fortaskincrew.tasks:print(fTask:{task.description[:50]}...)print(fOutput:{task.output}\n)四、今日总结与作业今天你完成了✅ 深入理解了 Agent 的三要素role、goal、backstory学会了编写高质量的角色定义。✅ 掌握了 Task 的高级特性context、output_file、async_execution、output_pydantic。✅ 理解了 Process 的两种模式sequential 和 hierarchical 的内部机制。✅ 学会了使用 allow_delegation 控制 Agent 委托行为。✅ 重构了内容创作团队项目应用了所有高级特性。今日作业必做为内容创作团队增加第五个 Agent——“事实核查员”负责验证文章中的数据 and 事实。它应该在编辑之后、SEO 之前执行。使用context正确设置依赖关系。将task1的output_pydantic改为output_json观察两者在输出格式上的差异。记录你的发现。尝试将task2和task3设为async_executionTrue观察执行顺序和结果。分析异步执行在这个场景下是否合适。思考题在 Hierarchical 模式下如果 Manager Agent 将一个任务分配给了错误的 Worker你有什么办法让 Worker 拒绝并让 Manager 重新分配请描述你的方案。明日预告我们将进入第四阶段的第二个项目——“市场调研分析团队”。你将使用今天所学的所有高级特性构建一个包含市场分析师、竞品分析师、消费者洞察专家和战略顾问的多智能体系统并输出一份完整的市场调研报告。有任何问题欢迎随时提问

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑