CrewAI多Agent协作教程:让多个AI分工干活
什么是CrewAI
CrewAI是一个Python多Agent编排框架,让你定义多个AI角色(Agent),每个角色有不同职责、工具和目标,协同完成复杂任务。比如:一个Agent负责调研、一个负责写作、一个负责审核。
与单个AI对话不同,CrewAI让AI像团队一样分工合作,适合内容生产、数据分析、代码审查等复杂工作流。
CrewAI核心概念
| 概念 | 说明 | 类比 |
|---|---|---|
| Agent | 一个AI角色,有角色定义、目标、工具 | 团队成员 |
| Task | 一个具体任务,有描述和预期输出 | 工作分配 |
| Crew | 多个Agent+Task的组合,定义执行顺序 | 团队+项目 |
| Tool | Agent可使用的工具(搜索、计算等) | 工作工具 |
| Process | 任务执行方式(顺序/层级) | 工作流程 |
一、安装CrewAI
pip install crewai crewai-tools
# 验证安装
python -c "import crewai; print(crewai.__version__)"
配置API Key
export OPENAI_API_KEY="sk-xxx"
# 或用其他模型
export ANTHROPIC_API_KEY="sk-ant-xxx"
export DEEPSEEK_API_KEY="sk-xxx"
二、第一个Crew:内容创作团队
我们来创建一个3人AI团队:调研员→写手→编辑,协作写一篇文章。
from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool
# 工具:网络搜索
search_tool = SerperDevTool()
# Agent 1:调研员
researcher = Agent(
role='内容调研员',
goal='搜集关于{topic}的最新信息和数据',
backstory='你是一位资深研究员,擅长快速搜集和整理信息。',
tools=[search_tool],
verbose=True,
llm='gpt-4o'
)
# Agent 2:写手
writer = Agent(
role='内容写手',
goal='根据调研结果写一篇2000字的深度文章',
backstory='你是一位专业写手,擅长把复杂概念讲清楚。',
verbose=True,
llm='gpt-4o'
)
# Agent 3:编辑
editor = Agent(
role='内容编辑',
goal='审核文章质量,修改语法和逻辑问题',
backstory='你是一位严格的技术编辑,注重准确性和可读性。',
verbose=True,
llm='claude-3-5-sonnet'
)
# Task 1:调研
research_task = Task(
description='搜集关于{topic}的以下信息:1.基本概念 2.核心优势 3.应用场景 4.最新进展',
expected_output='一份详细的调研报告,包含数据和案例',
agent=researcher
)
# Task 2:写作
writing_task = Task(
description='根据调研报告写一篇2000字的文章,要求通俗易懂,有实操价值',
expected_output='一篇完整的2000字文章(Markdown格式)',
agent=writer,
context=[research_task] # 依赖调研结果
)
# Task 3:审核
editing_task = Task(
description='审核文章的准确性、逻辑性和可读性,修改问题',
expected_output='审核修改后的最终文章',
agent=editor,
context=[writing_task]
)
# 组建Crew
crew = Crew(
agents=[researcher, writer, editor],
tasks=[research_task, writing_task, editing_task],
process=Process.sequential, # 顺序执行
verbose=True
)
# 启动
result = crew.kickoff(inputs={'topic': 'AI Agent在企业中的应用'})
print(result)
三、执行模式
3.1 顺序模式(Sequential)
任务按顺序执行,前一个的输出是后一个的输入:
crew = Crew(
agents=[agent1, agent2, agent3],
tasks=[task1, task2, task3],
process=Process.sequential
)
3.2 层级模式(Hierarchical)
有一个Manager Agent负责分配任务给其他Agent:
manager = Agent(
role='项目经理',
goal='协调团队高效完成任务',
backstory='你是经验丰富的项目经理。',
llm='gpt-4o'
)
crew = Crew(
agents=[researcher, writer, editor],
tasks=[research_task, writing_task, editing_task],
process=Process.hierarchical,
manager_agent=manager
)
四、自定义工具
给Agent添加自定义工具,让它能执行特定操作:
from crewai.tools import tool
@tool('计算器')
def calculate(expression: str) -> str:
"""计算数学表达式并返回结果"""
try:
result = eval(expression)
return f"计算结果: {result}"
except:
return "计算失败"
@tool('读取文件')
def read_file(filepath: str) -> str:
"""读取指定文件内容"""
with open(filepath, 'r') as f:
return f.read()
# 在Agent中使用
analyst = Agent(
role='数据分析师',
goal='分析数据并生成报告',
backstory='你是数据分析专家。',
tools=[calculate, read_file],
llm='gpt-4o'
)
五、实战案例:自动化代码审查
# Agent 1:代码审查员
reviewer = Agent(
role='代码审查员',
goal='审查代码质量,找出bug和安全问题',
backstory='你是资深安全工程师,精通代码审查。',
llm='claude-3-5-sonnet'
)
# Agent 2:修复工程师
fixer = Agent(
role='代码修复工程师',
goal='根据审查结果修复所有问题',
backstory='你是全栈工程师,擅长修复代码问题。',
llm='gpt-4o'
)
review_task = Task(
description='审查以下Python代码,找出bug、安全问题、性能问题:\n{code}',
expected_output='问题清单,每个问题包含位置、严重程度、修复建议',
agent=reviewer
)
fix_task = Task(
description='根据审查结果修复代码,输出修复后的完整代码',
expected_output='修复后的完整Python代码',
agent=fixer,
context=[review_task]
)
crew = Crew(agents=[reviewer, fixer], tasks=[review_task, fix_task])
result = crew.kickoff(inputs={'code': open('app.py').read()})
提示:CrewAI可以和 Dify 或 n8n 配合使用,CrewAI负责AI决策层,Dify/n8n负责流程执行层。
六、省钱技巧
| 方案 | 模型组合 | 成本/次 | 适合场景 |
|---|---|---|---|
| 全GPT-4o | 3×GPT-4o | ~$0.5 | 高质量输出 |
| 混合 | GPT-4o+DeepSeek | ~$0.1 | 日常任务 |
| 全DeepSeek | 3×DeepSeek | ~$0.02 | 批量处理 |
# 用DeepSeek省钱
researcher = Agent(..., llm='deepseek/deepseek-chat')
writer = Agent(..., llm='deepseek/deepseek-chat')