AI Agent智能体概述及原理

news2024/11/24 11:13:25

AI Agent概述

AI Agent旨在理解、分析和响应人类输入,像人类一样执行任务、做出决策并与环境互动。它们可以是遵循预定义规则的简单系统,也可以是根据经验学习和适应的复杂、自主的实体;可以是基于软件的实体,也可以是物理实体。它们被用于各种领域,包括机器人、游戏、虚拟助理、自动驾驶汽车等。这些智能体可以是反应性的(直接对刺激做出反应)、深思熟虑的(计划和决策),甚至具有学习能力(根据数据和经验调整它们的行为)。

为什么需要AI Agent

为什么大语言模型(LLM)刚流行不久,就需要AI Agent呢?

因为在特定行业场景中,通用大模型具有的泛化服务特性,很难在某些特定领域知识问答、内容生成、业务处理和管理决策等方面精准满足用户的需求;同时LLM仅限于它们所训练的知识,并且这些知识很快就会过时。
LLM的一些缺点:

  1. 会产生幻觉。
  2. 结果并不总是真实的。
  3. 对时事的了解有限或一无所知。
  4. 很难应对复杂的计算。

这些缺点就是AI Agent的用武之地,它可以利用外部的知识库、长短期记忆以及其他外部工具来克服这些限制。

这里的工具是什么呢?工具就是代理用它来完成特定任务的一个插件、一个集成API、一个代码库等等,例如:

  • 搜索:获取最新信息
  • Python REPL:执行代码
  • Wolfram:进行复杂的计算
  • 外部API:获取特定信息
  • 向量数据库:进行记忆存储

AI Agent 和大模型的还有一个区别在于,大模型与人类之间的交互是基于 prompt 实现的,用户 prompt是否清晰明确会影响大模型回答的效果。而 AI Agent的工作仅需给定一个目标,它就能够通过控制端、感知端、执行端的配合来针对目标独立思考并做出行动。

AI Agent的类型

从工作模式来看,AI智能体可以分为单Agent、多Agent、混合Agent(人机交互Agent)三种类型:

单Agent:这种代理侧重于执行单一任务或一系列相关任务,且不需要与其他智能体进行交互。单个代理可以根据任务执行不同的操作,如需求分析、项目读取、代码生成等。例如手机上的Siri或Google Assistant,你可以要求它设置闹钟、查询天气、播放音乐等,每个请求都是由单个AI代理独立处理的,它根据你的命令执行特定的任务。
在这里插入图片描述
单智能体的核心在于 LLM 与感知、行动的配合。LLM 通过理解用户的任务,推理出需要调用的工具或行动,并基于调用或行动结果给用户反馈。但是对于很多场景来说,单智能体能做的还是太有限了。以写稿为例,完成的操作流程中该场景至少需要4个智能体:

  • Researcher: 根据需求,上网搜各种资料,并把内容扒下来、进行总结。
  • Editor: 根据需求和 Researcher 提供的资料,给出稿件的方向和框架。
  • Writer: 根据 Editor 的指示,完成稿件撰写。
  • Reviewer: 审稿,提出修改意见,返回给 Writer 做改进。
    上面这4个智能体,既是4个角色,也是写稿工作流中的4个步骤。显然,单个智能体无法胜任。而且,类似 Reviewer 这样的角色还能让 LLM 自我审核、防止“脑残”。

多角色、复杂流程,需要多个 Agent 协作才能胜任,因此需要构建多智能体系统。多智能体系统会为不同的 Agent 赋予 不同的角色定位, 通过 Agent 之间的 协作来完成复杂的任务。 而在完成任务的过程中,相比于单智能体来说,与用户的交互会更少一些。 多智能体场景主要关注智能体们如何有效地协调并协作解决问题,根据任务的协作方式来看可以分为合作型和对抗型:
在这里插入图片描述

合作型互动:作为实际应用中最为广泛的类型,合作型的智能体系统可以有效提高任务效率、共同改进决策。具体来说,根据合作形式的不同,又可分为无序合作与有序合作。
当所有智能体自由地表达自己的观点、看法,以一种没有顺序的方式进行合作时,称为无序合作(动态对话拓扑)。
当所有智能体遵循一定的规则,例如以流水线的形式逐一发表自己的观点时,整个合作过程井然有序,称为有序合作(静态对话拓扑)。

对抗型互动:智能体们以一种针锋相对的对抗方式进行互动。通过竞争、谈判、辩论的形式,智能体抛弃原先可能错误的信念,对自己的行为或者推理过程进行有意义的反思,最终带来整个系统响应质量的提升。

混合Agent:这种模式中,人工智能系统和人类共同参与决策过程,交互合作完成任务,强调的是人机协作的重要性和互补性。智慧医疗、智慧城市等专业领域可以使用混合智能体来完成复杂的专业工作。以智慧医疗为例,医生和AI系统共同进行病情诊断,AI系统可以快速分析病人的医疗记录、影像资料等,提供初步的诊断建议;而医生则可以基于AI的分析结果和自己的专业知识和经验,做出最终的诊断决定。
在这里插入图片描述

基本构成和技术原理

AI Agent的基本构成

复旦大学NLP团队在《A Survey on Large Language Model basedAutonomous Agents》一文中总结性地指出,如果基于大语言模型构建AI Agent,其总体框架由大脑、感知和行动三个关键部分组成:
在这里插入图片描述
(此案例:当一个人问是否会下雨时,感知模块将指令转换为LLM可以理解的表示。然后,大脑模块开始根据当前天气和互联网上的天气预报进行推理。最后,动作模块做出响应,将伞交给人类。通过重复上述过程,智能体可以不断地获得反馈并与环境进行交互。)

  • 大脑:主要由一个大型语言模型组成,该模型不仅存储知识和记忆,还承担信息处理和决策功能,能够呈现推理和规划过程,以很好地处理未知任务。
  • 感知:感知模块的核心目的是将主体的感知空间从纯文本领域扩展到文本、听觉和视觉模式。
  • 行动:在代理的构建中,行动模块接收大脑模块发送的动作序列,并执行与环境交互的动作。

在感知环境后,人类会对大脑中感知到的信息进行整合、分析和推理,并做出决策。随后,他们利用神经系统控制自己的身体,并进行适应性或创造性的行动,如交谈、躲避障碍或生火。当一个智能体拥有类似大脑的结构,以及知识、记忆、推理、规划、泛化能力和多模式感知能力时,它也有可能对周围环境做出各种类似人类的反应。在智能体的构建过程中,动作模块接收大脑模块发送的动作序列,并执行与环境交互的动作。

对细节感兴趣可进一步查阅原论文:https://arxiv.org/pdf/2309.07864.pdf
在这里插入图片描述

控制端(Brain)

作为控制中心的大脑(Brain)模块负责处理信息,以及记忆和知识的存储处理活动,如思考、决策和操作。

我们以以下五种能力来探讨大脑作为控制中心的基础:

自然语言交互:

  • 多轮交互对话能力:基于LLM的AI Agent能够利用已有的信息不断提炼输出,进行多轮对话,有效地实现最终目标

  • 高质量的文本生成:作为控制端核心的LLM能够生成流畅、多样、新颖、可控的文本,且可进行语法错误检测

  • 潜在意图理解:除了直观表现出的内容,语言背后可能还传递了说话者的意图、偏好等信息。言外之意有助于代理更高效地沟通与合作,作为控制端核心的LLM凸显了基础模型理解人类意图的潜力,但当涉及到模糊的指令等其他方面,仍然是个挑战

知识:

  • Scale Law:当LLM有更多的参数、更多的训练语料时,可以学习到更多的知识

  • 知识类别:这些知识包括语言知识、常识知识、专业领域知识

  • 潜在问题:LLM其本身存在过时、错误和幻觉等问题,现有的一些研究通过知识编辑或调用外部知识库等方法,可以在一定程度上得到缓解。

记忆

  • 储存长短期记忆:储存了代理过往的观察、思考和行动序列。通过特定的记忆机制,代理可以确保它们熟练地处理一系列连续的任务,同时有效地反思并应用先前的策略,使其借鉴过去的经验来适应陌生的环境

  • 长短期记忆:

    1. 短期记忆:可以输入LLM上下文长度以内的记忆
    2. 长期记忆:这为代理提供了长时间保留和回忆(无限)信息的能力,通常是通过利用外部向量存储和快速检索、以及设定系统角色来实现的
  • 两个困难点:历史上下文长度的限制 & 如何提取更相关的记忆

  • 用于提升记忆能力的方法:

    1. 扩展基于Transformer架构的长度限制:针对 Transformers 固有的序列长度限制问题进行改进。现有手段包括文本截断、分割输入、强调文本的关键部分、修改注意力机制以降低复杂性
    2. 记忆总结:对记忆进行摘要总结,增强代理从记忆中提取关键细节的能力。现有手段包括使用提示、反思过程、分层过程
    3. 记忆压缩:通过采用合适的数据结来压缩记忆,可以提高智能代理的记忆检索效率

推理和规划

  • 推理能力:对于解决复杂任务至关重要;包括演绎、归纳和溯因,以证据和逻辑为基础,是解决问题、决策和批判性分析的基石

  • LLM-based Agent的推理能力:包括思维链(CoT)、self-consistency、self-polish、self-refine以及selection-inference

  • 规划能力:通过推理,Agent将复杂的任务分解为更易于管理的子任务,并为每个子任务设计合适的计划。此外,随着任务的进行,Agent可以使用自省来修改任务执行计划,确保其更好地与现实世界的情况保持一致。

  • 规划的两个步骤:

    1. 计划制定(Plan Formulation):代理将复杂任务分解为更易于管理的子任务。例如:一次性分解再按顺序执行、逐步规划并执行、多路规划并选取最优路径等。在一些需要专业知识的场景中,代理可与特定领域的 Planner 模块集成,提升能力

    2. 计划反思(Plan Reflection):在制定计划后,可以进行反思并评估其优劣。这种反思一般来自三个方面:借助内部反馈机制;与人类互动获得反馈;从环境中获得反馈。

迁移和泛化能力

  • 动态学习能力:在大量语料库上进行预训练的LLMs 具备强大的在知识、应用上的迁移与泛化能力。一个好的Agent不仅仅是静态的知识库,还应具备动态的学习能力

  • 对未知任务的泛化(Unseen Task Generalization):随着模型规模与训练数据的增大,LLMs 在解决未知任务上涌现出了惊人的能力,从而提高了Agent对于未知任务的泛化迁移能力;值得注意的是prompt的选择是至关重要的,并且直接在prompt上进行训练可以提高模型在推广到未知任务时的鲁棒性

  • 情景学习(In-context Learning):LLMs可以通过上下文学习来执行各种复杂的任务(例如,few-shot learning);这种能力还可以扩展到文本以外的多模态场景,为Agent在现实世界中的应用提供了更多可能性

持续学习(Continual Learning):LLMs在促进Agent持续学习方面的能咯,包括持续获取和更新技能;持续学习的主要挑战是灾难性遗忘,即当模型学习新任务时容易丢失过往任务中的知识。专有领域的Agent应当尽量避免丢失通用领域的知识。

感知端(Perception)

人类和动物都依靠眼睛和耳朵等感觉器官从周围环境中收集信息,这些感知输入被转换成神经信号并发送到大脑进行处理,使我们能够感知世界并与之互动。
同样,对于LLM-based Agent来说,接收多模态的感知、信息也是至关重要的。这种扩展的感知空间有助于智能体更好地理解其环境,提升通用性、信息利用度。

目前,多模态的信息输入主要包括:
在这里插入图片描述

文本输入:LLM强大的文字处理、语言理解能力

视觉输入:LLMs 本身并不具备视觉的感知能力,只能理解离散的文本内容;而视觉输入通常包含有关世界的大量信息,包括对象的属性,空间关系,场景布局等等。

  • 针对LLMs无法理解图像的问题,常见的解决方法有:
    1. Image Captioning:根据视觉输入生成对应的文字描述,从而可以被 LLMs 直接理解,且 计算成本低;但是低带宽,且会忽略很多的信息

    2. 视觉基础模型 + LLMs:用transformer对视觉信息进行编码表示,通过对齐操作来让模型 理解不同模态的内容,可以端到端的方式进行训练;但是计算成本非常高

视频输入:对于视频输入,其是由一系列连续的图像帧组成。因此,智能体用于感知图像的方法可能适用于视频领域,只是增加了一个时间维度,agent还需要对不同帧之间的时间关系进行理解。

听觉输入:

  • 一个非常直观的处理方法是,Agent可以使用LLMs作为控制中心,以级联方式调用现有的工具集或模型库来感知音频信息。例如,AudioGPT充分调用了FastSpeech(文本到语音)、GenerSpeech(风格转换)、Whisper(语音识别)等模型的功能。
  • 另一种方法将感知方法从视觉领域迁移到音频领域,AST(音频频谱图转换器)采用类似于ViT的Transformer架构来处理音频频谱图图像。通过将音频频谱图分割成小块,实现对音频信息的有效编码

其他输入:引入现实世界的更多的输入,配备更丰富的感知模块。例如:触觉和嗅觉;感知周围环境的温度、湿度和亮度;眼球追踪、身体动作捕捉,甚至是脑机交互中的脑波信号
此外,还可以为代理引入对更广阔的整体环境的感知:采用激光雷达、GPS、惯性测量单元等成熟的感知模块。

行动端(Action)

在Agent的构建中,行动端接收大脑端发送的动作序列,并执行动作与环境进行交互。当一个Agent拥有类似大脑的结构,具有知识、记忆、推理、计划和泛化能力,以及多模态感知能力时,它也有望拥有多样化的行动范围。
在这里插入图片描述

文本输出:LLM-based Agent的固有能力

工具使用:LLM-based Agent在某些方面存在局限性,使用工具可以增强代理的能力。专门的工具使LLM能够增强其在某些特定领域的专业知识,并以可插拔的形式更适合特定于领域的需求(借助工具完成任务的Agent表现出更强的可解释性和鲁棒性,使用这些工具的代理可以更好地处理轻微的输入修改,并且对对抗性攻击更有弹性;可以分解任务,作为集成工具的核心)
具身行动:在追求通用人工智能(AGI)的过程中,具身智能体被认为是一个关键的范式,其将模型智能与物理世界相结合。

E.g. 做饭机器人Mobile ALOHA (mobile-aloha.github.io)
4.4 角色(Agent Profile/Persona)
Agent通常通过扮演特定角色来执行任务,例如编码人员、教师或者是领域专家。角色模块旨在指示Agent角色的概要,这些概要通常作为系统性信息以影响LLM行为。

目前主要使用以下策略来生成Agent的角色信息:

人工定义:人工指定代理配置文件;例如,如果想设计具有不同性格的代理,可以用“你是一个外向的人”或“你是一个内向的人”来描述Agent。

E.g., MetaGPT、ChatDev和Self-collaboration预先定义了软件开发中的各种角色及其相应的职责,手动为每个代理分配不同的配置文件以促进协作。

LLM生成:代理配置文件基于LLM自动生成。通常,它首先指示概要文件生成规则,阐明目标人群中代理概要文件的组成和属性。然后,可以选择指定几个种子代理配置文件作为少量示例。最后,利用llm生成所有代理配置文件

数据集对齐:代理概要文件是从真实世界的数据集获得的。通常,可以首先将数据集中关于真人的信息组织成自然语言提示,然后利用它来分析代理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1714530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解统计学中的最大值与最小值

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、统计学中的基础概念:最大值与最小值 1. 创建数组与数据导入 2. 求解整体数…

重磅发布,2024精选《制造业商业智能BI最佳实践合集 》

在数字时代,中国制造业正面临着前所未有的深刻变革。 商业环境的复杂性与多变性、全球化竞争的激烈程度、消费需求的快速演变,以及新技术的持续进步等多种因素共同推动着制造企业积极加入数字化转型的潮流。 在这个转型的过程中,转型的速度…

yq—2024/5/29—零钱兑换

代码实现&#xff1a; #define min(a, b) ((a) > (b) ? (b) : (a))int coinChange(int *coins, int coinsSize, int amount) {int dp[amount 1];// 初始化for (int i 0; i < amount 1; i) {dp[i] INT32_MAX;}dp[0] 0;// 01背包 -----先遍历物品&#xff0c;再遍历背…

oracle数据回显时候递归实战

太简单的两篇递归循环 orcale 在项目里递归循环实战 先看资产表T_ATOM_ASSET结构 看业务类别表T_ATOM_BUSI_CATEGORY结构 问题出现 页面显示 实际对应的归属业务分类 涉及到oracle递归实战(这里不会如何直接在atomAsset的seelct里面处理递归回显) 直接在实现层看atomAs…

CTF_RE典例

PZCTF Xor 分组异或 0&#xff0c;1&#xff0c;2&#xff0c;3 不变, 4 , 5 &#xff0c;6&#xff0c;7只异或Str[0], 8,9,10,11要先后异或Str[0],Str[1] s [0x50, 0x5a, 0x43, 0x54, 0x16, 0x2b, 0x11, 0xf, 0x3b, 0x63,0x7e, 0x7e, 0x78, 0x2c, 0x16, 0x3a, 0x71, 0x2e…

The First项目报告:一场由社区驱动的去中心化加密冒险—Turbo

2023年3月14日&#xff0c;由OpenAI公司开发自回归语言模型GPT-4发布上线&#xff0c;一时之间引发AI智能领域的轩然大波&#xff0c;同时受到影响的还有加密行业&#xff0c;一众AI代币纷纷出现大幅度拉升。与此同时&#xff0c;一款名为Turbo的Meme代币出现在市场中&#xff…

DNSlog环境搭建

阿里云域名公网VPS地址 购买阿里云域名后设置“自定义DNSHOST” DNS服务器填写ns1和ns2 如&#xff1a;ns1.aaa.com IP地址填写你的VPS地址 如&#xff1a;1.1.1.1 填写解析记录&#xff0c;一个A记录、一个NS记录 NS记录就是*.域名指向记录值ns1.域名 如&#xff1a;*.aaa…

计算机图形学入门03:二维基本变换

变换(Transformation)可分为模型(Model)变换和视图(Viewing)变换。在3D虚拟场景中相机的移动和旋转&#xff0c;角色人物动画都需要变换&#xff0c;用来描述物体运动。将三维世界投影变换到2D屏幕上成像出来&#xff0c;也需要变换。 1.缩放变换 如上图所示&#xff0c;把一个…

社区供稿丨GPT-4o 对实时互动与 RTC 的影响

以下文章来源于共识粉碎机 &#xff0c;作者AI芋圆子 前面的话&#xff1a; GPT-4o 发布当周&#xff0c;我们的社区伙伴「共识粉碎机」就主办了一场主题为「GPT-4o 对实时互动与 RTC 的影响」讨论会。涉及的话题包括&#xff1a; GPT-4o 如何降低延迟&#xff08;VAD 模块可…

图片怎样在线改像素大小?电脑快速修改图片大小的方法

在设计图片的时候下载的图片尺寸一般会比较大&#xff0c;在网上使用经常会因为尺寸的问题导致无法正常上传&#xff0c;那么如何快速在线改图片大小呢&#xff1f;想要修改图片尺寸可以在直接选择网上的图片改大小工具的功能来快速完成修改&#xff0c;操作简单方便使用&#…

M功能-支付平台(六)

target&#xff1a;离开柬埔寨倒计时-217day 今天突然发现我在csdn居然把我ip属地搞出来了&#xff0c;之前都没注意到&#xff0c;哎 前言 M功能演示版本做到后期(也就是第二周的后面3天)真的很心酸&#xff0c;这边安排的4后端后面都放弃了&#xff0c;觉得做不出来&#…

python Z-score标准化

python Z-score标准化 Zscore标准化sklearn库实现Z-score标准化手动实现Z-score标准化 Zscore标准化 Z-score标准化&#xff08;也称为标准差标准化&#xff09;是一种常见的数据标准化方法&#xff0c;它将数据集中的每个特征的值转换为一个新的尺度&#xff0c;使得转化后的…

设置自动刷新数据透视表的数据源

数据透视表数据源的自动刷新 一般情况操作&#xff1a; 自动刷新操作&#xff1a; 1、定义名称名称 引用位置&#xff1a;OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1)) 2、数据透视表的数据源更改为【源数据】—— 即前面定义的名称 3、数据——全部…

香港优才计划找中介是否是智商税,靠谱中介又该如何找?

关于香港优才计划的申请&#xff0c;找中介帮助还是自己DIY&#xff0c;网络上充斥的声音太多&#xff0c;对不了解的人来说&#xff0c;难以抉择的同时还怕上当受骗。 这其中很容易误导人的关键在于——信息差&#xff01; 今天这篇文章的目的就是想让大家看清一些中介和DIY…

ResNet 原理剖析以及代码复现

原理 ResNet 解决了什么问题&#xff1f; 一言以蔽之&#xff1a;解决了深度的神经网络难以训练的问题。 具体的说&#xff0c;理论上神经网络的深度越深&#xff0c;其训练效果应该越好&#xff0c;但实际上并非如此&#xff0c;层数越深会导致越差的结果并且容易产生梯度爆炸…

Scapy:用Python编写自己的网络抓包工具

随着Python越来越流行&#xff0c;在安全领域的用途也越来越多。比如可以用requests 模块撰写进行Web请求工具&#xff1b;用sockets编写TCP网络通讯程序&#xff1b;解析和生成字节流可以使用struct模块。而要解析和处理网络包在网络安全领域更加普遍&#xff0c;时常我们会使…

Vue——事件修饰符

文章目录 前言阻止默认事件 prevent阻止事件冒泡 stop 前言 在官方文档中对于事件修饰符有一个很好的说明&#xff0c;本篇文章主要记录验证测试的案例。 官方文档 事件修饰符 阻止默认事件 prevent 在js原生的语言中&#xff0c;可以根据标签本身的事件对象进行阻止默认事件…

数组-给出最大容量,求能获得的最大值

一、问题描述 二、解题思路 这个题目其实是求给出数组中&#xff0c;子数组和不大于M中&#xff0c;和最大值的子数组。 求子数组使用双指针就可以解决问题&#xff0c;相对比较简单。&#xff08;如果是子序列&#xff0c;则等价于0-1背包问题&#xff0c;看题目扩展中的问题…

C++笔试强训day36

目录 1.提取不重复的整数 2.【模板】哈夫曼编码 3.abb 1.提取不重复的整数 链接https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1?tpId37&tqId21232&ru/exam/oj 按照题意模拟就行&#xff0c;记得从右往左遍历 #include <iostream> usi…

Vue——计算属性 computed 与方法 methods 区别探究

文章目录 前言计算属性的由来方法实现 计算属性 同样的效果计算属性缓存 vs 方法 前言 在官方文档中&#xff0c;给出了计算属性的说明与用途&#xff0c;也讲述了计算属性与方法的区别点。本篇博客只做自己的探究记录&#xff0c;以官方文档为准。 vue 计算属性 官方文档 …