一文读懂用于构建多代理的 CrewAI 开源框架

2024-01-02 16:25:54 浏览数 (2)

Hello folks,我是 Luga,今天我们继续来聊一下人工智能(AI)生态领域相关的技术 - AI Agents ,本文将继续聚焦在针对新型开源 AI Agents CrewAI 的技术进行解析,使得大家能够了解 CrewAI 的基本概念以及基于 CrewAI 对其进行应用及市场开发。

LLM (大型语言模型) 已经渗透到我们生活的方方面面,从日常聊天到文档解析,发挥着重要作用。随着 LLM 在全球范围内的热潮席卷而来,开发者们开始将重点放在人类推理和问题解决上,创造了更加专注和目标导向的 LLL(Language and Logic Learning)应用程序,以应对当今面临的各种复杂问题。

这些创新的 LLL 应用程序通过优化、扩展和提升 LLM 的能力,为我们提供了更加高效、智能化的解决方案。不论是在商业、科学还是社会领域,这些应用程序都成为了我们理解和应对复杂问题的有力工具,同时也开辟了全新的可能性。

01

传统 AI Agents 的出路在哪里 ?

随着技术的蓬勃发展,AI Agents 正在成为改变游戏规则的力量,迅速成为解决问题、创造力和创新的合作伙伴,而这正是 CrewAI 的独特之处。

能想象一下?仅仅几分钟内,可以将一个想法转化为一个完整的登录页面,这正是我们利用 CrewAI 一起实现的场景。

最近的一个案例展示了 CrewAI 与 LangChain 和 OpenHermes2.5(由 Ollama 提供支持)合作的成果,将一行简单的文字转变为一个完整的登录页面。这个案例揭示了 AI Agents 协作中尚未开发的巨大潜力,以及更快速进行市场测试想法的能力,而这只是 CrewAI 在 Replit 中使用代码的一个应用场景。

如下为‍‍‍‍‍‍‍‍将 Ollama 与 CrewAI 集成 Demo 示例:

代码语言:javascript复制
from langchain.llms import Ollama
ollama_openhermes = Ollama(model="agent")
# Pass Ollama Model to Agents: When creating your agents within the CrewAI framework, you can pass the Ollama model as an argument to the Agent constructor. For instance:

local_expert = Agent(
  role='Local Expert at this city',
  goal='Provide the BEST insights about the selected city',
  backstory="""A knowledgeable local guide with extensive information
  about the city, it's attractions and customs""",
  tools=[
    SearchTools.search_internet,
    BrowserTools.scrape_and_summarize_website,
  ],
  llm=ollama_openhermes, # Ollama model passed here
  verbose=True
)

实例化 Ollama 模型

CrewAI 的愿景非常明确,即让工程师们能够借助 AI Agents 的集体力量,超越传统的自动化方法。CrewAI 将各种代理聚集在一起,简化决策过程,增强创造力,并迎接解决复杂挑战的挑战。

这种新型协作方式不仅提供了高效的工具和技术支持,而且还鼓励创新和实验。CrewAI 的出现为工程师们创造了一个全新的机遇,使他们能够更快速地推动想法的实现,并在竞争激烈的市场中保持领先地位。

02

什么是 CrewAI 库 ?

由 OpenAI 开发,于 2023 年 8 月发布。CrewAI 提供了一组通用的工具和库,可用于处理多代理系统的常见任务,如代理通信、协调和决策。CrewAI 的潜在应用包括机器人协作、自动驾驶、虚拟现实以及增强现实等多种不同领域。

作为一个专为构建和编排 AI Agents 组而设计的库。CrewAI 基于简单化理念以及模块化策略的模式,使得我们可以将 CrewAI 集成到我们的项目中变得轻而易举。我们可以这样理解:将 CrewAI 想象成一组构建块,每个构建块都是独一无二的,但它们都经过精心设计,可以无缝组合在一起。

从技术实现角度而言,CrewAI 建立在 LangChain 之上,这使得它能够与多种不同的现有工具兼容,包括通过 Ollama 等平台的本地开源模型。

通过借助 CrewAI,我们可以轻松构建一个强大的 AI Agents 组,以解决各种复杂任务和挑战。无论是自然语言处理、问题解答还是智能决策,CrewAI 提供了丰富的功能和灵活性。我们可以根据具体需求自由选择和组合各种模块,以创建一个符合我们预期目标的独特系统。

借助 CrewAI 的模块化设计,我们可以将现有的工具和技术与其无缝集成,实现更高效的开发和部署。基于所提供的简单易用接口和开发人员友好的文档,使得我们能够快速上手并快速实现我们的创意。

不仅如此,CrewAI 同时也是一个持续发展和更新的库,积极采纳并融合最新的研究成果和技术进展。这意味着我们可以始终与前沿的人工智能能力和最佳实践保持同步。

03

CrewAI 架构设计及实现原理‍‍‍

类似于 LangChain 的设计理念,CrewAI 的设计思想是让工程师们能够以简单的方式构建复杂的 AI 应用。通过模块化的方法,将功能划分为独立的构建块,每个构建块都具有特定的功能和任务。这种模块化的设计思维使得工程师们可以根据需要自由选择、组合和定制这些构建块,从而快速搭建出符合自己需求的系统。

通常来说,CrewAI 的核心组件主要涉及如下:

1、Agent - 代理‍‍

Agent 通常为我们忠诚而值得信赖的伙伴,每个 Agent 都有自己独特的个性、背景故事和技能。他们能够随时准备被协调支配,无论是去实现某一特定的功能场景、解决棘手的难题,还是探索未知的世界。

2、Task - 任务‍

CrewAI 任务是为了解决特定问题或完成特定目标而设计的。每个任务都具有明确的目标和要求,并且被分解成小而专注的子任务。这种任务的细分使得 Agent 能够更加集中精力,并以更高效的方式完成任务。

每个 CrewAI 任务都具有独特的特征和要求,Agent 需要根据任务的性质和目标来选择合适的方法和策略。这使得任务的执行更加灵活和自适应,Agent 可以根据具体情况做出相应的决策和调整。

3、Tools - 工具

在 CrewAI 中,Agent 被用作高效执行任务的工具。我们可以利用 LangChain 中的各种现有工具,也可以快速开发自己的工具。同时,CrewAI 也鼓励我们根据具体任务的需求,快速编写自定义工具。这种灵活性使得我们能够根据特定情况和任务的要求,定制化代理工具,以更好地满足我们的需求。

通过结合使用 LangChain 中的现有工具和自定义工具,我们能够最大程度地发挥代理的潜力,提高任务执行的效率和质量。

4、Process - 流程

Process 是根据任务的性质和复杂程度进行定制的。不同的任务可能需要不同的 Process 来达到最佳效果。Process 可以包括任务的分解、资源的分配、沟通协调等环节,旨在最大限度地提高团队的工作效率和任务完成质量。

Process 的设计也可以根据经验和实践进行不断优化和改进。通过对 Process 的不断迭代和优化,团队可以提高工作效率、减少错误和风险,并提供更好的团队协作和成果交付。

5、Crew - 执行者

Crew 在 CrewAI 中是代理人、任务和过程相结合的容器层,是任务执行的实际场所。作为一个协同合作的环境,Crew 提供了代理人之间的交流、合作和按照规定过程执行任务的平台。通过 Crew 的设计,代理人能够更好地协作并以高效的方式完成任务。

从架构设计角度而言,经过 ReActSingleInputOutputParser 增强,每个 CrewAI Agent 本质上都是一个 LangChain Agent。该解析器经过专门修改,以便更好地进行功能支持,包含用于上下文焦点的绑定停用词,并集成了内存机制(使用 LangChain 的 ConversationSummaryMemory)以实现任务的连续性。

Agent 是建立在 LangChain 之上的,这一事实创造了飞轮效应,主要的一个是我们可以立即使用所有 LangChain 工具和工具包,从而使得 CrewAI 具有很强的可扩展性和灵活性,可用于各种任务。

在当前的迭代中,Agent 自主运行,通过自我对话来确定工具的使用。这使得其能够适应不断变化的环境和任务要求。然而,CrewAI 的未来版本计划引入不同的流程类型。这些将允许代理在更复杂的场景中协同工作,例如在团队合作任务或需要多个代理来解决单个问题的情况下。

在最新版本的 CrewAI 平台中,每个 Task 在创建时都将明确分配至指定的代理单元来执行。这有助于更清晰识别每个代理当前负责的任务类型与量,以及任务运行进度。

同时,系统还能针对每个 Task 限定其使用的工具范围,例如仅允许调用某类算法库等,从而可以有效避免由于工具限制导致的任务失败,也防止单个代理长期占用特定资源阻塞其他工作。

Crew 作为封装代理和任务的框架,促进它们顺序执行工作,从而使得更容易管理代理之间的依赖关系,并确保任务以正确的顺序执行。在业务实践中,我们可能会发现部署多个独立的 Crew(每个 Crew 配备几个特工)更为有效。这种模块化方法允许每个工作人员产生不同的结果,而不是由单个大型工作人员处理许多任务和代理处理单一输出。

04

CrewAI 与 Autogen 以及 ChatDev Agents 的对比分析‍‍‍‍‍‍

Autogen 擅长创建能够协同工作的会话代理,但其缺点是缺乏固有的流程概念。这意味着在 Autogen 中,编排代理的交互需要额外的编程。随着任务规模的增长,这可能会变得复杂和繁琐。

相对于 CrewAI, 具体来说,Autogen 在以下方面存在缺陷:

1、缺乏流程概念:这意味着 Autogen 代理只能按照它们被编程的方式进行交互。如果需要代理以不同的方式交互,则需要进行额外的编程。

2、编程复杂:编程 Autogen 代理的交互可能非常复杂,尤其是对于复杂的任务及逻辑。

3、可扩展性差:Autogen 代理的编程方式不利于可扩展性。随着任务规模的增长,编程代理的交互变得更加困难。

ChatDev 将流程的概念引入了 AI 代理领域,但其实现相当僵化。ChatDev 中的自定义是有限的,并且不适合生产环境。这意味着 ChatDev 可能难以满足复杂应用程序的需求,并且可能导致可扩展性和灵活性问题。

同样,相对于 CrewAI,ChatDev 的不足主要体在以下几个方面,具体:

1、自定义有限:ChatDev 中的自定义是有限的。这意味着 ChatDev 可能难以满足复杂应用程序的需求。

2、不适合生产环境:ChatDev 不适合生产环境。这意味着 ChatDev 可能难以满足实际应用程序的要求。

3、可扩展性差:ChatDev 的实现不利于可扩展性。随着任务规模的增长,ChatDev 可能难以满足应用程序的需求。

总的来说,相对于 Autogen 和 ChatDev 创建会话代理的工具,CrewAI 的构建以生产为中心,既提供了Autogen 对话代理的灵活性,又采用了 ChatDev 的结构化流程方法,但又不失灵活性。

CrewAI 基于动态的流程设计理念,具有很强的适应性,可以无缝地融入开发和生产工作流程,‍‍以使得工作流程可以根据需求进行调整和优化,以适应不同的工作场景和业务需求。

未来,CrewAI 将继续丰富其工作流程能力,支持涵盖更多领域的流程定义。同时,CrewAI 平台将进一步优化不同助手间的协作体系,提高工作效率和质量。

与此同时,CrewAI 在用户体验和定制性方面也在不断改进。基于简单直观的集成接口,可以有效地帮助企业快速定义和执行定制化的工作流,用户无需关注底层技术细节,便可安全有效地利用 AI 助手团队。

因此,从某种意义上来讲,CrewAI 不仅是一个解决人工智能协同问题的有效工具,同时,也在重新塑造人类与 AI 之间的关系模式。它将 AI 助手的能力发挥到极致,助推 AI 在各行各业的广泛应用。随着 CrewAI 技术的不断成熟,AI 将成为企业协同工作的重要力量。

Reference :

[1] https://github.com/joaomdmoura/crewai

Adiós !

0 人点赞