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 框架的一种模式。与非智能体型聊天机器人不同,智能体型聊天机器人可以使用可用工具,在运行之前计划行动并保留内存。这些功能可以产生更精细、更有意义的对话。
智能体型框架是 AI 智能体架构,它们使用工具调用和编排来实现 AI 应用。智能体型系统利用规划、迭代细化、反射等控制机制来充分利用模型的内置推理功能,以完成端到端任务。5 在 AI 系统中实施 AI 智能体可以自动化生成式 AI 应用程序运行所需的必要流程。
智能体的框架还能增强学习和执行能力。针对定制决策任务对 LLM 进行微调既耗费资源,又会削弱模型的泛化能力。6AI 智能体可以从以前的行动和经验中学习,从而减少微调模型所需的计算费用。
单一智能体框架依靠一种语言模型来运行各种任务和职责。智能体可以通过系统提示和完成任务所需的工具,例如搜索、API 甚至其他智能体。虽然单一智能体系统可以通过工具与其他智能体互动,但它们的合作方式与多智能体系统不同。
在单智能体系统中,没有来自其他 AI 智能体的反馈机制;因此,建议采用人工反馈来指导智能体,以随着时间推移提高准确性。单智能体架构对于定义明确的问题表现最佳,其中不需要来自其他智能体或用户的反馈。7
多智能体系统 (MAS) 不是试图在单一模型中囊括所有功能,而是将任务分派给多个专门的智能体。多智能体架构涉及两个或多个智能体,它们可能使用相同或不同的语言模型。无论规模大小,智能体在相同的环境中工作,相互模拟对方的目标、记忆和行动计划。这些架构与思维链 (CoT) 提示相比具有显著优势,因为在思维链提示中,模型需要将任务分解为一系列步骤。8当需要协作和多种不同的执行路径时,多智能体架构往往会更加欣欣向荣。
最佳的智能体架构取决于整体应用和用例的具体情况。单一智能体系统最擅长解决狭隘的问题。我们可以将智能体视为问题解决者。有些问题需要一个专业智能体的个人能力,有些问题可能需要一个解决问题的团队,或者由多个智能体组成的团队。多智能体系统是一个由智能体组成的团队,他们共同解决每个智能体的能力或知识所无法解决的问题。多智能体系统可以解决对单一智能体系统来说过于庞大的问题。研究表明,多智能体系统具有显著的优势,包括提高速度和可靠性,并能容忍不确定的数据和知识。9与 crewAI 类似的多智能体系统的主要优势包括智能体协作、自主工作流和可扩展性。
多智能体系统必须在多个不同维度上进行扩展。这些维度包括系统或应用程序中的智能体总数增加、智能体的多样性增加以及智能体运行的数据量增加。14 许多多智能体框架都配备了监控和指标等工具,以帮助评估系统是否成功扩展。crewAI 允许与第三方资源监测和度量工具集成,以建立 LLM、LLM 框架和矢量数据库的可观测性和评估。
AI 智能体是基于 LLM 的系统或程序,可以开发用于执行各种复杂任务。智能体具有记忆和规划能力,使它们能够根据以前的体验做出独立决策并采取行动。15 智能体通过使用 LLM 输出来调用其他软件工具(例如数据检索)并将结果循环回 LLM,直到实现总体目标,从而增强传统 LLM 的功能。AI 智能体与传统 LLM 的不同之处在于,它们能够通过行动规划、内存利用和工具冷却来导航、交互和适应环境。智能体型系统为智能体提供工具和编排,以运行与其任务相关的机器学习算法。
crewAI 建立在 LangChain 之上,并遵循模块化设计原则。它的主要组件包括智能体、工具、任务、流程和团队。
智能体的目标和特征由属性定义。crewAI 的智能体有三个主要属性:角色、目标和背景故事。
例如,crewAI 中智能体的实例化可能如下所示:
agent = Agent(工具是智能体用于执行不同任务的技能或功能。用户可以充分利用 crewAI 工具包和 LangChain 工具中的自定义工具和现有工具。
工具使智能体能够执行广泛的任务,包括错误处理、缓存机制和通过灵活的工具参数进行自定义,从而扩展了智能体的功能。
所有工具都包含错误处理并支持缓存机制。
crewAI 工具包包含一套搜索工具,这些工具在不同的资源中使用检索增强生成 (RAG) 方法。其中的一些例子包括:
除了 RAG 工具,该工具包还包含各种用于数据收集和提取的网络抓取工具。
crewAI 提供与 LangChain 工具的简单集成。以下是 LangChain 的一些可用内置工具例子:
用户可以创建自己的工具,进一步优化智能体功能。作为 crewAI 工具包的一部分,用户可以通过明确描述工具的用途来创建工具。智能体将使用用户定义的描述来使用自定义工具。自定义工具可以选择实施缓存机制,该机制可进行微调,以实现精细控制。
任务是智能体完成的具体任务。通过任务属性可方便地了解执行细节。可以指派多个智能体共同完成同一项任务。
所需的任务属性包括描述、智能体和预期输出。这些属性定义了任务范围、负责智能体和目标。任务可以直接分配给智能体,也可以通过 crewAI 根据角色和可用性进行决策的分级流程来处理。
以下是一个任务示例:
data_collection = Task(可选任务属性包括工具集成、并发异步执行和输出格式,包括 JSON、Pydantic 模型和任务结果的文件输出。
流程通过编排任务的执行,使各个 AI 智能体能够作为一个内聚单元运行。智能体型框架中的流程定义智能体如何协同工作以及将为它们分配哪些任务。crewAI 将流程与项目管理进行比较,因为它们确保任务的有效分配和执行,并与预定义的战略保持一致以完成目标。
crewAI 包括两个流程实现方式:顺序和分层,并计划第三种称为“协商一致流程”。可以将流程分配给一组智能体,使它们能够作为一个内聚单元运行。将流程分配给团队时,流程类型会设置执行策略。
用户选择并定义一个智能体列表,以作为一个团队一起工作。系统为团队分配要完成的任务列表。可选属性定义战略执行、智能体协作和整体工作流程。
以下是一个由两个智能体组成的团队示例,其目标是共同收集和组织客户支持数据:
my_crew = Crew(附加属性包括回调函数、语言和内存设置以及根据流程流(例如顺序、分层)设置要使用的管理智能体和 LLM 的选项。组建好团队后,工作流程就会通过启动方法启动。crewAI 提供几种启动方法来控制流程,包括异步和单独的任务执行。25
crewAI 可以通过各种连接选项连接到任何 LLM。默认情况下,智能体将使用 OpenAI 的 GPT-4 模型进行语言处理,但 crewAI 可灵活连接各种 LLM,包括 IBM® Granite 系列等模型。本地模型可通过 ollama 或其他开放式 API 连接。crewAI 文档中提供 API 密钥配置示例 和连接多个 LLM 的教程。crewAI 与所有 LangChain LLM 组件兼容,为所有 LLM 提供可运行接口的基本支持。
crewAI 将自己与包括 AutoGen 和 ChatDev 在内的多智能体框架进行比较。crewAI 的最大优势是结合了这两个框架各自擅长的方面。crewAI 将 AutoGen 会话式智能体的灵活性与 ChatDev 的结构化流程方法相结合。30
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。