CrewAI 从零上手:用 JSON 配置搭出多智能体工作流

CrewAI(github.com/crewAIInc/crewAI)是 crewAIInc 出品的开源 Python 多智能体编排框架(把多个各有分工的 AI 角色组织起来协同干活的框架)。截至 2026-08-26 的 GitHub 主页快照:57.6k star、8.2k fork,GitHub「Used by」显示约 1.9 万个仓库引用,326 名贡献者;最新版本 1.15.17 于 2026 年 8 月 20 日发布。它面向「比单个 prompt 更复杂」的多步任务:几个角色分工的 Agent 协作完成任务,或用事件驱动的 Flow 精确控制每一步。核心结论:uv tool install crewai 装 CLI,crewai create crew 生成 JSON 配置项目,改两个 .jsonc 后 crewai run 即可跑通第一个多智能体工作流;步骤固定的自动化再按需升级到 Flow。

它解决什么问题

单个 prompt 适合一问一答,但真实任务往往是多步骤的:先查资料、再整理、再写报告;过程中还要调用搜索工具、输出结构化结果。CrewAI 把这类任务拆成两个原语来处理:

  • Crews(团队):一组有角色、目标、工具的 Agent 自主协作。适合需要灵活决策、动态分工的任务。
  • Flows(流程):事件驱动的执行流水线,用 @start、@listen、@router 装饰器精确控制每一步做什么,支持条件分支与状态管理。适合步骤固定、需要确定性控制的自动化。大白话理解:@listen 相当于「第 2 步等第 1 步完成后自动接力」,@router 相当于「如果超时就改走方案 B」。

两者可以组合:Flow 里嵌 Crew,既保留 Agent 的自主性,又在外层拿到确定性控制。

安装与项目脚手架

环境要求是 Python >= 3.10 且 < 3.14,依赖管理推荐用 uv。安装 CrewAI CLI 只需一条命令:

uv tool install crewai

生成一个新项目用脚手架命令,默认产出 JSON-first 结构:

crewai create crew my_project

项目目录如下:

my_project/
├── .gitignore
├── .env
├── agents/          # 每个 Agent 一个 jsonc,定义角色/目标/背景/LLM/工具
├── crew.jsonc       # 任务、流程类型、输入默认值
├── knowledge/       # 可选知识库文件
├── skills/          # 可选技能文件
├── tools/           # 可选自定义工具
├── pyproject.toml
└── README.md

Agents 定义在 agents/*.jsonc,任务与团队设置集中在 crew.jsonc,运行时代码只需 crewai run 直接加载这些 JSON。

如果习惯旧的 Python/YAML 写法,可用 --classic 参数生成 crew.py 加 config/agents.yaml、config/tasks.yaml 的经典结构。

用 JSON 配置搭一个研究小组

以官方示例「latest-ai-development」为例:一个研究员负责调研最新 AI 进展,一个分析师把结果整理成报告。先生成项目:

crewai create crew latest-ai-development
cd latest_ai_development

agents/researcher.jsonc——定义研究员角色:

{
  "role": "Senior Data Researcher on {topic}",
  "goal": "Uncover cutting-edge developments in {topic}",
  "backstory": "You're a seasoned researcher who finds relevant information and presents it clearly.",
  "llm": "openai/gpt-4o",
  "tools": ["SerperDevTool"],
  "settings": { "verbose": true }
}

agents/reporting_analyst.jsonc——定义分析师角色:

{
  "role": "Reporting Analyst on {topic}",
  "goal": "Create detailed reports based on {topic} data analysis and research findings",
  "backstory": "You're a meticulous analyst who turns complex data into clear, concise reports.",
  "llm": "openai/gpt-4o",
  "settings": { "verbose": true }
}

crew.jsonc——把两个 Agent 和两个任务串起来:

{
  "name": "Latest AI Development",
  "agents": ["researcher", "reporting_analyst"],
  "tasks": [
    {
      "name": "research_task",
      "description": "Conduct thorough research about {topic}. Find recent, relevant information.",
      "expected_output": "A list with 10 bullet points of the most relevant information about {topic}.",
      "agent": "researcher"
    },
    {
      "name": "reporting_task",
      "description": "Review the research and expand each topic into a full section for a report.",
      "expected_output": "A markdown report with the main topics, each with a full section of information.",
      "agent": "reporting_analyst",
      "context": ["research_task"],
      "output_file": "output/report.md"
    }
  ],
  "process": "sequential",
  "verbose": true,
  "inputs": { "topic": "AI Agents" }
}

这里的 {topic} 是占位符,运行时可被替换。.env 里放模型提供商的 API key——agent 里的 llm 字段就指向这里配置的模型;要用网页搜索就再加 SERPER_API_KEY。CrewAI 不锁定模型厂商:默认走 OpenAI API,也支持通过 Ollama、LM Studio 接本地模型,以及各类自定义 LLM。

接着安装依赖并运行:

crewai install
crewai run

默认是 sequential(顺序)流程:前一个任务产出传给后一个任务。换成 hierarchical(层级)流程,框架会自动安排一个经理 Agent 来分包、协调与验收。最终报告会写到 output/report.md。

步骤固定时,改用 Flow 接管控制

上面的 Crew 让 Agent 自主发挥,适合研究、写作这类任务。当自动化流程带有固定的业务逻辑时,用 Flow 把步骤钉死:@start 声明流程入口,@listen 在某个步骤完成后触发下一步,@router 按结果分派到不同分支,并可用 or_、and_ 组合多个触发条件。Flow 内部可以直接调用 Crew 并传入结构化状态,让 Agent 团队成为大流程中的一环,数据操作与分支判断仍由 Python 代码接管。

适用场景

README 的定位很直接:当你需要的不只是单个 prompt 或聊天机器人时,再上 CrewAI——多步工作流、多角色分工、工具调用、结构化输出、人工审核、把自主推理与明确的业务逻辑结合。据官方课程站 learn.crewai.com 自述,社区课程已培养 10 万余名认证开发者。

整个上手流程就是「装 CLI、生成项目、改两个 jsonc 文件、run」四步。Crews 面向自主协作,Flows 面向精确控制,两者同属一套 Python API 与 JSON 配置,从原型验证到生产级流程无需更换框架。