教程中心实战
实战

用 CrewAI 搭一支「多智能体团队」:研究员 + 写手 + 审校角色分工

2026.07.25· 7 个步骤 · 17 分钟阅读· 👥 CrewAI

很多复杂任务,单个 Agent 一把梭容易「顾此失彼」:既要查资料、又要写得通顺、还得不出错。CrewAI 的解法是角色化多智能体——给每个 Agent 立人设、配工具、设协作 SOP,让一组「研究员 / 写手 / 审校」像真实团队一样把任务拆着干。它是最容易上手的多智能体框架,本教程从零搭一支「竞品调研小队」,30 分钟产出带引用的报告。

👥 本教程适合:想做「多人协作式」Agent 但被 LangGraph 学习曲线劝退的人。会 Python、装过 pip 即可,不需要图论基础。

先搞懂:CrewAI 的三个核心概念

用一句话理解:CrewAI 把「团队」拆成三个积木——Agent(人)、Task(活)、Crew(把人按流程组起来干活)。

概念类比你要填什么
Agent团队里的一个角色人设、目标、可用工具
Task交给角色的一件活描述、产出要求、负责 Agent
Crew项目组 + 流程哪些 Agent、什么顺序

角色抽象快,但规模化后要换引擎。业内常见路径:先用 CrewAI 快速出原型,生产要精确路由控制时再迁 LangGraph。本教程聚焦把 CrewAI 跑顺。

Step 1:安装与准备 Key

1 装框架、配模型
pip install crewai crewai-tools

# 准备一个模型 Key(以 OpenAI 为例)
export OPENAI_API_KEY=sk-xxxxxxxx

# 可选:给研究员 Agent 接搜索工具
pip install duckduckgo-search
💡 CrewAI 模型中立,可换 LangChain 支持的任意模型。新手用 OpenAI 最省心;想降本可用国产模型适配层。

Step 2:定义三个 Agent 角色

2 立人设、定边界
from crewai import Agent

researcher = Agent(
    role="竞品研究员",
    goal="搜集目标产品的功能、定价、口碑",
    backstory="资深行业分析师,只信有出处的信息",
    tools=[DuckDuckGoSearchRun()],
    verbose=True,
)

writer = Agent(
    role="报告写手",
    goal="把研究结果写成结构清晰的中文报告",
    backstory="10 年科技媒体编辑,行文通俗",
)

reviewer = Agent(
    role="事实审校",
    goal="核对报告中的数字与引用是否准确",
    backstory="严谨的核查编辑,零容忍编造",
)

人设写越具体,协作越稳。role/goal/backstory 就是给 Agent 的「岗位说明书」。含糊的人设会让 Agent 越界或偷懒。

Step 3:把活拆成 Task

3 一件活交给一个角色
from crewai import Task

t1 = Task(
    description="调研竞品 {product} 的功能、定价、用户口碑,列出 5 条要点",
    expected_output="带来源的要点清单",
    agent=researcher,
)

t2 = Task(
    description="基于调研结果,写一篇 800 字中文对比报告",
    expected_output="Markdown 报告",
    agent=writer,
    context=[t1],   # 依赖 t1 的产出
)

t3 = Task(
    description="核对报告里的数字与引用,标出任何无法证实的说法",
    expected_output="带修订建议的核查意见",
    agent=reviewer,
    context=[t2],
)
🔑 关键技巧:`context=[t1]` 表示「等 t1 干完,把它的产出喂给我」。这样任务自然形成流水线,不用你手动传参。

Step 4:组 Crew 并设定流程

4 把人按流程组起来
from crewai import Crew, Process

crew = Crew(
    agents=[researcher, writer, reviewer],
    tasks=[t1, t2, t3],
    process=Process.sequential,   # 顺序执行;也可 hierarchical 让经理 Agent 编排
)

result = crew.kickoff(inputs={"product": "龙虾智能体"})
print(result)

顺序 vs 层级。`sequential` 适合线性流水线;若任务间有分支,用 `hierarchical` 让一个「经理 Agent」动态派活,但成本更高。

Step 5:给研究员接真实工具

5 让 Agent 能上网/读文件
from crewai_tools import (
    DuckDuckGoSearchRun, ScraperTool, FileReadTool
)

researcher.tools = [
    DuckDuckGoSearchRun(),   # 联网搜索
    ScraperTool(),           # 抓网页正文
    FileReadTool(),          # 读本地资料
]
🛠️ CrewAI 有几十种现成工具(GitHub、Notion、Slack…)。研究员能「自己查」,写手就有真料可写,审校也能对着来源核对。

Step 6:跑通并看过程日志

6 打开 verbose 看协作
# Agent 设了 verbose=True,运行时会打印每个角色的思考与动作
crew.kickoff(inputs={"product": "龙虾智能体"})

# 输出示例(节选):
# [研究员] 正在搜索 龙虾智能体 定价...
# [写手] 已收到 5 条要点,开始撰写...
# [审校] 发现第 3 条数字无出处,已标注待核实
👀 第一次跑一定开 verbose,你能清楚看到「谁在干什么、卡在哪」,方便调人设和任务描述。

Step 7:沉淀为可复用脚本

7 参数化,下次换产品直接跑
# 把上面封装成 research_crew.py,用命令行传产品名
import sys
from crewai import Crew
# ... 前面定义略 ...
if __name__ == "__main__":
    prod = sys.argv[1]
    print(crew.kickoff(inputs={"product": prod}))

# 使用:
# python research_crew.py "某竞品"
🎉 恭喜!你已拥有一支可复用的「竞品调研小队」。最大收获:把「一个人干三件事」拆成「三个角色各司其职」,产出更稳、更易审。

常见问题速查

你遇到的现象大概率原因 & 解决
报告内容空洞研究员人设/工具不够,或 Task 描述太笼统
Agent 互相读不到对方产出漏写 context=[上游 Task]
费用飙升开 hierarchical 或 verbose 太细,先 sequential 跑通
审校形同虚设reviewer 的 goal 没强调「零容忍编造」,强化 backstory