🧠 图解记忆: CrewAI 先定角色与目标,再让任务和产物沿流程流动,适合分工清晰的团队式协作。
💡 答案要点
CrewAI = 模拟人类团队的多Agent框架
CrewAI核心理念
给每个Agent分配角色(Role)、目标(Goal)、背景(Backstory)
传统:
Agent1(任务: 搜索)
Agent2(任务: 总结)
CrewAI:
Agent1(角色: 研究员, 目标: 找到权威信息, 背景: 10年研究经验)
Agent2(角色: 作家, 目标: 写出引人入胜的文章, 背景: 畅销书作者)CrewAI核心组件
| 组件 | 作用 | 示例 |
|---|---|---|
| Agent | 单个Agent | Researcher / Writer / Reviewer |
| Task | 具体任务 | "调研AI趋势" / "撰写文章" |
| Tool | 工具函数 | SearchTool / FileReadTool |
| Crew | Agent团队 | 组织多个Agent协作 |
| Process | 执行流程 | Sequential(顺序) / Hierarchical(层级) |
CrewAI实战: 内容创作团队
场景: 自动生成技术博客文章
展开 Python 代码示例(99 行)
python
from crewai import Agent, Task, Crew, Process
from langchain.tools import DuckDuckGoSearchRun
# 1. 定义工具
search_tool = DuckDuckGoSearchRun()
# 2. 创建Researcher Agent
researcher = Agent(
role="技术研究员",
goal="找到关于{topic}的最新、最权威的信息",
backstory="""
你是一名资深技术研究员,有10年AI领域经验。
你擅长快速找到前沿论文、技术博客和行业报告。
你只信任权威来源,并能区分炒作和真正的突破。
""",
verbose=True,
allow_delegation=False, # 不能委托给其他Agent
tools=[search_tool]
)
# 3. 创建Writer Agent
writer = Agent(
role="技术作家",
goal="将复杂技术写成通俗易懂的文章",
backstory="""
你是畅销技术书作者,擅长用故事和类比解释复杂概念。
你的文章既有深度又易读,深受开发者喜爱。
你总是用具体例子和代码示例支撑观点。
""",
verbose=True,
allow_delegation=False
)
# 4. 创建Editor Agent
editor = Agent(
role="技术编辑",
goal="确保文章准确性和可读性",
backstory="""
你是技术杂志的资深编辑,对技术准确性要求极高。
你会检查事实、纠正错误、优化表达、统一风格。
你的标准是"无一处错误,无一句冗余"。
""",
verbose=True,
allow_delegation=False
)
# 5. 定义Task
research_task = Task(
description="""
调研{topic}的最新进展:
1. 找到3-5篇权威来源(论文/博客/文档)
2. 总结核心技术点
3. 找出实际应用案例
4. 识别优势和局限性
""",
agent=researcher,
expected_output="详细的调研报告,包含来源链接"
)
writing_task = Task(
description="""
基于调研报告,撰写技术博客:
1. 标题: 吸引眼球且准确
2. 引言: 用故事或问题开篇
3. 正文: 解释技术原理,附代码示例
4. 结论: 总结要点和展望
5. 长度: 1500-2000字
""",
agent=writer,
expected_output="完整的博客文章(Markdown格式)"
)
editing_task = Task(
description="""
审核并优化文章:
1. 检查技术准确性
2. 纠正语法和拼写错误
3. 优化标题和小标题
4. 确保代码示例可运行
5. 统一术语和风格
""",
agent=editor,
expected_output="最终版文章 + 修改说明"
)
# 6. 创建Crew(团队)
content_crew = Crew(
agents=[researcher, writer, editor],
tasks=[research_task, writing_task, editing_task],
process=Process.sequential, # 顺序执行
verbose=2 # 打印详细日志
)
# 7. 执行任务
result = content_crew.kickoff(inputs={"topic": "LLM Agent的记忆系统"})
print(result)
# 输出: 一篇完整的、经过三人协作的高质量技术博客CrewAI执行流程
1. Researcher开始工作
→ 使用搜索工具找资料
→ 阅读论文和博客
→ 总结关键信息
→ 输出: 调研报告
2. Writer接收Researcher的输出
→ 阅读调研报告
→ 提取核心技术点
→ 撰写文章
→ 输出: 初稿
3. Editor接收Writer的输出
→ 审核技术准确性
→ 优化表达
→ 纠正错误
→ 输出: 最终稿CrewAI高级特性
特性1: Agent间委托(Delegation)
python
# 允许Manager委托任务给Specialist
manager = Agent(
role="项目经理",
goal="协调团队完成项目",
allow_delegation=True, # 可以委托
backstory="你是项目管理专家,善于分配任务和协调资源"
)
specialist = Agent(
role="数据分析专家",
goal="分析数据",
allow_delegation=False,
backstory="你专注数据分析"
)
# Manager可以说: "我将这个数据分析任务委托给Specialist"特性2: 层级流程(Hierarchical Process)
python
# 有明确的上下级关系
content_crew = Crew(
agents=[manager, researcher, writer, editor],
tasks=[...],
process=Process.hierarchical, # 层级模式
manager_llm="qwen3.5-plus" # Manager使用的LLM
)
# 执行流程:
"""
Manager: "我分配任务:
- Researcher: 调研AI趋势
- Writer: 撰写文章
- Editor: 审核文章"
→ Researcher完成调研
→ Manager检查,满意后:
Manager: "Writer,基于调研撰写文章"
→ Writer完成初稿
→ Manager检查,交给Editor
Manager: "Editor,审核文章"
→ Editor完成审核
→ Manager验收最终结果
"""特性3: 自定义工具
python
from crewai_tools import tool
@tool("Code Executor")
def execute_python_code(code: str) -> str:
"""执行Python代码并返回结果"""
try:
exec_globals = {}
exec(code, exec_globals)
return str(exec_globals.get("result", "执行成功"))
except Exception as e:
return f"错误: {str(e)}"
# 分配给Agent
coder = Agent(
role="Python开发",
tools=[execute_python_code],
backstory="你是Python专家"
)CrewAI实战案例: 招聘流程自动化
展开 Python 代码示例(67 行)
python
# 场景: 自动筛选简历+生成面试题
# 1. Recruiter Agent
recruiter = Agent(
role="招聘专员",
goal="筛选符合岗位要求的候选人",
backstory="你有5年招聘经验,善于从简历中发现潜力"
)
# 2. Technical Interviewer Agent
tech_interviewer = Agent(
role="技术面试官",
goal="设计针对性的面试题",
backstory="你是资深AI工程师,了解如何考察技术深度"
)
# 3. HR Manager Agent
hr_manager = Agent(
role="HR经理",
goal="综合评估候选人",
backstory="你负责最终决策,平衡技术能力和文化契合度"
)
# Tasks
screen_task = Task(
description="""
筛选简历,评估候选人:
- 技术栈匹配度
- 项目经验相关性
- 教育背景
输出: 推荐/不推荐 + 理由
""",
agent=recruiter
)
interview_task = Task(
description="""
为推荐的候选人设计面试题:
- 5道技术题(基础+进阶)
- 2道项目题
- 1道开放题
""",
agent=tech_interviewer
)
decision_task = Task(
description="""
综合评估:
- 简历筛选结果
- 面试题难度设计
输出: 是否进入面试 + 面试官建议
""",
agent=hr_manager
)
# Crew
hiring_crew = Crew(
agents=[recruiter, tech_interviewer, hr_manager],
tasks=[screen_task, interview_task, decision_task],
process=Process.sequential
)
# 执行
result = hiring_crew.kickoff(inputs={
"resume": "张三的简历.pdf",
"job_desc": "AI应用工程师岗位描述"
})面试话术:
"CrewAI的特色是角色驱动,每个Agent有明确的role/goal/backstory,更像真实团队。我用CrewAI做过内容创作:Researcher调研+Writer撰写+Editor审核,顺序执行。CrewAI优势是结构清晰,适合分工明确的任务;缺点是灵活性不如AutoGen。实战中我用Process.hierarchical实现层级管理,Manager分配任务,其他Agent执行。关键是写好backstory,让Agent有'个性',生成的内容更有针对性。"
