构建多 Agent 协作系统,用 CrewAI 实现角色驱动的 Agent 团队设计。
构建多 Agent 协作系统,理解角色驱动的 Agent 团队设计。
单 Agent 的局限:
- 一个 LLM 要处理所有类型的任务
- Prompt 越来越长,越来越难维护
- 无法利用"专人做专事"的优势
Multi-Agent 的思路:像管理一个小团队一样管理 AI。
Agent (员工) + Task (任务) + Crew (团队) + Process (流程) = 协作系统
Agent(
role="论文检索专家", # 角色
goal="搜索最新的相关论文", # 目标
backstory="你是经验丰富的...", # 背景(个性化)
tools=[search_tool], # 专属工具
allow_delegation=False, # 是否允许委派
)
Task(
description="搜索 3 篇 BEV 感知论文", # 任务描述
expected_output="论文列表,含标题和摘要", # 期望输出格式
agent=paper_searcher, # 分配给谁
)
| Process | 行为 |
|---|---|
sequential |
按顺序执行 Task 1 → Task 2 → Task 3 |
hierarchical |
Manager Agent 动态分配任务 |
crewai_basics.py)
from crewai import Agent, Task, Crew, Process
# 定义 Agent
searcher = Agent(role="论文检索专家", goal="...", backstory="...")
analyzer = Agent(role="论文分析专家", goal="...", backstory="...")
# 定义 Task
task1 = Task(description="搜索论文", agent=searcher)
task2 = Task(description="分析论文", agent=analyzer)
# 创建 Crew
crew = Crew(
agents=[searcher, analyzer],
tasks=[task1, task2],
process=Process.sequential, # Task 1 → Task 2
)
# 执行
result = crew.kickoff()
hierarchical_crew.py)1. role: 简洁明确("CV 研究专家" 比 "助手" 好)
2. goal: 可衡量的目标
3. backstory: 赋予个性,影响输出风格
4. tools: 只给需要的工具
# 不需要给 Manager 分配具体 task
# Manager 会自动把任务委派给最合适的 agent
manager = Agent(role="研究主管", allow_delegation=True)
crew = Crew(agents=[manager, expert1, expert2], process=Process.hierarchical)
multi_crew_research.py)
Literature Searcher → Paper Analyzer → Synthesizer → Writer
(搜索文献) (分析论文) (综合归纳) (撰写报告)
每个 Agent 专注一个环节,信息自动在 Task 间传递。
CrewAI 适合"流水线"式协作,LangGraph 适合"图"式路由。
混合模式:LangGraph 作为主编排器,每个节点内部是一个 CrewAI Crew。
| 概念 | 说明 |
|---|---|
| Agent | 有角色(role)、目标(goal)、背景(backstory)的 AI |
| Task | 工作单元,有描述和期望输出 |
| Crew | Agent 集合 + Task 集合 |
| sequential | 固定顺序流水线 |
| hierarchical | Manager 动态委派 |
| 角色设计 | 好的 backstory 显著影响输出质量 |