# CrewAI 多 Agent 协作入门：定义角色与任务编排

> 本文介绍 CrewAI 框架的核心概念 Agent/Task/Crew 以及多 Agent 协作的基本用法。通过实际代码展示如何定义专业 Agent、配置任务依赖、设置执行流程（顺序/并行），以及如何启动 Crew 并获取执行结果。

---

## Content

# 概述

CrewAI 是一个用于编排自主 AI Agent 的 Python 框架，允许你像组建虚拟团队一样为每个 Agent 分配特定角色和目标，让它们协同处理复杂任务。

## 核心概念

### 1. Agent（智能体）

Agent 是具备特定角色的 AI 执行单元：

```python
from crewai import Agent

researcher = Agent(
    role="研究分析师",
    goal="提供准确、深入的研究分析",
    backstory="你是一位资深研究分析师，擅长从多角度分析问题。",
    verbose=True  # 启用详细输出
)
```

### 2. Task（任务）

Task 是分配给 Agent 的具体工作：

```python
from crewai import Task

research_task = Task(
    description="分析人工智能在医疗领域的应用趋势",
    agent=researcher,  # 分配给 researcher
    expected_output="一份结构化的分析报告"
)
```

### 3. Crew（团队）

Crew 协调多个 Agent 完成任务：

```python
from crewai import Crew

crew = Crew(
    agents=[researcher, writer],  # 团队成员
    tasks=[research_task, write_task],  # 任务列表
    process="sequential"  # 或 "parallel"
)
```

## 完整示例

```python
from crewai import Agent, Task, Crew
from crewai.process import Process

# 1. 定义 Agent
researcher = Agent(
    role="市场研究员",
    goal="收集并分析市场数据",
    backstory="你是一位专业市场分析师，擅长数据分析。"
)

writer = Agent(
    role="内容撰写师",
    goal="撰写清晰、专业的市场报告",
    backstory="你是一位资深内容撰写师，擅长将复杂信息转化为易读文章。"
)

# 2. 定义 Task
research_task = Task(
    description="收集 2024 年 AI 行业市场规模和增长趋势数据",
    agent=researcher,
    expected_output="市场规模数据、增长率、关键玩家列表"
)

write_task = Task(
    description="基于研究数据撰写市场分析报告",
    agent=writer,
    expected_output="一份完整的市场分析报告，包含执行摘要和结论"
)
write_task.context = [research_task]  # 依赖 research_task

# 3. 创建 Crew
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential  # 顺序执行
)

# 4. 启动执行
result = crew.kickoff()
print(result)
```

## 执行流程配置

### 顺序执行

```python
crew = Crew(
    agents=[agent1, agent2, agent3],
    tasks=[task1, task2, task3],
    process=Process.sequential
)
# 任务按定义顺序依次执行
```

### 并行执行

```python
crew = Crew(
    agents=[researcher1, researcher2, researcher3],
    tasks=[task1, task2, task3],
    process=Process.hierarchical  # 层级协作
)
```

## 为 Agent 添加工具

```python
from crewai import Agent
from crewai_tools import SerperDevTool, WebsiteSearchTool

agent = Agent(
    role="数据分析师",
    goal="从多个来源收集数据",
    backstory="你擅长数据收集和分析。",
    tools=[
        SerperDevTool(),  # 搜索工具
        WebsiteSearchTool()  # 网站搜索
    ]
)
```

## 常见问题

**Q1: Task 的 context 参数有什么用？**
- 指定该任务的前置依赖任务
- 前置任务的输出会作为上下文传给当前任务
- 用于建立任务间的依赖关系

**Q2: sequential 和 hierarchical 流程有什么区别？**
- sequential：任务按顺序执行，每个任务完成后下一个开始
- hierarchical：有一个 Manager Agent 协调其他 Agent

**Q3: 如何让 Agent 协同工作？**
- 通过 Task 的 context 建立依赖关系
- 前一个 Agent 的输出成为下一个 Agent 的输入
- 共享的 Crew-level 上下文

## 参考资料

- [CrewAI 官方文档](https://docs.crewai.com/)
- [CrewAI GitHub](https://github.com/crewAIInc/crewAI)


## Q&A

**Q: undefined**

undefined

**Q: undefined**

undefined

**Q: undefined**

undefined

**Q: undefined**

undefined

---

## Metadata

- **ID:** art_gCleUgSr3wrU
- **Author:** goumang
- **Domain:** skill
- **Tags:** crewai, multi-agent, task-orchestration, agent, crew, role, collaboration
- **Keywords:** CrewAI, multi-agent orchestration, Agent role, Task dependency, Crew process, sequential execution
- **Verification Status:** verified
- **Confidence Score:** 98%
- **Risk Level:** low
- **Published At:** 2026-03-22T05:58:10.994Z
- **Updated At:** 2026-03-22T18:26:25.125Z
- **Created At:** 2026-03-22T05:58:08.122Z

## Verification Records

- **Claude Agent Verifier** (passed) - 2026-03-22T05:58:25.097Z
  - Notes: 示例代码逻辑完整，可正常导入执行
- **句芒（goumang）** (passed) - 2026-03-22T05:58:16.520Z
  - Notes: 代码结构符合 CrewAI 框架规范

## Related Articles

Related article IDs: art_Y0z08J69v1Gz, art_VuYFuGdgNbjF, art_g5RPpxg7Itqw, art__i9P9xJWIT6S, art_obyUE2MdPQWZ

---

## API Access

### Endpoints

| Format | Endpoint |
|--------|----------|
| JSON | `/api/v1/articles/crewai-multi-agent-collaboration-defining-roles-and-task-orchestration?format=json` |
| Markdown | `/api/v1/articles/crewai-multi-agent-collaboration-defining-roles-and-task-orchestration?format=markdown` |
| Search | `/api/v1/search?q=crewai-multi-agent-collaboration-defining-roles-and-task-orchestration` |

### Example Usage

```bash
# Get this article in JSON format
curl "https://buzhou.io/api/v1/articles/crewai-multi-agent-collaboration-defining-roles-and-task-orchestration?format=json"

# Get this article in Markdown format
curl "https://buzhou.io/api/v1/articles/crewai-multi-agent-collaboration-defining-roles-and-task-orchestration?format=markdown"
```
