CrewAI :当 Agent 学会团队协作

目录

[📍 定位](#📍 定位)

[🎯 选型指南](#🎯 选型指南)

[🏗️ 原理与架构](#🏗️ 原理与架构)

[📐 双层架构](#📐 双层架构)

[👥 Crew:Agent 团队](#👥 Crew:Agent 团队)

[🌊 Flow:生产级工作流](#🌊 Flow:生产级工作流)

[🎨 设计原则](#🎨 设计原则)

[💎 价值](#💎 价值)

[🧩 解决"单 Agent 天花板"](#🧩 解决“单 Agent 天花板”)

[🚀 从原型到生产](#🚀 从原型到生产)

[🌍 生态](#🌍 生态)

[🚀 快速入门](#🚀 快速入门)

[🧪 最小可运行 Demo](#🧪 最小可运行 Demo)

[💡 运行后你会看到](#💡 运行后你会看到)

[🎉 总结](#🎉 总结)


📍 定位

CrewAI 是一个编排多 Agent 协作的 Python 框架

核心理念:让 AI 像真实团队一样工作 👥------有角色、有分工、有流程,它不是"又一个 LLM 调用库",而是 Agent 团队的运行时

|---------|------------------------------------|
| 概念 | 含义 |
| Agent | 有 role、goal、backstory 的 LLM 实例 |
| Task | 有描述、预期输出、依赖关系的任务单元 |
| Crew | Agent + Task 的容器,控制执行策略 |
| Process | sequential(串行)或 hierarchical(层级管理) |
| Flow | 事件驱动编排,支持条件分支、状态管理 |


🎯 选型指南

✅ 选 CrewAI,如果你:

  • 想要快速上手,YAML 配置 Agent,10 行代码跑起来 ⚡

  • 需要明确的角色分工和任务流水线

  • 需要生产级事件驱动工作流,且不想手写底层图结构

  • 团队有非技术人员需要参与 Agent 行为调整

✅ 选 AutoGen,如果你:

  • 需要人类深度参与 Agent 的决策过程(医疗、法律、金融)🏥

  • 偏好对话式、讨论式的 Agent 协作(头脑风暴、辩论)🗣️

  • 在微软技术栈(.NET / Azure)上构建

✅ 选 LangGraph,如果你:

  • 需要极其精细的流程控制(每个分支、每个条件、每个循环)🎯

  • 需要原生 checkpointing 和时间旅行调试

  • 已经在 LangChain 生态中深度使用

  • 愿意为控制力付出更多代码量的代价 💪


🏗️ 原理与架构

📐 双层架构

CrewAI 的架构分为两层:

Crew 是内层容器,负责 Agent 团队内部的任务分配和执行。

Flows 是外层编排器,负责多个 Crew 之间的调度、条件跳转和状态传递。

👥 Crew:Agent 团队

一个 Crew 由五个要素构成:

  1. Agent :定义 role(角色)、goal(目标)、backstory(背景故事)。LLM 根据这三要素理解"我是谁、我要做什么",效果远好于硬编码 prompt 🧠

  2. Task :定义 description(做什么)、expected_output(产出什么)、agent(谁执行),可选 contexthuman_input(人类审批)

  3. Process:Sequential(顺序执行,前一个输出自动成为下一个的上下文)或 Hierarchical(自动创建 Manager Agent 负责委派和验证)

  4. Tool:Agent 可调用的外部能力(搜索、代码执行、API 等)🔧

  5. Memory:短期记忆(当前会话)、长期记忆(跨会话)、实体记忆(关键信息存储)💾

核心执行流程:

复制代码
kickoff() → Process 决定顺序 → Agent 接收任务 → LLM 推理 + Tool 执行 → 结果传给下一个 Agent → 所有任务完成,返回最终输出 ✔️

🌊 Flow:生产级工作流

Crew 适合"智能协作"场景,但现实业务往往需要精确的控制流。Flow 的核心原语:

|-------------------------|-----------------|
| 原语 | 作用 |
| @start() | 入口函数 🚪 |
| @listen(step) | 监听某步骤完成,串行执行 👂 |
| @router(step) | 条件路由,根据返回值分支 🔀 |
| @listen(or_(s1, s2)) | 任一条件触发 ⚡ |
| @listen(and_(s1, s2)) | 所有条件满足才触发 🔗 |

状态管理通过 Pydantic BaseModel 实现,类型安全:

python 复制代码
class AnalysisState(BaseModel):
    sentiment: str = "neutral"
    confidence: float = 0.0
    recommendations: list = []

Flow 和 Crew 不是互斥的。典型用法:Flow 控制整体业务流程("先分析、再判断、再执行"),每个关键步骤内部用 Crew 完成需要智能协作的复杂子任务 🔄。

🎨 设计原则

  1. 语义化角色 :用 role/goal/backstory 定义 Agent,而非 prompt 模板。LLM 自己理解"我是谁",效果优于硬编码 🌟

  2. YAML 配置驱动:Agent 和 Task 用 YAML 管理,与 Python 代码解耦,非技术人员可参与调整 📄

  3. 渐进式复杂度:5 行代码跑一个简单 Crew,10 行加 Flow 做条件路由,不加 Flow 也能直接用于生产 🚀


💎 价值

🧩 解决"单 Agent 天花板"

单个 LLM 的能力边界明确:上下文窗口有限、推理能力有限、无法并行。CrewAI 通过多 Agent 协作突破:

  • 上下文不膨胀:每个 Agent 只看自己的任务和必要上下文

  • 角色专业化:研究员只做研究、写手只写报告、审核员只做审核

  • 并行执行 :通过 Flow 的 or_ 触发,多个 Agent 可同时工作 ⚡


🚀 从原型到生产

多数 AI 框架原型好用、生产吃力。CrewAI 提供了平滑路径:

Flow 用于精确控制(确定性业务逻辑),Crew 用于智能协作(需要 AI 判断的创意工作),同一套代码从实验到部署 📈。

🌍 生态

  • 10万+ 认证开发者,DeepLearning.AI 两门官方课程 🎓

  • 官方 AI Coding Skills(为 Claude Code、Cursor 等提供结构化指令)

  • 商业版 AMP Suite 提供 Tracing、控制平面、企业级安全与合规 🔐


🚀 快速入门

bash 复制代码
uv pip install crewai
crewai create crew my-first-crew

生成目录:agents.yaml(Agent 定义)、tasks.yaml(Task 定义)、crew.py(组装)、main.py(入口)📂。

📄 agents.yaml:

python 复制代码
researcher:
  role: "{topic} Senior Data Researcher"
  goal: "Uncover cutting-edge developments in {topic}"
  backstory: "You're a seasoned researcher..."

📄 tasks.yaml:

python 复制代码
research_task:
  description: "Conduct thorough research about {topic}"
  expected_output: "A list with 10 bullet points about {topic}"
  agent: researcher

▶️ 运行:

python 复制代码
MyFirstCrew().crew().kickoff(inputs={'topic': 'AI Agents'})

🧪 最小可运行 Demo

想立刻感受一下 CrewAI 的协作魅力吗?下面这个例子会帮你快速跑通"研究员 + 分析师"的经典组合:一个 Agent 负责搜索最新情报,另一个负责整理成报告,全程自动协作 ✨

python 复制代码
import os
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool

# 🔍 1. 准备搜索工具(如不需要联网可删除此工具及相关引用)
search_tool = SerperDevTool()

# 🤖 2. 定义 Agent ------ 像组建一支虚拟梦之队
researcher = Agent(
    role='高级数据研究员',
    goal='发掘 AI Agents 领域的前沿进展',
    backstory='你是一位经验丰富的研究员,擅长从海量信息中提炼出关于 AI Agents 的最新、最相关的洞察。',
    tools=[search_tool],   # 赋予研究员联网搜索能力
    verbose=True           # 打印详细思考过程
)

analyst = Agent(
    role='报告分析师',
    goal='根据研究员的数据,创建详细、清晰的总结报告',
    backstory='你是一位严谨的分析师,眼光敏锐,能把复杂的数据转化为清晰易懂的 Markdown 报告。',
    verbose=True
)

# 📋 3. 定义任务 ------ 告诉每位 Agent 具体要做什么
research_task = Task(
    description='对 AI Agents 在 2025 年的最新发展进行深入研究,找出 5 个最关键的技术突破。',
    expected_output='一份包含 5 个关键点的研究清单。',
    agent=researcher            # 研究员执行
)

report_task = Task(
    description='根据研究清单,将其扩展为一份完整的 Markdown 报告。',
    expected_output='一份格式化的 Markdown 报告,包含标题、各小节和项目符号。',
    agent=analyst,              # 分析师执行
    output_file='report.md'     # 📄 报告自动保存到本地文件
)

# ⚙️ 4. 组建 Crew 并设定执行流程
ai_crew = Crew(
    agents=[researcher, analyst],
    tasks=[research_task, report_task],
    process=Process.sequential,  # 🔁 串行执行:先研究,后报告
    verbose=True                 # 打印整个流程的日志
)

# 🚀 5. 一键启动!
result = ai_crew.kickoff()

print("######################")
print("🎉 最终报告生成完毕:")
print(result)

💡 运行后你会看到

  • 🧠 终端中会实时打印两个 Agent 的思考、搜索及写作过程

  • 📄 项目目录下会生成 report.md,内容即分析师撰写的完整报告

  • 🎯 控制台最后输出报告全文,方便直接预览

🎉 总结

CrewAI 的核心价值:角色化、协作化、工程化

  • 🎭 角色化:不是让 AI 做"万能助手",而是定义专业角色,各司其职

  • 🤝 协作化:Agent 之间自动传递上下文、委派任务、验证结果

  • ⚙️ 工程化:YAML 配置 → Flow 编排 → 企业级控制平面,覆盖原型到生产全链路

当 AI Agent 能力越来越强,真正稀缺的不是"能做什么",而是"如何组织它们高效协作"。

CrewAI 的答案:像管理一个优秀的团队一样管理你的 AI Agent 👥✨。

相关推荐
玉鸯1 小时前
向量检索不是记忆:Agent 记忆的三层进化
python·agent
甲维斯1 小时前
Opus5逐渐离谱,“5”个令人惊艳的例子
人工智能
大模型码小白1 小时前
Java 部署:Jenkins Pipeline 构建 Java 项目(自动化)
java·人工智能·python·机器学习
paeamecium1 小时前
【PAT甲级真题】- Kuchiguse (20)
数据结构·c++·python·算法·pat考试·pat
常丛丛1 小时前
7.8 嵌套对话:智能体的内心独白与审查机制
人工智能
海兰2 小时前
【高速缓存】RedisVL 存储类型选择指南:Hash 与 JSON
人工智能·redis·算法·缓存·json·哈希算法
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
Git GDB/CGDB调试器
git·gdb
KaMeidebaby2 小时前
卡梅德生物技术快报|核酸适配体文库筛选:核酸适配体文库筛选全流程技术解析:NGS与AI辅助方案的设计与实践
前端·人工智能·物联网·算法·百度
Tangyuewei2 小时前
交互熵:AI 编程工具的下一站不是聪明,是靠谱
人工智能·交互