欢迎光临
我们一直在努力

CrewAI :当 Agent 学会团队协作

目录

📍 定位

🎯 选型指南

🏗️ 原理与架构

📐 双层架构

👥 Crew:Agent 团队

🌊 Flow:生产级工作流

🎨 设计原则

💎 价值

🧩 解决“单 Agent 天花板”

🚀 从原型到生产

🌍 生态

🚀 快速入门

🧪 最小可运行 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 由五个要素构成:

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

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

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

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

  • 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 实现,类型安全:

    class AnalysisState(BaseModel):
    sentiment: str = "neutral"
    confidence: float = 0.0
    recommendations: list = []

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

    🎨 设计原则

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

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

  • 渐进式复杂度: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、控制平面、企业级安全与合规 🔐


      🚀 快速入门

      uv pip install crewai
      crewai create crew my-first-crew

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

      📄 agents.yaml:

      researcher:
      role: "{topic} Senior Data Researcher"
      goal: "Uncover cutting-edge developments in {topic}"
      backstory: "You're a seasoned researcher…"

      📄 tasks.yaml:

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

      ▶️ 运行:

      MyFirstCrew().crew().kickoff(inputs={'topic': 'AI Agents'})


      🧪 最小可运行 Demo

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

      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 👥✨。

      赞(0)
      未经允许不得转载:171主机测评 » CrewAI :当 Agent 学会团队协作
      分享到: 更多 (0)

      评论 抢沙发

      • 昵称 (必填)
      • 邮箱 (必填)
      • 网址