引言
CrewAI以其简洁的API和角色扮演式多智能体设计,在2026年获得了大量生产用户。与AutoGen相比,CrewAI更注重"团队协作"的自然性。本文将分享CrewAI在生产环境中的实践经验。
CrewAI核心概念
Crew(团队)
一个Crew由多个Agent组成,每个Agent有特定角色、目标和工具。
Agent(成员)
from crewai import Agent, Task, Crew, Process
researcher = Agent(
role='市场研究员',
goal='收集和分析市场数据',
backstory='你是一位有10年经验的市场研究专家,擅长数据分析和趋势预测。',
tools=[search_tool, analytics_tool],
llm='gpt-5',
verbose=True
)
writer = Agent(
role='技术写作专家',
goal='将研究结果转化为清晰的报告',
backstory='你是一位资深技术写作专家,擅长将复杂数据转化为易懂的报告。',
llm='claude-4-opus',
verbose=True
)
editor = Agent(
role='内容编辑',
goal='确保报告质量和一致性',
backstory='你是一位严谨的编辑,对细节和质量有极高要求。',
llm='gpt-5',
verbose=True
)
Task(任务)
research_task = Task(
description='研究2026年AI市场趋势,重点关注LLM和Agent领域。',
agent=researcher,
expected_output='一份包含数据和分析的市场研究报告',
context=[]
)
writing_task = Task(
description='基于研究报告,撰写一篇2000字的行业分析文章。',
agent=writer,
expected_output='一篇2000字的文章',
context=[research_task] # 依赖研究任务的输出
)
editing_task = Task(
description='审核并修改文章,确保准确性和可读性。',
agent=editor,
expected_output='最终版文章',
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()
2026年新特性
1. 流程类型
# 顺序流程
crew = Crew(agents=agents, tasks=tasks, process=Process.sequential)
# 层级流程(有管理者)
crew = Crew(
agents=agents,
tasks=tasks,
process=Process.hierarchical,
manager_llm='gpt-5'
)
# 自定义流程
from crewai.process import CustomProcess
class MyProcess(CustomProcess):
def run(self, crew, tasks):
# 自定义执行逻辑
pass
2. 工具集成
from crewai.tools import tool
@tool("搜索网络")
def search(query: str) -> str:
"""搜索互联网获取最新信息"""
return web_search(query)
@tool("执行代码")
def execute_code(code: str) -> str:
"""执行Python代码并返回结果"""
return exec_python(code)
@tool("读取文件")
def read_file(path: str) -> str:
"""读取本地文件"""
with open(path) as f:
return f.read()
3. 记忆系统
crew = Crew(
agents=agents,
tasks=tasks,
memory=True, # 启用记忆
memory_config={
"provider": "chroma", # 向量数据库
"embedder": "bge-large-zh",
"long_term": True,
"short_term": True
}
)
4. 人机协作
from crewai import HumanInput
# 在关键步骤加入人工审核
task = Task(
description='生成营销文案',
agent=writer,
human_input=HumanInput(
enabled=True,
check_every=1, # 每步都检查
prompt="请审核以上内容,输入修改意见或'approve'确认。"
)
)
生产实践经验
实践一:角色设计
# 好的角色设计
good_agent = Agent(
role='资深安全审计员', # 具体角色
goal='发现代码中的安全漏洞并提供修复建议', # 明确目标
backstory='''你是一位有15年经验的网络安全专家,
曾在Google和腾讯安全团队工作,精通OWASP Top 10漏洞
和安全编码最佳实践。''', # 丰富背景
tools=[code_analyzer, vulnerability_db],
llm='gpt-5'
)
# 不好的角色设计
bad_agent = Agent(
role='助手', # 太模糊
goal='帮忙', # 不明确
backstory='你是一个AI助手。' # 太简单
)
实践二:任务分解
# 好的任务分解:颗粒度适中
tasks = [
Task(description='分析需求文档,提取功能点', agent=analyst),
Task(description='为每个功能点设计测试用例', agent=test_designer),
Task(description='编写自动化测试脚本', agent=test_engineer),
Task(description='执行测试并生成报告', agent=test_runner),
]
# 不好的任务分解:太粗
tasks = [
Task(description='做测试', agent=tester), # 太笼统
]
实践三:错误处理
from crewai import CrewError
try:
result = crew.kickoff()
except CrewError as e:
print(f"Crew执行失败:{e}")
# 降级处理
result = fallback_process()
# Agent级别错误处理
class SafeAgent(Agent):
def execute_task(self, task):
try:
return super().execute_task(task)
except Exception as e:
return f"任务执行失败:{e}。请重试或调整策略。"
实践四:成本控制
# 根据任务复杂度选择模型
researcher = Agent(
role='研究员',
llm='deepseek-v4', # 研究用便宜模型
max_iter=5
)
writer = Agent(
role='作家',
llm='claude-4-opus', # 写作用高质量模型
max_iter=3
)
# 设置预算上限
crew = Crew(
agents=[researcher, writer],
tasks=tasks,
max_cost=1.0, # 最大花费$1
)
实践五:质量保证
# 添加质量检查Agent
quality_checker = Agent(
role='质量检查员',
goal='确保输出质量达到标准',
backstory='你是一位严格的质量检查专家。',
llm='gpt-5'
)
quality_task = Task(
description='检查最终输出的质量,评分并给出改进建议。',
agent=quality_checker,
expected_output='质量评分报告'
)
# 在流程末尾加入质量检查
crew = Crew(
agents=[researcher, writer, editor, quality_checker],
tasks=[research_task, writing_task, editing_task, quality_task]
)
部署方案
API服务
from fastapi import FastAPI
from crewai import Crew
app = FastAPI()
@app.post("/analyze")
async def analyze(topic: str):
crew = create_research_crew(topic)
result = crew.kickoff()
return {"result": result}
@app.post("/analyze/stream")
async def analyze_stream(topic: str):
crew = create_research_crew(topic)
async for chunk in crew.kickoff_stream():
yield chunk
异步执行
import asyncio
async def run_crews_concurrently(topics):
crews = [create_research_crew(topic) for topic in topics]
results = await asyncio.gather(*[crew.kickoff_async() for crew in crews])
return results
监控与调试
from crewai import CrewMonitor
monitor = CrewMonitor()
@monitor.trace
def run_crew(crew, input_data):
result = crew.kickoff(inputs=input_data)
return result
# 查看执行详情
monitor.print_summary()
# 包括:每个Agent的执行时间、token消耗、输出质量
应用场景
场景一:内容生产
# 内容生产团队
content_crew = Crew(
agents=[
Agent(role='选题策划', ...),
Agent(role='资料收集', ...),
Agent(role='内容撰写', ...),
Agent(role='排版编辑', ...),
Agent(role='SEO优化', ...),
],
tasks=[...],
process=Process.sequential
)
场景二:代码审查
# 代码审查团队
review_crew = Crew(
agents=[
Agent(role='代码审查员', tools=[read_file, code_analyzer]),
Agent(role='安全审计员', tools=[vulnerability_scanner]),
Agent(role='性能分析师', tools=[profiler]),
Agent(role='报告生成者'),
],
tasks=[...]
)
场景三:数据分析
# 数据分析团队
data_crew = Crew(
agents=[
Agent(role='数据工程师', tools=[sql_tool, python_tool]),
Agent(role='数据分析师', tools=[statistical_tool]),
Agent(role='可视化专家', tools=[chart_tool]),
Agent(role='报告撰写者'),
],
tasks=[...]
)
结语
CrewAI在2026年已经成为生产环境中最流行的多智能体框架之一。它的角色扮演式设计让AI协作变得自然直观,丰富的工具集成和记忆系统让它能胜任复杂的实际任务。
记住:好的Crew就像好的团队——角色明确、分工合理、流程清晰、质量可控。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。