AI智能体开发实战 | 第15天:CrewAI多智能体协作框架
系列连载:AI智能体开发实战(共21天)| 作者:陆师傅 | 微信公众号:AI Intelligence Series
一、为什么需要多智能体框架?
单智能体再强,也有天花板:
任务太复杂,一个智能体处理不过来 需要不同专业领域分工(研究员 + 程序员 + 测试员) 需要角色扮演、互相辩论、交叉验证
CrewAI 就是为解决这些问题而生的——它让多个 AI 智能体像真实团队一样分工、协作、交付结果。
二、CrewAI 是什么?
CrewAI = 多智能体编排框架,基于 LangChain,专用于构建协作型 AI 团队
核心理念:每个智能体是一个"角色",多个角色组成"团队(Crew)",共同完成复杂任务。
传统单智能体:用户输入 → 单个AI → 输出结果CrewAI多智能体: 用户输入 ↓ ┌─────────────────────────────┐ │ Crew(团队) │ │ ├─ 研究员Agent(搜索) │ │ ├─ 分析师Agent(分析) │ │ └─ 报告员Agent(撰写) │ └─────────────────────────────┘ ↓ 最终报告输出三、CrewAI 核心概念
3.1 Agent(智能体/角色)
每个 Agent 有自己的:角色定位、背景故事、可用工具、LLM 配置
from crewai import Agentresearcher = Agent( role="资深研究员", goal="深入调研指定主题的最新进展", backstory="你是一位拥有10年经验的技术研究员,擅长信息检索和综合分析", verbose=True, allow_delegation=False, tools=[search_tool, web_scraper_tool])3.2 Task(任务)
Task 是分配给 Agent 的具体工作单元:
from crewai import Taskresearch_task = Task( description="调研2026年大模型技术趋势,重点关注多智能体方向", expected_output="一份包含5个技术趋势的详细分析报告", agent=researcher)3.3 Crew(团队)
把 Agent 和 Task 组合在一起,按顺序或并行执行:
from crewai import Crew, Processcrew = Crew( agents=[researcher, analyst, writer], tasks=[research_task, analyze_task, write_task], process=Process.sequential, # 顺序执行 verbose=True)result = crew.kickoff()print(result)四、顺序 vs 并行执行
CrewAI 支持两种执行模式:
Process.sequential | ||
Process.hierarchical |
# 并行执行(hierarchical模式)crew = Crew( agents=[agent1, agent2, agent3], tasks=[task1, task2, task3], process=Process.hierarchical, manager_llm=ChatOpenAI(model="gpt-4o"))五、完整实战:AI 行业分析报告机器人
from crewai import Agent, Crew, Process, Taskfrom crewai_tools import SerperDevTool, ScrapeWebsiteToolfrom langchain_openai import ChatOpenAI# 初始化工具search_tool = SerperDevTool()scrape_tool = ScrapeWebsiteTool()# 定义 LLMllm = ChatOpenAI(model="gpt-4o", temperature=0.3)# === 三个Agent ===researcher = Agent( role="技术情报研究员", goal="收集目标公司/技术的最新资讯和数据", backstory="你擅长通过互联网搜索获取一手技术资讯", tools=[search_tool, scrape_tool], llm=llm, verbose=True)analyst = Agent( role="技术趋势分析师", goal="基于调研数据,分析技术优劣和发展趋势", backstory="你是一位资深技术分析师,善于从数据中提取洞察", llm=llm, verbose=True)writer = Agent( role="技术内容撰稿人", goal="将分析结果整理为结构清晰的技术报告", backstory="你是一位技术博客作者,善于将复杂技术讲清楚", llm=llm, verbose=True)# === 三个Task ===task_research = Task( description="调研 CrewAI 框架的最新进展,包括GitHub星标、最新版本功能、社区案例", expected_output="包含 CrewAI 最新功能、使用示例、社区反馈的调研笔记", agent=researcher)task_analyze = Task( description="对比 CrewAI 与 LangGraph、AutoGen 的优劣势,分析适用场景", expected_output="一份对比分析表,包含功能对比、性能对比、推荐场景", agent=analyst)task_write = Task( description="基于调研和分析结果,撰写一篇面向开发者的 CrewAI 实战教程(1500字以上)", expected_output="完整的技术教程 Markdown 文档", agent=writer)# === 组装Crew ===crew = Crew( agents=[researcher, analyst, writer], tasks=[task_research, task_analyze, task_write], process=Process.sequential, verbose=True)result = crew.kickoff()print(result)六、CrewAI vs 其他多智能体框架
| CrewAI | |||
| LangGraph | |||
| AutoGen | |||
| OpenAI Swarm |
推荐选择:
快速原型 / 角色分明 → CrewAI 复杂状态流转 / 生产级 → LangGraph 对话式协作 / 需要人工介入 → AutoGen
七、CrewAI 最佳实践
7.1 角色设计原则
单一职责:每个 Agent 只做一件事 背景丰富:backstory 越详细,输出质量越高 工具匹配:只给 Agent 它真正需要的工具
7.2 Task 设计原则
描述清晰:description 要像给真人的任务单一样详细 输出可验证:expected_output 要明确格式和内容要求 任务解耦:任务之间尽量减少隐式依赖
7.3 常见坑
# ❌ 坑1:Agent 之间没有信息传递# 解决:CrewAI 自动在 Task 之间传递上下文,无需手动处理# ❌ 坑2:所有 Agent 都用同一个 LLM# 解决:简单任务用 gpt-4o-mini,复杂推理用 gpt-4o,节省成本# ❌ 坑3:工具返回内容太大,撑爆上下文# 解决:用工具时加摘要步骤,或设置 max_tokens八、与 LangChain 的关系
CrewAI 建立在 LangChain 之上:
LangChain: 基础组件(LLM调用、工具定义、记忆) ↑CrewAI: 多智能体编排层(Agent角色、Task流程、Crew团队)你可以混用两者:
from langchain.tools import Toolfrom crewai import Agent# LangChain 的 Tool 可以直接用于 CrewAI Agentmy_tool = Tool( name="自定义工具", func=my_function, description="这个工具用来...")agent = Agent( role="...", goal="...", backstory="...", tools=[my_tool] # LangChain Tool ✅)九、本期总结
下期预告:第16天我们将学习 AI智能体的安全与对齐——如何让智能体安全、可控、不对齐失败。
我是陆师傅,正在连载《AI智能体开发实战》21天系列,每天一篇技术干货。欢迎关注公众号获取完整系列!
夜雨聆风