1.1 什么是 CrewAI?

CrewAI 是一个创新的开源多智能体编排框架,它的主要目的是通过协调多个 AI智能体的协作来完成复杂任务CrewAI 模拟了现实世界中的工作团队,让不同角色的智能体能够自主地相互委派任务和交流,从而实现比单一语言模型更强大的性能表现。

2.1 核心组件

🤖 Agent (代理)
代理是具有特定角色、目标和能力的 AI 实体。
关键属性:
● role:代理的角色(如"研究员"、“作家”)
● goal:代理要实现的目标
● backstory:代理的背景故事,帮助 LLM 更好地理解角色
● tools:代理可以使用的工具列表
● llm:使用的语言模型
● memory:是否启用记忆功能
📋 Task (任务)
任务是代理需要完成的具体工作单元。
关键属性:
● description:任务的详细描述
● agent:负责执行任务的代理
● expected_output:期望的输出格式
● context:依赖的其他任务(任务依赖)
● output_file:输出文件路径
👥 Crew (团队)
团队是代理和任务的组织结构,负责协调整个工作流程。
关键属性:
● agents:团队中的代理列表
● tasks:要执行的任务列表
● process:执行流程(顺序/分层)
● verbose:是否显示详细执行日志
6●
:是否启用团队记忆
memory
🔄 Flow (流程)
流程提供更精细的工作流控制,支持条件逻辑、循环和状态管理。
特性:
● @start:定义流程的起点
● @listen:监听特定事件
● @router:根据条件路由
● 状态持久化和恢复

3 安装与环境配置

请先确定你的电脑环境中有无python3.9到3.12的环境

python3 --version

以及uv工具

3.1下载uv

linux/mac

curl -LsSf https://astral.sh/uv/install.sh | sh
或者
wget -qO- https://astral.sh/uv/install.sh | sh

windows

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

3.2安装 CrewAI

uv tool install crewai

3.3验证 crewai 是否已安装

uv tool list

更新 crewai

uv tool install crewai --upgrade

4.创建打一个crew ai项目

4.1脚手架搭建

crewai create crew <项目名称>

这会创建一个具有以下结构的全新crew项目:

my_project/
├── .gitignore
├── knowledge/
├── pyproject.toml
├── README.md
├── .env
└── src/
    └── my_project/
        ├── __init__.py
        ├── main.py
        ├── crew.py
        ├── tools/
        │   ├── custom_tool.py
        │   └── __init__.py
        └── config/
            ├── agents.yaml
            └── tasks.yaml

您的项目将包含以下必需文件:
官网截图
首先编辑 agents.yaml 和 tasks.yaml 以定义您agent的行为。
将敏感信息如 API 密钥保存在 .env .

如果您需要安装额外的包,请使用:

uv add <package-name>

运行crew请在项目根目录下执行以下命令

crewai run

4.2完整搭建流程(示例)

在 5 分钟内使用 CrewAI 构建你的第一个 AI 智能体(Agent)。

构建你的第一个 CrewAI 智能体

让我们创建一个简单的“团队(Crew)”,它将帮助我们针对特定主题或领域,对“最新的人工智能发展动态”进行研究报告

在开始之前,请确保你已完成 CrewAI 的安装。如果尚未安装,可以按照安装指南进行操作。

按照以下步骤开启你的“智能体团队构建”之旅!🚣‍♂️

步骤 1:创建你的智能体团队

在终端中运行以下命令,创建一个新的智能体团队项目。这将生成一个名为 latest-ai-development 的新目录,其中包含该团队所需的基础结构。

crewai create crew latest-ai-development

步骤 2:进入新创建的智能体团队项目目录

cd latest-ai-development

步骤 3:修改 agents.yaml 文件

你可以根据实际使用场景,按需修改智能体(Agent)的配置,也可以直接将以下内容复制粘贴到你的项目中。在 agents.yamltasks.yaml 文件中,所有像 {topic} 这样的变量占位符,最终都会被 main.py 文件中对应变量的值替换。

agents.yaml

# src/latest_ai_development/config/agents.yaml
researcher:
  role: >
    {topic} 领域高级数据研究员
  goal: >
    发掘 {topic} 领域的前沿发展动态
  backstory: >
    你是一位经验丰富的研究员,擅长发掘 {topic} 领域的最新发展。
    你以能找到最相关的信息并以清晰简洁的方式呈现而闻名。

reporting_analyst:
  role: >
    {topic} 领域报告分析师
  goal: >
    基于 {topic} 领域的数据分析和研究结果,创建详细的报告
  backstory: >
    你是一位细致入微的分析师,对细节有着敏锐的洞察力。
    你擅长将复杂的数据转化为清晰简洁的报告,让其他人能够轻松理解信息并据此采取行动,这一点广为人知。

步骤 4:修改 tasks.yaml 文件

tasks.yaml

# src/latest_ai_development/config/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:修改 crew.py 文件

crew.py

# src/latest_ai_development/crew.py
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai_tools import SerperDevTool
from crewai.agents.agent_builder.base_agent import BaseAgent
from typing import List


@CrewBase
class LatestAiDevelopmentCrew():
    """LatestAiDevelopment 智能体团队"""

    agents: List[BaseAgent]  # 智能体列表(类型声明)
    tasks: List[Task]        # 任务列表(类型声明)

    @agent  # 装饰器:标记该方法为智能体定义
    def researcher(self) -> Agent:
        return Agent(
            config=self.agents_config['researcher'],  # 从配置中加载 "researcher" 智能体的设置
            verbose=True,                             # 启用详细日志输出
            tools=[SerperDevTool()]                   # 为该智能体配备 Serper 搜索工具
        )

    @agent  # 装饰器:标记该方法为智能体定义
    def reporting_analyst(self) -> Agent:
        return Agent(
            config=self.agents_config['reporting_analyst'],  # 从配置中加载 "reporting_analyst" 智能体的设置
            verbose=True                                      # 启用详细日志输出
        )

    @task  # 装饰器:标记该方法为任务定义
    def research_task(self) -> Task:
        return Task(
            config=self.tasks_config['research_task'],  # 从配置中加载 "research_task" 任务的设置
        )

    @task  # 装饰器:标记该方法为任务定义
    def reporting_task(self) -> Task:
        return Task(
            config=self.tasks_config['reporting_task'],  # 从配置中加载 "reporting_task" 任务的设置
            output_file='output/report.md'               # 最终报告的输出文件路径
        )

    @crew  # 装饰器:标记该方法为智能体团队配置
    def crew(self) -> Crew:
        """创建 LatestAiDevelopment 智能体团队"""
        return Crew(
            agents=self.agents,  # 智能体列表(由 @agent 装饰器自动创建)
            tasks=self.tasks,    # 任务列表(由 @task 装饰器自动创建)
            process=Process.sequential,  # 任务执行流程:顺序执行(前一个任务完成后再执行下一个)
            verbose=True,                # 启用团队级别的详细日志输出
        )

步骤 6(可选):添加团队执行前后的钩子函数

crew.py 中,可以添加 before_kickoff(团队执行前)和 after_kickoff(团队执行后)装饰器,定义团队启动前后需要执行的逻辑。

# src/latest_ai_development/crew.py
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task, before_kickoff, after_kickoff
from crewai_tools import SerperDevTool


@CrewBase
class LatestAiDevelopmentCrew():
    """LatestAiDevelopment 智能体团队"""

    @before_kickoff  # 装饰器:团队启动前执行的函数
    def before_kickoff_function(self, inputs):
        print(f"团队启动前 - 输入参数:{inputs}")
        return inputs  # 可返回原始输入,或根据需求修改输入参数

    @after_kickoff   # 装饰器:团队执行完成后执行的函数
    def after_kickoff_function(self, result):
        print(f"团队执行后 - 执行结果:{result}")
        return result  # 可返回原始结果,或根据需求处理结果

    # ... 其余代码(智能体、任务、团队配置等)保持不变

步骤 7:向智能体团队传递自定义输入参数

例如,你可以传递 topic(研究主题)参数,自定义团队的研究和报告内容。

main.py

#!/usr/bin/env python
# src/latest_ai_development/main.py
import sys
from latest_ai_development.crew import LatestAiDevelopmentCrew


def run():
    """运行智能体团队"""
    inputs = {
        'topic': 'AI Agents'  # 自定义研究主题:AI 智能体
    }
    # 创建团队实例并启动执行,传入输入参数
    LatestAiDevelopmentCrew().crew().kickoff(inputs=inputs)

步骤 8:设置环境变量

在运行团队之前,需在 .env 文件中设置以下环境变量:

  1. Serper.dev API 密钥:SERPER_API_KEY=你的密钥(用于支持搜索工具功能)
  2. 所选大语言模型(LLM)的配置(如 API 密钥):参考 LLM 设置指南,了解如何配置不同提供商的模型。

步骤 9:锁定并安装依赖

通过以下 CLI 命令锁定依赖包版本,并完成安装:

crewai install

如果需要安装额外的包,可以运行:

uv add <包名>  # 例如:uv add pandas

步骤 10:运行智能体团队

在项目根目录下,执行以下命令启动团队:

crewai run

步骤 11:企业级替代方案:在 Crew Studio 中创建团队

对于 CrewAI 企业版用户,无需编写代码即可创建相同的智能体团队:

  1. 登录 CrewAI 企业版账号(可在 app.crewai.com 创建免费账号)
  2. 打开 Crew Studio(团队工作室)
  3. 描述你想要构建的自动化场景(例如:“研究 2025 年 AI 智能体的最新发展并生成报告”)
  4. 可视化创建任务,并按顺序连接任务流程
  5. 配置输入参数,点击“下载代码(Download Code)”或“部署(Deploy)”

步骤 12:查看最终报告

执行完成后,你可以在控制台中看到输出日志,同时项目根目录下会生成 report.md 文件,包含最终的报告内容。

以下是报告的示例格式:

output/report.md

# 2025 年 AI 智能体的崛起与影响综合报告
## 1. AI 智能体简介
2025 年,人工智能(AI)智能体已成为各行业创新的前沿。作为能够执行通常需要人类认知能力的任务的智能系统,AI 智能体正在人力资源(HR)、金融等领域推动运营效率、决策能力和整体生产力的显著提升。本报告旨在详细阐述 AI 智能体的崛起历程、技术框架、应用场景及其对劳动力市场的潜在影响。

## 2. AI 智能体的优势
AI 智能体为传统工作环境带来了诸多变革性优势,主要包括:
- **任务自动化**:AI 智能体可自动执行数据录入、日程安排、薪资核算等重复性任务,无需人工干预,大幅减少此类工作的时间和资源投入。
- **效率提升**:AI 智能体能够快速处理大规模数据集并完成分析(此类工作若由人类完成需耗费大量时间),从而提高运营效率,让团队能够专注于需要高阶思维的战略性任务。
- **决策优化**:AI 智能体可分析数据中的趋势和模式,提供洞察甚至建议行动方案,帮助相关方基于事实数据而非直觉做出明智决策。

## 3. 主流 AI 智能体框架
目前已有多款框架可支持 AI 智能体的开发,每款框架均具备独特的功能和能力。其中最受欢迎的框架包括:
- **Autogen**:专注于通过代码生成自动化,简化 AI 智能体的开发流程。
- **Semantic Kernel**:以自然语言处理和理解为核心,帮助智能体更好地理解用户意图。
- **Promptflow**:为开发者提供工具,用于创建能够无缝应对复杂交互的对话式智能体。
- **Langchain**:擅长整合各类 API,确保智能体能够获取并利用外部数据。
- **CrewAI**:面向协作场景,通过 AI 驱动的洞察促进团队沟通,强化团队协作能力。
- **MemGPT**:结合内存优化架构与生成能力,实现更具个性化的用户交互。

这些框架使开发者能够构建功能多样、智能高效的智能体,满足用户交互、高级分析、任务执行等各类与组织目标一致的需求。

## 4. AI 智能体在人力资源领域的应用
AI 智能体正在革新人力资源管理实践,实现关键职能的自动化与优化:
- **招聘流程**:AI 智能体可筛选简历、安排面试,甚至进行初步评估,加快招聘进度的同时减少偏见。
- **继任规划**:AI 系统分析员工绩效数据和潜力,帮助企业识别未来领导者并制定相应的培训计划。
- **员工参与度管理**:基于 AI 的聊天机器人可搭建员工与管理层之间的反馈渠道,促进开放文化,及时解决员工关切。

随着 AI 技术的不断发展,采用这些智能体的人力资源部门有望在效率和员工满意度两方面实现显著提升。

## 5. AI 智能体在金融领域的应用
金融行业正广泛整合 AI 智能体,优化金融业务实践:
- **费用跟踪**:自动化系统管理和监控费用支出,识别异常交易,并根据消费模式提供建议。
- **风险评估**:AI 模型通过分析交易数据和行为模式,评估信用风险并发现潜在欺诈行为。
- **投资决策**:AI 智能体基于历史数据和当前市场状况提供股票预测和分析,为投资者提供有价值的洞察。

AI 智能体在金融领域的应用,正推动形成更具响应能力和风险意识的金融生态。

## 6. 市场趋势与投资动态
AI 智能体的发展吸引了大量投资,尤其是在聊天机器人和生成式 AI 技术日益普及的背景下。企业和创业者迫切希望探索这些系统的潜力,因为它们能够简化运营并提升客户参与度。

与此同时,微软等大型企业正积极将 AI 智能体整合到其产品中,例如增强 Copilot 365 应用功能。这一战略举措凸显了现代职场中 AI 素养的重要性,也表明 AI 智能体正逐渐成为企业不可或缺的工具。

## 7. 未来展望与潜在影响
专家预测,AI 智能体将改变工作生活的核心方面。展望未来,预计将出现以下变革:
- AI 智能体将进一步整合到所有业务职能中,形成互联互通的系统,利用来自各部门的数据实现全面决策。
- AI 技术将持续进步,催生更智能、适应性更强的智能体,能够从用户交互中学习并不断进化。
- 随着 AI 智能体的普及,监管审查将不断加强,以确保其伦理使用,尤其是在数据隐私和员工监控方面。

为保持竞争力并充分发挥 AI 智能体的潜力,企业必须密切关注 AI 技术的最新发展,并在战略规划中纳入持续学习和适应的理念。

## 8. 结论
2025 年,AI 智能体的崛起正不可否认地重塑职场格局。凭借任务自动化、效率提升和决策优化的能力,AI 智能体已成为推动运营成功的关键因素。在日益数字化的商业环境中,企业必须拥抱并适应 AI 发展趋势,才能实现持续发展。

恭喜!

你已成功搭建智能体团队项目,现在可以开始构建自己的智能体工作流了!

命名一致性注意事项

在 YAML 文件(agents.yamltasks.yaml)中使用的名称,必须与 Python 代码(crew.py)中的方法名保持一致。例如,在 tasks.yaml 中为特定任务指定智能体时,需确保名称匹配。这种命名一致性能让 CrewAI 自动将配置与代码关联;否则,任务将无法正确识别对应的智能体。

示例参考

  • agents.yaml 中定义智能体名称为 email_summarizer,则在 crew.py 中对应的智能体方法名也需为 email_summarizer

    # agents.yaml
    email_summarizer:
      role: >
        邮件摘要生成器
      goal: >
        将邮件内容总结为简洁清晰的摘要
      backstory: >
        你需要将报告总结为 5 个要点的列表
      llm: provider/model-id  # 在此处添加你选择的模型
    
  • tasks.yaml 中定义任务名称为 email_summarizer_task,则在 crew.py 中对应的任务方法名也需为 email_summarizer_task

    # tasks.yaml
    email_summarizer_task:
      description: >
        将邮件总结为 5 个要点的列表
      expected_output: >
        包含 5 个要点的邮件摘要
      agent: email_summarizer  # 关联名称为 "email_summarizer" 的智能体
      context:
        - reporting_task
        - research_task
    
Logo

更多推荐