CrewAI多智能体框架的实操教程-1

一、简介

CrewAI 框架综述

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

CrewAI 核心概念

CrewAI的核心概念包括智能体(Agent)、任务(Task)、工具(Tool)、流程(Process)和团队(Crew)。每个智能体都有特定的角色、目标和背景故事,可以执行定制的任务并使用各种功能工具。流程定义了智能体如何协作,而团队则是这些组件的组合容器。这种模块化设计使得CrewAI能够灵活地应对复杂问题,同时保持系统的简洁性和可扩展性。

CrewAI 应用场景

这个创新框架在多个领域展现了其强大的应用潜力。在客户服务方面,它可以自动回答咨询并提供个性化服务;在供应链管理中,协调库存、订单处理和物流跟踪等环节;而在网络安全领域,部署智能体监控网络活动并响应威胁. 此外,CrewAI还可用于市场分析与预测,利用智能体分析数据、预测趋势,为决策提供支持。在企业内部,它可作为智能助手,自动化日程管理等日常任务,提高工作效率.

二、安装

Python 版本要求

CrewAI 需要Python >=3.10 and <3.14。以下是检查版本的方法:
python3 --version
CrewAI 使用uv作为其依赖项管理和包处理工具。它简化了项目的设置和执行,提供了无缝的体验。

运行以下命令安装CrewAI CLI:

uv tool install crewai
如果遇到PATH警告,请运行此命令来更新您的 shell:
uv tool update-shell
要验证是否crewai已安装,请运行:
uv tool list
您应该会看到类似这样的内容:
(llm_py311) dcs@dcsdeMacBook-Air demo % uv tool list
crewai v0.130.0
- crewai

如果需要更新crewai,请运行:
uv tool install crewai --upgrade

释放协作人工智能的力量

想象一下,一支由专业 AI 代理组成的团队能够无缝协作,解决复杂问题,每个代理都贡献其独特的技能,以实现共同的目标。这就是 CrewAI 的强大之处——这个框架能够帮助您创建协作式 AI 系统,完成的任务远超单个 AI 单独完成的能力。
我们将学习如何创建一个研究团队,帮助我们研究和分析某个主题,并最终创建一份综合报告。这个实际示例展示了 AI 代理如何协作完成复杂任务,但这仅仅是 CrewAI 潜力的开端。

三、创建一个新的 CrewAI 项目

首先,让我们使用 CLI 创建一个新的 CrewAI 项目。此命令将设置一个包含所有必要文件的完整项目结构,让您可以专注于定义代理及其任务,而无需设置样板代码。
crewai create crew research_crew cd research_crew
创建项目,并设置大模型和 API-KEY,效果如下:
这将生成一个包含你的团队所需基本结构的项目。CLI 会自动创建:
  • 包含必要文件的项目目录
  • 代理和任务的配置文件
  • 基本机组实施
  • 运行团队的主要脚本

四、探索项目结构

让我们了解一下 CLI 创建的项目结构。CrewAI 遵循 Python 项目的最佳实践,即使您的团队变得越来越复杂,也能轻松维护和扩展代码。
此结构遵循 Python 项目的最佳实践,方便您组织代码。配置文件(YAML 格式)与实现代码(Python 格式)的分离,让您无需更改底层代码即可轻松修改团队行为。

五、配置代理

现在到了最有趣的部分,定义你的AI代理!在CrewAI中,代理是具有特定角色、目标和背景故事的特化实体,这些角色、目标和背景故事塑造了它们的行为。你可以把它们想象成戏剧中的角色,每个角色都有自己的个性和目标。
对于我们的研究人员,我们将创建两个代理:
1、擅长查找和组织信息的研究人员
2、能够解读研究结果并撰写深刻报告的分析师
让我们修改 agents.yaml文件来定义这些专用代理。
researcher:
  role: >
    {topic} 高级数据研究员
  goal: >
    探索 {topic} 的前沿发展
  backstory: >
    您是一位经验丰富的研究员,擅长发现{topic}领域的最新进展。
    您以能够找到最相关的信息并以清晰简洁的方式呈现而闻名。

reporting_analyst:
  role: >
    {topic} 报告分析师
  goal: >
    根据{topic}数据分析和研究结果创建详细报告
  backstory: >
    您是一位一丝不苟的分析师,对细节有着敏锐的洞察力。
    您以能够将复杂的数据转化为清晰简洁的报告而闻名,
    这使得其他人能够轻松理解您提供的信息并采取行动。

六、定义你的任务

定义好代理后,我们现在需要赋予它们具体的任务。CrewAI 中的任务代表了代理将要执行的具体工作,包含详细的指令和预期输出。
对于我们的研究人员,我们将定义两个主要任务:
1、收集全面信息的研究任务
2、创建有见地的报告的分析任务
让我们修改这个 tasks.yaml文件:
research_task:
  description: >
    对{topic}进行深入研究
    确保找到任何有趣且相关的信息
    当前年份是{current_year}。
  expected_output: >
    包含与 {topic} 最相关的 10 个要点的列表
  agent: researcher

reporting_task:
  description: >
    回顾您获得的背景信息,并将每个主题扩展为报告的完整部分。
    确保报告详细且包含所有相关信息。
  expected_output: >
    一份包含主要主题的完整报告,每个主题都包含完整的信息。
    格式为 Markdown,不带“```”
  agent: reporting_analyst

七、配置你的团队

现在是时候通过配置我们的团队来整合所有内容了。团队是一个容器,负责协调代理如何协同完成任务。
让我们修改这个 crew.py文件:
from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai.agents.agent_builder.base_agent import BaseAgent
from typing import List

# 如果你希望在 crew 执行前后运行某些代码,
# 可以使用 @before_kickoff 和 @after_kickoff 装饰器
# 文档地址:https://docs.crewai.com/concepts/crews#example-crew-class-with-decorators

@CrewBase
class ResearchCrew():
    """ResearchCrew 团队定义类,用于组织研究任务的代理与流程"""

    agents: List[BaseAgent]  # 用于存储所有代理(Agent)对象的列表
    tasks: List[Task]        # 用于存储所有任务(Task)对象的列表

    # --------------------------------------------
    # 配置文件建议采用 YAML 格式(推荐):
    # - 代理配置文档:https://docs.crewai.com/concepts/agents#yaml-configuration-recommended
    # - 任务配置文档:https://docs.crewai.com/concepts/tasks#yaml-configuration-recommended
    # --------------------------------------------

    # 如需为 Agent 添加工具(tools),请参考文档:
    # https://docs.crewai.com/concepts/agents#agent-tools
    @agent
    def researcher(self) -> Agent:
        """
        定义一个负责研究的代理(researcher agent)
        该代理将根据配置文件中的 'researcher' 配置项进行初始化
        """
        return Agent(
            config=self.agents_config['researcher'],  # 从配置中加载名为 researcher 的代理配置
            verbose=True  # 设置为 True 以输出详细日志,便于调试与观察运行过程
        )

    @agent
    def reporting_analyst(self) -> Agent:
        """
        定义一个负责报告撰写与分析的代理(reporting analyst agent)
        该代理将根据配置文件中的 'reporting_analyst' 配置项进行初始化
        """
        return Agent(
            config=self.agents_config['reporting_analyst'],
            verbose=True
        )

    # --------------------------------------------
    # 关于结构化任务输出、任务依赖与回调函数等内容,请参考文档:
    # https://docs.crewai.com/concepts/tasks#overview-of-a-task
    # --------------------------------------------
    @task
    def research_task(self) -> Task:
        """
        定义研究任务,由 researcher agent 执行
        任务配置从 tasks_config['research_task'] 加载
        """
        return Task(
            config=self.tasks_config['research_task'],
        )

    @task
    def reporting_task(self) -> Task:
        """
        定义报告撰写任务,由 reporting analyst 执行
        最终输出文件保存为 report.md
        """
        return Task(
            config=self.tasks_config['reporting_task'],
            output_file='report.md'
        )

    @crew
    def crew(self) -> Crew:
        """
        创建并返回一个完整的 Crew 实例,定义该团队的运行方式与流程。

        - agents: 所有参与任务的代理(由 @agent 自动生成)
        - tasks: 所有需要执行的任务(由 @task 自动生成)
        - process: 指定任务执行流程(顺序执行:sequential)
        - verbose: 是否启用详细模式,输出执行日志信息

        你也可以将执行流程改为 hierarchical(层级调度),参考文档:
        https://docs.crewai.com/how-to/Hierarchical/
        """
        # 如需为团队添加知识库支持,请参考文档:
        # https://docs.crewai.com/concepts/knowledge#what-is-knowledge
        return Crew(
            agents=self.agents,
            tasks=self.tasks,
            process=Process.sequential,
            verbose=True,
        )

八、运行你的团队

现在到了激动人心的时刻,是时候运行你的团队并观察人工智能协作的实际效果了!
crewai run
运行此命令后,您将看到您的团队开始活跃起来。研究人员将收集有关指定主题的信息,然后分析师将根据该研究创建一份综合报告。您将实时看到代理们齐心协力完成任务时的思维过程、行动和输出。

九、检查输出

团队完成工作后,您将在output/report.md文件中找到最终报告。报告内容包括:
1、执行摘要
2、主题
3、详细介绍
4、总结和建议
花点时间来欣赏你所取得的成就,你已经创建了一个系统,其中多个人工智能代理协作完成一项复杂的任务,每个代理都贡献他们的专业技能来产生比任何单个代理单独完成的更大的结果。

十、探索其他 CLI 命令

CrewAI 提供了其他几个有用的 CLI 命令来与工作人员合作:
# 查看所有可用命令和帮助文档
crewai --help

# 启动并运行当前配置的 crew(团队执行任务)
crewai run

# 测试当前 crew 的配置与逻辑是否正常
crewai test

# 重置 crew 的记忆状态(例如记忆缓存、历史上下文等)
crewai reset-memories

# 从指定任务(task_id)重新回放任务执行流程(适合调试)
crewai replay -t <task_id>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值