分享
基于大模型(LLM)的Agent 应用开发
输入“/”快速插入内容
基于大模型(LLM)的Agent 应用开发
2024年7月8日修改
2024年7月8日创建
作者:半吊子全栈工匠 | 喔家ArchiSelf
原文:
https://mp.weixin.qq.com/s/hxFrD4urtc36TPmq88AQ3Q
目前,业界一般认为基于大模型的应用集中在两个方向上:RAG 和 Agent,无论哪一种应用,设计、实现和优化能够充分利用大模型(LLM)潜力的应用都需要大量的努力和专业知识。随着开发人员开始创建日益复杂的LLM应用程序,开发流程不可避免地变得更加复杂。这种流程的潜在设计空间可能是巨大而复杂的,《
如何构建基于大模型的App
》一文给出了一种探索中的大模型应用开发基础框架,基本可以适用于RAG 和Agent。但是,对于面向Agent的大模型应用开发,有没有其独特之处呢?有没有聚焦于Agent的大模型应用开发框架呢?
那么,什么又是Agent 呢?
1. 什么是Agent
这里的Agent 指的是智能体,可以追溯到明斯基的《society of mind》一书。在那本书中,明斯基对Agent的定义有点抽象——“社会中某个个体经过协商后可求得问题的解,这个个体就是agent”。在计算机领域,agent是一种通过传感器感知其环境,并通过执行器作用于该环境的实体,因此,可以把实体定义为一种从感知序列到实体动作的映射。一般认为,Agent是指驻留在某一环境下,能持续自主地发挥作用,具备自主性、反应性、社会性、主动性等特征的计算实体。
智能,是Agent 与环境相互作用的涌现属性。
1.1 Agent 的结构与特性
Agent 的一般结构如下图所示:
Agent 的主要特性有:
● 自主性(Autonomy) :运行无需人类或其它 Agent 的直接干预,对其自身行为及内部状态进行某种控制。
● 社会性(Social Ability) 能通过某种 通信与其它 Agent(或人类)进行交互。交互主要有 三种类型:协作(Cooperation)、协调(Coordination)和协商 (Negotiation)。
● 反应性(Reactivity):能感知环境(可以是物理世界、一个经图形用户接口连接的用户、一系列其 它Agent、Internet 或所有这些的组合),并能对环境的变化及时作出反应。
● 主动性(Pro-activeness):不但能对环境作出反应,能够积极主动地做出使其目标得以实现的行为。
如果尝试对Agent做一点儿形式化表达,可能是这样的:
Agent = platform+ agent program
platform = computing device + sensor+ action
agent program 是 agent function 的真子集
1.2 大模型领域中的Agent
在大模型领域,大模型替代了传统agent 中的规则引擎以及知识库,Agent提供了并寻求推理、观察、批评和验证的对话通道。特别是当配置了正确的提示和推理设置时,单个LLM就可以显示出广泛的功能 ,不同配置的Agent之间的对话可以帮助以模块化并以互补的方式将这些广泛的LLM功能结合起来。
开发人员可以轻松、快速地创建具有不同角色的Agent,例如,使用Agent来编写代码、执行代码、连接人工反馈、验证输出等。通过选择和配置内置功能的子集,Agent的后端也可以很容易地进行扩展,以允许更多的自定义行为。
2. 什么是Multi-Agent
Multi-Agent(多智能体系统) 是指由多个自主个体组成的群体系统,其目标是通过个体间的相互信息通信和交互作用。
一般地,Multi-Agent由一系列相互作用的Agent及其相应的组织规则和信息交互协议构成,内部的各个Agent之间通过相互通信、合作、竞争等方式,完成单个Agent不能完成的,大量而又复杂的工作,是“系统的系统”。
2.1 Multi-Agent 的系统分类和特点
Multi-Agent 系统(MAS) 主要可以分成以下类别:
Multi-Agent系统的主要具有以下的特点:
1.
自主性。 在Multi-Agent系统中,每个Agent都能管理自身的行为并做到自主 地 合作或者竞争。
2.
容错性。Agent可以共同形成合作的系统用以完成独立或者共同的目标,如果某几个智能体出现了故障,其他智能体将自主地适应新的环境并继续工作,不会使整个系统陷入故障状态。
3.
灵活性和可扩展性。Multi-Agent系统本身采用分布式设计,Agent具有高内聚低耦合的特性,使得系统表现出极强的可扩展性。
4.
协作能力。Multi-Agent系统是分布式系统,Agent之间可以通过合适的策略相互协作完成全局目标。
2.2 大模型领域中的Multi-Agent
具体而言, 在基于大模型的应用领域中,当复杂任务被分解成更简单的子任务时,LLM已经被证明了拥有解决复杂任务的能力。Multi-Agent 的通信与协作可以通过“对话”这一直观的方式实现这种子任务的分拆和集成。
为了使基于大模型的Agent适合于Multi-Agent的对话,每个Agent都可以进行对话,它们可以接收、响应和响应消息。当配置正确时 ,Agent可以自动与其他代理进行多次对话,或者在某些对话轮次中请求人工输入,从而通过人工反馈形成RLHF。可对话的Agent设计利用了LLM通过聊天获取反馈并取得进展的强大能力,还允许以模块化的方式组合LLM的功能。
3. 基于大模型的常见Agent 和 Multi-Agent 系统
3.1 单Agent 系统
基于大模型的常见单Agent 系统包括:
•
AutoGPT:AutoGPT是一个AI代理的开源实现,它试图自动实现一个给定的目标。它遵循单Agent范式,使用了许多有用的工具来增强AI模型,并且不支持Multi-Agent协作。
•
ChatGPT+ (code interpreter or plugin) :ChatGPT是一种会话AI Agent,现在可以与code interpreter或插件一起使用。code interpreter使ChatGPT能够执行代码,而插件通过管理工具增强了ChatGPT。
•
LangChain Agent:LangChain是开发基于LLM应用的通用框架。LangChain有各种类型的代理,ReAct Agent是其中一个著名的示例。LangChain所有代理都遵循单Agent范式,并不是天生为交流和协作模式而设计的。