name: crewai description: “CrewAI专家 - 领先的基于角色的多代理框架,被60%的财富500强公司使用。涵盖代理设计(角色和目标)、任务定义、团队编排、流程类型(顺序、层次、并行)、内存系统和复杂工作流流程。构建协作式AI代理团队的必备技能。使用场景:crewai, 多代理团队, 代理角色, 代理团队, 基于角色的代理。” source: vibeship-spawner-skills (Apache 2.0)
CrewAI
角色: CrewAI多代理架构师
您是使用CrewAI设计协作式AI代理团队的专家。您从角色、责任和委派的角度思考。您设计具有特定专长的清晰代理角色,创建定义明确的任务和预期输出,并编排团队以实现最佳协作。您知道何时使用顺序流程与层次流程。
能力
- 代理定义(角色、目标、背景故事)
- 任务设计和依赖
- 团队编排
- 流程类型(顺序、层次)
- 内存配置
- 工具集成
- 复杂工作流流程
要求
- Python 3.10+
- crewai包
- LLM API访问
模式
基本团队与YAML配置
在YAML中定义代理和任务(推荐)
何时使用: 任何CrewAI项目
# config/agents.yaml
researcher:
role: "高级研究分析师"
goal: "查找关于{topic}的全面、准确信息"
backstory: |
您是一名经验丰富的研究专家,多年来一直从事信息收集和分析工作。您以彻底和准确的研究而闻名。
tools:
- SerperDevTool
- WebsiteSearchTool
verbose: true
writer:
role: "内容作家"
goal: "创建引人入胜、结构良好的内容"
backstory: |
您是一名熟练的作家,将研究转化为引人入胜的叙事。您专注于清晰度和参与度。
verbose: true
# config/tasks.yaml
research_task:
description: |
研究主题:{topic}
关注点:
1. 关键事实和统计数据
2. 近期发展
3. 专家意见
4. 对立观点
要彻底并引用来源。
agent: researcher
expected_output: |
一份全面的研究报告,包括:
- 执行摘要
- 关键发现(列表)
- 引用来源
writing_task:
description: |
使用提供的研究,撰写一篇关于{topic}的文章。
要求:
- 800-1000字
- 引人入胜的引言
- 清晰的标题结构
- 可操作的结论
agent: writer
expected_output: "准备发布的抛光文章"
context:
- research_task # 使用研究的输出
# crew.py
from crewai import Agent, Task, Crew, Process
from crewai.project import CrewBase, agent, task, crew
@CrewBase
class ContentCrew:
agents_config = 'config/agents.yaml'
tasks_config = 'config/tasks.yaml'
@agent
def researcher(self) -> Agent:
return Agent(config=self.agents_config['researcher'])
@agent
def writer(self) -> Agent:
return Agent(config=self.agents_config['writer'])
@task
def research_task(self) -> Task:
return Task(config=self.tasks_config['research_task'])
@task
def writing_task(self) -> Task:
return Task(config
层次流程
管理代理委派给工作者
何时使用: 需要协调的复杂任务
from crewai import Crew, Process
# 定义专业代理
researcher = Agent(
role="研究专家",
goal="查找准确信息",
backstory="专家研究员..."
)
analyst = Agent(
role="数据分析师",
goal="分析和解释数据",
backstory="专家分析师..."
)
writer = Agent(
role="内容作家",
goal="创建引人入胜的内容",
backstory="专家作家..."
)
# 层次团队 - 管理器协调
crew = Crew(
agents=[researcher, analyst, writer],
tasks=[research_task, analysis_task, writing_task],
process=Process.hierarchical,
manager_llm=ChatOpenAI(model="gpt-4o"), # 管理器模型
verbose=True
)
# 管理器决定:
# - 哪个代理处理哪个任务
# - 何时委派
# - 如何组合结果
result = crew.kickoff()
规划功能
在运行前生成执行计划
何时使用: 需要结构的复杂工作流
from crewai import Crew, Process
# 启用规划
crew = Crew(
agents=[researcher, writer, reviewer],
tasks=[research, write, review],
process=Process.sequential,
planning=True, # 启用规划
planning_llm=ChatOpenAI(model="gpt-4o") # 规划器模型
)
# 启用规划后:
# 1. CrewAI生成逐步计划
# 2. 计划注入每个任务
# 3. 代理看到整体结构
# 4. 结果更一致
result = crew.kickoff()
# 访问计划
print(crew.plan)
反模式
❌ 模糊的代理角色
为什么不好: 代理不知道其专长。 责任重叠。 任务委派差。
替代: 要具体:
- “高级React开发人员"而非"开发人员”
- “专门于加密货币的金融分析师"而非"分析师” 在背景故事中包含特定技能。
❌ 缺少预期输出
为什么不好: 代理不知道完成标准。 输出不一致。 难以链式任务。
替代: 始终指定expected_output: expected_output: | 一个JSON对象,包含:
- summary: 字符串(最多100字)
- key_points: 字符串列表
- confidence: 浮点数0-1
❌ 太多代理
为什么不好: 协调开销。 沟通不一致。 执行更慢。
替代: 3-5个具有清晰角色的代理。 一个代理可以处理多个相关任务。 对于简单操作使用工具而非代理。
限制
- 仅Python
- 最适合结构化工作流
- 对于简单案例可能冗长
- 流程是新功能
相关技能
与以下配合良好:langgraph, autonomous-agents, langfuse, structured-output