乐于分享
好东西不私藏

第15天:CrewAI多智能体框架

第15天:CrewAI多智能体框架

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
角色协作型
上手快、概念清晰、LangChain生态
复杂流程控制较弱
LangGraph
图状态机
流程控制精细、状态可持久化
学习曲线陡
AutoGen
对话协作型
多轮对话自然、Human-in-the-loop
配置复杂
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 ✅)

九、本期总结

要点
说明
CrewAI定位
多智能体协作编排框架,基于LangChain
核心三要素
Agent(角色)+ Task(任务)+ Crew(团队)
执行模式
顺序(sequential)/ 层次化(hierarchical)
适用场景
角色清晰、任务可拆分的复杂工作流程
竞品对比
LangGraph更精细,AutoGen更对话,CrewAI更快速

下期预告:第16天我们将学习 AI智能体的安全与对齐——如何让智能体安全、可控、不对齐失败。


我是陆师傅,正在连载《AI智能体开发实战》21天系列,每天一篇技术干货。欢迎关注公众号获取完整系列!