【智能体开发】【开发工具】【入门】2.CrewAI入门
在 文件中,为每个智能体分配一个具体任务,并定义期望的输出格式。对{topic}进行深入研究。确保找到所有有趣且相关的信息,考虑到当前年份是2025年。一个包含10个关于{topic}最相关信息的要点列表。agent: researcher # 指定此任务由researcher执行审查获得的内容,并将每个主题扩展为报告的完整部分。确保报告详细且包含所有相关信息。一份完整的报告,包含主要主题,
CrewAI是一个强大的多智能体框架,让你能像组建团队一样,指派不同的AI角色协作完成复杂任务。这份入门指南会帮你理清核心概念,并提供一个可以直接上手的实践路径。
🧱 CrewAI 四大核心组件
理解这四个基本概念,就能掌握CrewAI的核心逻辑。
|
组件 |
是什么 |
举个例子 |
|
Agent (智能体) |
团队中的具体"员工",拥有明确的角色、目标和背景故事。 |
"高级研究员":目标"发现最新AI趋势" |
|
Task (任务) |
指派给一个Agent去完成的具体工作,包含清晰描述和预期产出。 |
"AI趋势调研":产出10个要点的调研报告 |
|
Tool (工具) |
为Agent配备的"超能力",使其能执行具体操作,如搜索、代码运行等。 |
|
|
Crew (团队) |
统筹调度Agents、Tasks和Process的管理层,是执行单元。 |
包含研究员、分析师等多个Agent的团队 |
|
Process (流程) |
定义Agents如何协作和执行任务的策略。 |
顺序(sequential) 或 层级(hierarchical) 流程 |
💻 快速上手实战:从零到一搭建AI研究团队
接下来,我们通过一个实际的AI研究项目来跑通整个流程。
1. 准备工作
- Python环境:确保已安装Python 3.10至3.13版本。
- API密钥:注册OpenAI等大模型服务商并获取API密钥。如使用网络搜索功能,需准备Serper.dev的API密钥。
2. 安装与创建项目
CrewAI推荐使用 uv 作为包管理工具。用以下命令安装uv、CrewAI CLI,并创建一个名为 latest-ai-development 的新项目。
# 1. 安装 uv 包管理器 (macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. 安装 CrewAI CLI
uv tool install crewai
# 3. 创建新项目,CLI会引导你选择LLM提供商(如OpenAI)并输入API Key
crewai create crew latest-ai-development
# 4. 进入项目目录
cd latest-ai-development
3. 配置智能体
在 src/latest_ai_development/config/agents.yaml 文件中,定义两个智能体的角色、目标和背景故事。你还可以直接为他们指定工具。
# agents.yaml
researcher:
role: >
{topic}高级数据研究员
goal: >
发现{topic}领域的前沿发展
backstory: >
你是一位经验丰富的研究员,擅长发现{topic}领域的最新发展。
你以能够找到最相关信息并以清晰简洁的方式呈现而闻名。
tools:
- serper_dev_tool # 为研究员配备搜索工具
reporting_analyst:
role: >
{topic}报告分析师
goal: >
基于{topic}数据分析和研究发现创建详细报告
backstory: >
你是一位细致入微的分析师,对细节有着敏锐的洞察力。
你擅长将复杂数据转化为清晰简洁的报告。
4. 定义任务
在 src/latest_ai_development/config/tasks.yaml 文件中,为每个智能体分配一个具体任务,并定义期望的输出格式。
# tasks.yaml
research_task:
description: >
对{topic}进行深入研究。确保找到所有有趣且相关的信息,考虑到当前年份是2025年。
expected_output: >
一个包含10个关于{topic}最相关信息的要点列表。
agent: researcher # 指定此任务由researcher执行
reporting_task:
description: >
审查获得的内容,并将每个主题扩展为报告的完整部分。
确保报告详细且包含所有相关信息。
expected_output: >
一份完整的报告,包含主要主题,每个主题都有完整的信息部分。
以不带'```'的markdown格式呈现。
agent: reporting_analyst # 指定此任务由reporting_analyst执行
output_file: report.md # 将报告输出到文件
5. 编排团队
在 src/latest_ai_development/crew.py 中,将定义好的智能体和任务组合成一个Crew,并设置执行流程为顺序执行(Process.sequential)。
# crew.py
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai_tools import SerperDevTool
@CrewBase
class LatestAiDevelopmentCrew():
"""最新AI发展研究团队"""
agents_config = 'config/agents.yaml'
tasks_config = 'config/tasks.yaml'
@agent
def researcher(self) -> Agent:
return Agent(
config=self.agents_config['researcher'],
verbose=True,
tools=[SerperDevTool()] # 实例化并使用工具
)
@agent
def reporting_analyst(self) -> Agent:
return Agent(
config=self.agents_config['reporting_analyst'],
verbose=True
)
@task
def research_task(self) -> Task:
return Task(config=self.tasks_config['research_task'])
@task
def reporting_task(self) -> Task:
return Task(config=self.tasks_config['reporting_task'])
@crew
def crew(self) -> Crew:
"""创建最新AI发展研究团队"""
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential, # 设置流程为顺序执行
verbose=True,
)
6. 运行并验证
一切准备就绪,在项目根目录下运行命令即可启动你的AI团队。
crewai run
系统会提示你输入研究主题(topic),比如"量子计算"。随后,你将在控制台看到"研究员"进行搜索,然后"分析师"整理报告的完整协作过程。最终的报告将保存在项目根目录的 report.md 文件中。
⚙️ 核心组件进阶指南
掌握了基础之后,你可以通过以下配置,让AI团队更加强大和可控。
1. Agent:定制团队成员
除了role、goal和backstory,Agent还有许多高级配置选项,可以精细化控制其行为。
|
参数 |
作用 |
示例 |
|
|
可为每个Agent指定不同的大语言模型。 |
|
|
|
给Agent赋予具体能力,如搜索、计算、调用API等。 |
|
|
|
允许Agent将任务委派给其他Agent。 |
|
|
|
设置Agent在给出最终答案前的最大推理步数,防止陷入死循环。 |
|
|
|
开启详细日志,有助于调试。 |
|
2. Process:定义团队协作模式
CrewAI主要支持两种协作模式。
- Sequential Process (顺序流程):任务按列表顺序执行,下一个任务可依赖上一个任务的输出,适合有明确上下游依赖的工作流。
- Hierarchical Process (层级流程):引入一个"管理Agent",由它负责规划、分配和验证任务,模拟现实世界中的管理模式。
3. Task:设计清晰的工作指令
一个精心设计的任务,能让Agent的目标更明确。
-
description:清晰、具体地描述任务要求,可以包含步骤提示。 -
expected_output:明确输出格式(如Markdown、JSON列表),有助于提升结果质量。 -
agent:将任务分配给某个特定的Agent。 -
context:通过设置任务间的依赖关系,实现工作流的串联。 -
output_file:直接将结果保存到指定文件,便于后续使用。
4. Tool:扩展Agent的“超能力”
工具是让Agent与现实世界交互的桥梁。
- 内置工具:
crewai_tools包提供 SerperDevTool (网页搜索) 、PDFSearchTool (文档检索) 等常用工具。 - 自定义工具:可通过继承
BaseTool 类,或使用 @tool 装饰器来封装自己的函数为Agent工具。
💡 实用技巧与最佳实践
- 设置"护栏":为防止Agent产生幻觉或陷入死循环,设置
max_iter、max_execution_time等限制。 - 启用"记忆":通过设置
memory=True让Agent拥有短期、长期和实体记忆,这对于处理多轮对话和长上下文任务非常关键。 - 任务拆分原则:确保每个任务粒度适中,指令清晰,以便获得高质量的产出。
- 善用回调函数:利用
step_callback等函数,实时监控每个Agent的执行步骤,方便调试。
📚 学习资源
- 🚀 官方文档:提供从快速入门、核心概念到API参考的完整指南。
- 💻 GitHub仓库:可以在这里找到官方示例、源码,并跟踪项目更新。
- 🎬 视频教程:推荐
Codebasics等频道的系列教程,适合跟着动手实践。 - 📝 社区博客:许多开发者会分享深入的实战教程和踩坑经验。
- 💬 社区论坛:加入CrewAI的Discord等社区,与其他开发者交流并解决开发中遇到的问题。
CrewAI为构建复杂、可扩展的AI应用提供了一个清晰的蓝图。上手之后,如果对某个具体功能或应用场景有更深入的问题,随时都可以再来问我~
更多推荐



所有评论(0)