什么是 crewAI?

作者

Vanna Winland

AI Advocate & Technology Writer

Meredith Syed

Technical Content, Editorial Lead

IBM

Anna Gutowska

AI Engineer, Developer Advocate

IBM

crewAI 是由 João Moura 创建的开源多智能体协调框架。这个基于 Python 的框架通过协调角色扮演的自主 AI 智能体,利用人工智能 (AI) 协作,作为一个内聚的集合体或“团队”共同完成任务。crewAI 的目标是提供一个强大的框架来自动化多智能体工作流。1

“团队”一词是指协同工作、自主委派任务并相互提问的 AI 智能体,类似于现实生活中的工作团队。每个多智能体团队由互补的角色扮演 AI 智能体组成,它们充分利用现有和自定义工具完成一组分配的任务。语言模型通过选择一系列操作来充当智能体的推理引擎。2crewAI 的智能体可以配置为使用任何开源大语言模型 (LLM) 或应用程序编程接口 (API)。

最近的研究扩大了大语言模型模型的范围,使其不仅仅局限于文本生成,还证明它们可以作为多功能智能体进行对话互动、决策和完成任务。3在蓬勃发展的 AI 领域以及围绕 AI 智能体和智能体框架的研究中,包括 crewAI 在内的多智能体框架已经出现在生成式 AI 领域。

下一代 AI 应用将使用智能体型架构构建基于智能体的自主系统。4这些智能体型框架通过增强生成式 AI 任务来解决大量 AI 解决方案的复杂任务。例如,AI 聊天机器人可以成为实施智能体型 AI 框架的一种模式。与非智能体型聊天机器人不同,智能体型聊天机器人可以使用可用工具,在运行之前计划行动并保留内存。这些功能可以产生更精细、更有意义的对话。

辅以专家洞察分析的最新科技新闻

通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。您会在每份时事通讯中找到一个取消订阅链接。您可以在此管理您的订阅或取消订阅。更多相关信息,请参阅我们的《IBM 隐私声明》。

AI 智能体框架

智能体型框架是 AI 智能体架构,它们使用工具调用和编排来实现 AI 应用。智能体型系统利用规划、迭代细化、反射等控制机制来充分利用模型的内置推理功能,以完成端到端任务。5 在 AI 系统中实施 AI 智能体可以自动化生成式 AI 应用程序运行所需的必要流程。

智能体的框架还能增强学习和执行能力。针对定制决策任务对 LLM 进行微调既耗费资源,又会削弱模型的泛化能力。6AI 智能体可以从以前的行动和经验中学习,从而减少微调模型所需的计算费用。

AI 智能体

5 种类型的 AI 智能体:自主功能与现实世界的应用

了解目标驱动和基于效用的 AI 如何适应工作流和复杂环境。

智能体的系统架构

智能体型框架可以使用单智能体或多智能体系统。

单智能体与多智能体

单一智能体框架依靠一种语言模型来运行各种任务和职责。智能体可以通过系统提示和完成任务所需的工具,例如搜索、API 甚至其他智能体。虽然单一智能体系统可以通过工具与其他智能体互动,但它们的合作方式与多智能体系统不同。

在单智能体系统中,没有来自其他 AI 智能体的反馈机制;因此,建议采用人工反馈来指导智能体,以随着时间推移提高准确性。单智能体架构对于定义明确的问题表现最佳,其中不需要来自其他智能体或用户的反馈。7

多智能体系统 (MAS) 不是试图在单一模型中囊括所有功能,而是将任务分派给多个专门的智能体。多智能体架构涉及两个或多个智能体,它们可能使用相同或不同的语言模型。无论规模大小,智能体在相同的环境中工作,相互模拟对方的目标、记忆和行动计划。这些架构与思维链 (CoT) 提示相比具有显著优势,因为在思维链提示中,模型需要将任务分解为一系列步骤。8当需要协作和多种不同的执行路径时,多智能体架构往往会更加欣欣向荣。

最佳的智能体架构取决于整体应用和用例的具体情况。单一智能体系统最擅长解决狭隘的问题。我们可以将智能体视为问题解决者。有些问题需要一个专业智能体的个人能力,有些问题可能需要一个解决问题的团队,或者由多个智能体组成的团队。多智能体系统是一个由智能体组成的团队,他们共同解决每个智能体的能力或知识所无法解决的问题。多智能体系统可以解决对单一智能体系统来说过于庞大的问题。研究表明,多智能体系统具有显著的优势,包括提高速度和可靠性,并能容忍不确定的数据和知识。9与 crewAI 类似的多智能体系统的主要优势包括智能体协作、自主工作流和可扩展性。

智能体协作

AI 智能体可以通过多种可定制参数进行优化。系统会为每个智能体都分配一个角色,该角色概述它们的角色以及针对它们行为的任何具体说明。10 多智能体框架使用智能体的能力来管理团队中的任务,同时扮演特定角色并相互交互。这些团队的组成可以根据应用和总体目标进行调整和优化。

实现这一目标的一种方法是通过协作生成式智能体。多智能体框架能够提供有效协作所需的基本功能。11 一些多智能体框架根据总体目标提供智能体协作模板。crewAI 允许用户将智能体组建成队伍或为执行共同目标或任务而工作的团队,从而促进智能体协作。

自主行为

自主 AI 智能体可以在无人指导的情况下完成一项任务或一系列复杂任务。基于 LLM 的自主智能体的潜力被视为实现通用人工智能 (AGI) 的领先方法。12这些基于 LLM 的智能体可以通过自主规划和行动来执行任务。尽管 AI 智能体已展现出令人印象深刻的能力,但在扩展能力以执行需要更复杂推理形式的任务方面仍面临着挑战。13 智能体型系统可通过提供自主工作流程框架来帮助应对这些挑战。crewAI 通过分层流程提供自主行为,该流程使用自主生成的管理智能体来监督智能体任务的执行和分配。

可扩展性

多智能体系统必须在多个不同维度上进行扩展。这些维度包括系统或应用程序中的智能体总数增加、智能体的多样性增加以及智能体运行的数据量增加。14 许多多智能体框架都配备了监控和指标等工具,以帮助评估系统是否成功扩展。crewAI 允许与第三方资源监测和度量工具集成,以建立 LLM、LLM 框架和矢量数据库的可观测性和评估。

AI 智能体

AI 智能体是基于 LLM 的系统或程序,可以开发用于执行各种复杂任务。智能体具有记忆和规划能力,使它们能够根据以前的体验做出独立决策并采取行动。15 智能体通过使用 LLM 输出来调用其他软件工具(例如数据检索)并将结果循环回 LLM,直到实现总体目标,从而增强传统 LLM 的功能。AI 智能体与传统 LLM 的不同之处在于,它们能够通过行动规划、内存利用和工具冷却来导航、交互和适应环境。智能体型系统为智能体提供工具和编排,以运行与其任务相关的机器学习算法。

crewAI 如何运行

crewAI 建立在 LangChain 之上,并遵循模块化设计原则。它的主要组件包括智能体、工具、任务、流程和团队。

代理

智能体是 crewAI 框架的基本组成部分。每个智能体都是一个自主单元,扮演着不同的角色,为团队的总体目标做出贡献。每个智能体都经过编程,可以执行任务、处理决策并与其他智能体交流。

crewAI 鼓励用户将智能体视为团队成员。智能体可以担任不同的角色,例如“数据科学家”、“研究员”或“产品经理”。多智能体团队可以有效协作,执行自动工作流。
 
这种形式的多智能体系统旨在通过智能体间的讨论,利用角色扮演结构促进复杂问题的解决,从而提高 LLM 的推理能力。16 智能体可以通过 crewAI 固有的委派和通信机制相互交流,委派工作或提出问题。

智能体属性

智能体的目标和特征由属性定义。crewAI 的智能体有三个主要属性:角色目标背景故事。

例如,crewAI 中智能体的实例化可能如下所示:

    agent = Agent(
         role= 'Customer Support',
         goal= 'Handles customer inqueries and problems',
         backstory= 'You are a customer support specialist for a chain restaurant. You are responsible for handling customer calls and providing
         customer support and inputting feedback data.'
         )
 

crewAI 提供多个可选参数,包括选择智能体使用的 LLM 和工具依赖项的属性。17

工具

工具是智能体用于执行不同任务的技能或功能。用户可以充分利用 crewAI 工具包和 LangChain 工具中的自定义工具和现有工具。

工具使智能体能够执行广泛的任务,包括错误处理、缓存机制和通过灵活的工具参数进行自定义,从而扩展了智能体的功能。

crewAI 工具

所有工具都包含错误处理并支持缓存机制。

crewAI 工具包包含一套搜索工具,这些工具在不同的资源中使用检索增强生成 (RAG) 方法。其中的一些例子包括:

  • JSONSearchTool: 在 JSON 文件中进行精确搜索。
  • GithubSearchTool: 在 GitHub 存储库中搜索。
  • YouTubeChannelSearchTool:在 YouTube 频道中搜索。

除了 RAG 工具,该工具包还包含各种用于数据收集和提取的网络抓取工具。

LangChain 工具

crewAI 提供与 LangChain 工具的简单集成。以下是 LangChain 的一些可用内置工具例子:

  • Shell (bash):允许访问 Shell,使 LLM 能够执行 Shell 命令。18
  • 文件比较:使用智能体比较两份文件。19
  • Python:允许智能体编写和执行 Python 代码来回答问题。20

自定义工具

用户可以创建自己的工具,进一步优化智能体功能。作为 crewAI 工具包的一部分,用户可以通过明确描述工具的用途来创建工具。智能体将使用用户定义的描述来使用自定义工具。自定义工具可以选择实施缓存机制,该机制可进行微调,以实现精细控制。

任务

任务是智能体完成的具体任务。通过任务属性可方便地了解执行细节。可以指派多个智能体共同完成同一项任务。

任务属性

所需的任务属性包括描述、智能体预期输出。这些属性定义了任务范围、负责智能体和目标。任务可以直接分配给智能体,也可以通过 crewAI 根据角色和可用性进行决策的分级流程来处理。

以下是一个任务示例:

data_collection = Task(
     description= ‘Gather data from customer interactions, transaction history, and support tickets’
     expected_output= ‘An organized collection of data that can be preprocessed’,
     agent=data_science_agent,
)

可选任务属性包括工具集成、并发异步执行和输出格式,包括 JSON、Pydantic 模型和任务结果的文件输出。

任务功能

任务功能包括工具集成、异步执行、人工输入评论和输出定制。

任务的结果可以为未来的任务建立背景。例如,“研究”任务的输出可用作完成“作者”任务的背景。思考一个简单的示例,一个团队由两个智能体组成,一个是“研究”智能体,另一个是“作者”智能体。研究智能体的任务是寻找顶级生成式 AI 用例的示例,而作者智能体可以使用研究结果作为背景来执行撰写有关相同或相似主题的短博客的任务。

可以将任务定义为异步执行。这对于需要很长时间才能完成或不需要执行下一个任务的任务很有用。背景属性可用于在未来任务中定义它应该等待异步任务的输出完成。21

流程

流程通过编排任务的执行,使各个 AI 智能体能够作为一个内聚单元运行。智能体型框架中的流程定义智能体如何协同工作以及将为它们分配哪些任务。crewAI 将流程与项目管理进行比较,因为它们确保任务的有效分配和执行,并与预定义的战略保持一致以完成目标。

crewAI 包括两个流程实现方式:顺序和分层,并计划第三种称为“协商一致流程”。可以将流程分配给一组智能体,使它们能够作为一个内聚单元运行。将流程分配给团队时,流程类型会设置执行策略。

  • 顺序:顺序流程类似于动态团队工作流。任务按照任务列表中预定义的顺序执行,一个任务的输出将作为下一个任务的背景。
  • 分层:分层流程模仿了企业的层级结构。crewAI 利用专为管理智能体定制的管理语言模型,为用户自主生成经理。 22 管理智能体监督任务的执行,并根据智能体的能力将任务分配给他们,审查输出并评估任务的完成情况。该流程就是 AI 智能体自主协作完成一系列任务的一个例子。
  • 协商一致(计划中):在撰写本文时,代码库中目前尚未实施协商一致流程,但其目的是为智能体之间就任务执行进行协作决策提供一种方法。该流程引入了任务管理的民主方法。

团队

团队是指一群协作完成一组预先定义的任务的智能体集合。23 每个团队定义任务执行战略、智能体执行和总体工作流程。团队具有若干属性,有助于将具有互补角色和工具的智能体集合起来,分配任务,并选择一个决定执行顺序和交互的流程。24

团队属性

用户选择并定义一个智能体列表,以作为一个团队一起工作。系统为团队分配要完成的任务列表。可选属性定义战略执行、智能体协作和整体工作流程。

以下是一个由两个智能体组成的团队示例,其目标是共同收集和组织客户支持数据:

my_crew = Crew(
    agents=[data_science_agent, customer_support_agent],
    tasks=[customer_support_task, data_collection_task],
    process=Process.sequential,
    full_output=True,
    verbose=True,
)

附加属性包括回调函数、语言和内存设置以及根据流程流(例如顺序、分层)设置要使用的管理智能体和 LLM 的选项。组建好团队后,工作流程就会通过启动方法启动。crewAI 提供几种启动方法来控制流程,包括异步和单独的任务执行。25

crewAI 可连接到任何大语言模型

crewAI 可以通过各种连接选项连接到任何 LLM。默认情况下,智能体将使用 OpenAI 的 GPT-4 模型进行语言处理,但 crewAI 可灵活连接各种 LLM,包括 IBM® Granite 系列等模型。本地模型可通过 ollama 或其他开放式 API 连接。crewAI 文档中提供 API 密钥配置示例 和连接多个 LLM 的教程。crewAI 与所有 LangChain LLM 组件兼容,为所有 LLM 提供可运行接口的基本支持。

crewAI 用例

crewAI 等 AI 智能体框架可作为研究人员和开发人员在各个领域创建智能系统的基础工具,范围包括从智能体型 AI 聊天机器人到复杂的多智能体系统。

几个真实世界示例包括构建交互式登录页面和使用团队来自动化提升社交媒体影响力的过程等项目。Moura 组织的名为“crewAI-examples”的 GitHub 存储库中收集了几个真实世界示例,供用户自己测试。26 这些示例还包括面向初学者的框架使用简介。

以下是其中几个例子以及 crewAI 社区中出现的其他用例:

  • 内容规划和创作:其中一个用例利用 crewAI 和自然语言模型 groq 来创建专业智能体团队,就特定主题创建引人入胜、事实准确的内容。27
  • 自动检查和起草电子邮件:作为初学者的入门课程,一组智能体利用 LangGraph 库完成分析和筛选电子邮件、提取完整线程、研究和创建电子邮件草稿等任务,从而实现多智能体工作流的自动化。28
  • 库存分析:智能体被赋予特定角色,通过协作使用 GPT 3.5(而不是默认的 GPT-4)提供完整的库存分析和投资建议。29

其他多智能体理框架

crewAI 将自己与包括 AutoGen 和 ChatDev 在内的多智能体框架进行比较。crewAI 的最大优势是结合了这两个框架各自擅长的方面。crewAI 将 AutoGen 会话式智能体的灵活性与 ChatDev 的结构化流程方法相结合。30

crewAI 与 AutoGen

AutoGen 是微软的开源智能体框架,它使用自然语言处理 (NLP) 算法来开发会话式 AI 智能体。虽然这两个平台都用于类似的应用程序,但它们各有优缺点。两者都是灵活的系统,具有可自定义的 AI 智能体,能够进行协作。crewAI 通过提供控制应用程序进程的可自定义属性,为协调智能体交互提供了一种更简单的方法。Autogen 需要更多的编程设置才能实现这一点。AutoGen 提供了一种快速执行 LLM 生成代码的内置方法。31 crewAI 目前不提供实现此功能的工具,但可以通过额外的编程设置来实现。

crewAI 与 ChatDev

ChatDev 是一个采用角色扮演多智能体协作的开源平台,包括 crewAI。ChatDev 的流程结构非常僵化,因此限制定制化并妨碍生产环境的可扩展性和灵活性。crewAI 等框架旨在与第三方应用程序和可定制工作流程集成,以实现适应性强的动态环境。ChatDev 的一个独特功能是,它将自身扩展为浏览器扩展,以将网络浏览器中各种智能体之间的对话链接在一起。32

作为一个多智能体编排框架,crewAI 为实现人工智能的目标提供另一种创新。智能体架构将提高 AI 智能体的性能和功能,使 LLM 应用程序能够执行语言生成以外的任务。

相关解决方案
IBM AI 智能体开发

借助 IBM watsonx.ai 开发平台,让开发人员能够构建、部署和监控 AI 代理。

 

深入了解 watsonx.ai
人工智能 (AI) 解决方案

借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。

深入了解人工智能解决方案
AI 咨询与服务

通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。

深入了解人工智能服务
采取下一步行动

无论您是选择定制预构建的应用程序和技能,还是使用 AI 开发平台构建和部署定制代理服务,IBM watsonx 平台都能满足您的需求。

探索 watsonx Orchestrate 深入了解 watsonx.ai