大语言模型智能体简介

news2024/11/15 10:38:09

大语言模型(LLM)智能体,是一种利用大语言模型进行复杂任务执行的应用。这种智能体通过结合大语言模型与关键模块,如规划和记忆,来执行任务。构建这类智能体时,LLM充当着控制中心或“大脑”的角色,负责管理完成任务或响应用户请求所需的一系列操作。这种智能体的构建,需要依赖于规划、记忆以及工具使用等关键模块。

想象一下,如果我们想要创建一个系统,能够回答如下问题:

在2023年,美国的平均每日卡路里摄入量是多少?

上述问题可能直接通过一个已经掌握了所需知识的LLM来得到回答。如果LLM缺乏回答这个问题的具体知识,我们可以采用一个简单的基于检索增强生成(RAG)系统,使LLM能够访问健康相关的信息或报告。对于更加复杂的问题,比如:

在过去的十年中,美国成年人的平均每日卡路里摄入量的趋势如何变化?这种变化对肥胖率有何影响?能否提供一个图表来展示这段时间内肥胖率的趋势?

仅凭LLM可能不足以解答这类复杂问题。虽然结合LLM与外部知识库可以形成RAG系统,但这样做仍可能不足以应对复杂的查询。因为,这类问题要求LLM将任务拆分为可以通过使用工具和操作流程解决的子任务,以实现最终的回答。构建一个能够访问搜索API、健康相关出版物及公共/私人健康数据库的LLM智能体,可能是一个解决方案,以便提供与卡路里摄入和肥胖相关的信息。

此外,LLM还需要能够使用“代码解释器”工具,以利用相关数据生成有助于理解肥胖趋势的图表。这些可能是构建假设中的LLM智能体时考虑的高级组件,但在实际操作中,还需考虑如何规划处理任务的策略,以及如何通过记忆模块跟踪操作流程、观察和整体进展的状态。

一、大语言模型智能体框架简介

通常,一个大语言模型智能体框架包含以下核心部分:

  • 用户请求 - 表达用户的问题或请求
  • 智能体/大脑 - 作为协调者的智能体核心
  • 规划- 助于智能体为未来行动做规划
  • 记忆 - 管理智能体的历史行为和经验

通过这些组成部分的协同工作,大语言模型智能体能够处理从简单到复杂的各种请求,不仅能够提供直接的答案,还能解决需要深度分析和多步骤操作的问题。这种智能体的能力,使其在处理复杂信息查询、数据分析和可视化表示等方面具有巨大潜力。

1.1 智能体

一款具备广泛应用能力的大语言模型 (LLM) 充当了整个系统的中枢大脑、智能体模块或是协调者角色。通过设计一个含有操作方法和可用工具详细信息的提示模板来启动这个组件。

尽管不强制,但我们还是可以为智能体设定一个具体角色或者塑造一个人格,以明确其职能。这种设定通常包含在提示中,涵盖角色详情、性格、社交及人口统计等信息。根据 [Wang 等人,2023年] 的研究,智能体特征的设定方法包括手工构造、LLM生成或基于数据的方法。

1.2 规划

1.2.1 无反馈规划

规划模块的作用是将用户请求拆分成智能体能够单独解决的若干步骤或子任务。这对于智能体更准确地理解问题和找到可靠解决方案至关重要。规划模块将借助LLM拆分出详尽的计划,包括解答用户问题所需的子任务。常见的任务分解技术包括思路链 (Chain of Thought) 和思路树 (Tree of Thoughts),它们分别代表了单路径推理和多路径推理。以下图表根据 Wang 等人,2023年 的研究,展示了不同策略的比较:

1.2.2 有反馈的规划

之前提到的规划模块未涉及反馈,这在解决复杂任务时面临长期规划的挑战。为应对此挑战,可以采用一种机制,让模型基于过去的行动和观察迭代地反思和调整执行计划。其目的是纠正过去的错误并提升结果质量,这在处理复杂的现实任务时尤其关键,其中试错法是解决问题的关键步骤。两种著名的反思或评估机制方法包括 ReAct 和 Reflexion。

以 ReAct 为例,它将推理与行动结合起来,通过在思考(Thought)、行动(Action)和观察(Observation)这一系列步骤之间交替进行(重复 N 次),帮助大语言模型解决复杂任务。ReAct 通过观察形式从环境中获取反馈。其他反馈类型还可以包括人类和模型反馈。下图展示了 ReAct 的过程及其在问答任务中涉及的各个步骤:

更多关于 ReAct 的信息,请参考以下链接:https://arxiv.org/abs/2210.03629

1.3 内存

智能体的内存模块负责记录其内部日志,涵盖了先前的思考、行为及对环境的观察,也包括与用户的所有互动。在大语言模型智能体的研究文献中,主要区分为两种内存类型:

通过结合短期内存和长期内存,混合内存系统能够增强智能体的长期推理和经验积累能力。

  • 短期内存 - 涉及智能体当前状态的上下文信息,通常通过上下文内学习实现。由于上下文窗口的限制,这种内存是有时限和容量限制的。
  • 长期内存 - 存储智能体过去的行为和思考,这部分信息需要在长时间内被保留并能够被回忆起来。通常通过连接至快速、可扩展的外部向量存储库来实现,以便在需要时为智能体提供相关信息。

在构建智能体时,还会考虑到多种内存格式,如自然语言、数据嵌入、数据库和结构化列表等。这些格式可以组合使用,例如在 Minecraft 游戏中的 Ghost (GITM) 采用了键值对结构,其中键用自然语言表示,值则由嵌入向量构成。

规划与内存模块共同支持智能体在动态环境中的有效运作,使其能够回顾过去行为并规划未来动作。

1.4 工具

LLM 智能体通过工具与外界环境互动,这些工具包括 Wikipedia 搜索 API、代码解释器和数学引擎等。工具的范畴也涵盖数据库、知识库和外部模型。智能体利用这些工具执行任务,通过工作流程获取信息或完成子任务,以满足用户的需求。例如,在处理健康查询时,代码解释器就是一个能够执行代码并生成所需图表信息的工具。

LLM 以多种方式使用这些工具:

  • MRKL 结合了 LLM 和专家模块,后者可以是其他 LLM 或特定功能的符号系统(如计算器或天气 API)。
  • Toolformer 对 LLM 进行微调,使其能够使用外部工具 API。
  • 函数调用( Function Calling )功能增强了 LLM 的工具使用能力,它定义了一套工具 API 并将其作为请求的一部分提供给模型。
  • HuggingGPT 利用 LLM 作为任务规划器,通过连接各种现有的 AI 模型(根据描述)来解决 AI 任务。

二、大语言模型智能体的应用领域

ChemCrow 智能体,专门设计用于应对有机合成、药物发现和材料设计等领域的任务。图来源:Bran et al., 2023

本节将介绍几个大语言模型智能体因其出色的复杂推理和常识理解能力而在不同领域和案例中得到有效应用的实例。

2.1 著名的大语言模型智能体

  • Ma et al. (2023) 的研究探讨了会话式 AI 智能体在提供心理健康支持方面的效用,指出这类智能体能助人减轻焦虑,但有时也可能输出有害信息。

  • Horton (2023) 通过给予基于大语言模型(LLM)的智能体以“资产、偏好及个性”,模拟人类在经济行为场景中的决策过程。

  • 生成式 AI 智能体 和 AgentSims 都致力于在虚拟小镇环境中重现人类的日常生活,通过搭建多元化的智能体完成此目标。

  • 盲审 利用多个语言模型模拟法官的判决过程,其对现实世界最高法院裁决的预测准确度高于随机水平。

  • Ziems et al. (2023) 展示了能够辅助研究人员进行文献综述、脚本编写和关键词提取等任务的智能体。

  • ChemCrow 描述了一个专注于化学领域的大语言模型智能体,该智能体能够独立规划并执行驱虫剂、有机催化剂的合成及新型色素的开发。

  • [Boiko et al. (2023)] 展示了如何集成多个大语言模型,自动化科研实验的设计、规划及执行过程。

  • 数学智能体 旨在辅助研究人员探索数学问题,发现新解,完成证明。EduChat 和 CodeHelp 则是专为教育领域设计的两个杰出的大语言模型智能体。

  • Mehta et al. (2023) 提出了一种互动框架,允许建筑师与 AI 智能体合作,在三维模拟环境中设计建筑。

  • ChatDev、ToolLLM、MetaGPT 等例证展示了 AI 智能体在自动化编程、调试、测试及支持软件工程其他任务方面的潜力。

  • D-Bot 是一个基于大语言模型的数据库管理智能体,它不断积累数据库维护的经验,并为数据库的诊断与优化提供咨询建议。

  • IELLM 利用大语言模型 (LLMs) 面向石油与天然气产业的特定需求,开展解决方案探索,以应对该行业面临的复杂挑战。

  • Dasgupta et al. 2023 开发了一个全新的智能体系统,该系统整合了身体动作的推理与任务计划功能,旨在提升机器执行任务的效率和自主性。

  • OS-Copilot 提供了一个创新框架,旨在打造能够全面操作操作系统 (OS) 的通用智能体,这些智能体能够灵活应对网络浏览、编码操作、文件管理、多媒体处理及与众多第三方应用的交互。

2.2 大语言模型智能体工具

AutoGen 功能展示; 图片来源: https://microsoft.github.io/autogen

下面列出了一些在构建大语言模型智能体过程中常用的重要工具和框架:

  • LangChain:一个开发基于语言模型的应用程序和智能体的框架,旨在简化语言模型的应用开发流程。
  • AutoGPT:提供了一套工具,帮助开发者构建 AI 智能体,简化了AI智能体的开发工作。
  • Langroid:通过多智能体编程,将智能体作为核心组件,通过消息交互协作完成任务,简化了大语言模型应用的构建过程。
  • AutoGen:一个使多个智能体能够交流协作解决问题的大语言模型应用开发框架,推动了智能体之间的对话和任务解决能力。
  • OpenAgents:一个开放的平台,用于在实际环境中使用和托管语言智能体,促进了语言智能体的广泛应用。
  • LlamaIndex:一个连接自定义数据源与大语言模型的框架,扩展了大语言模型的应用场景。
  • GPT Engineer:专注于自动化代码生成以辅助完成开发任务,简化了编程工作。
  • DemoGPT:一个能够创建交互式 Streamlit 应用的自主 AI 智能体,增强了应用的互动性。
  • GPT Researcher:一个设计用于执行各种任务的全面在线研究的自主智能体,提升了研究效率。
  • AgentVerse:旨在促进在不同应用中部署基于大语言模型的多个智能体,提供了丰富的应用可能性。
  • Agents:一个开源的构建自主语言智能体的库/框架,支持长短期记忆、工具使用、网页导航、多智能体通信等功能,还新增了人机交互和符号控制等新功能,是构建高级智能体的强大工具。
  • BMTools:通过工具扩展语言模型的能力,并为社区提供一个构建和分享这些工具的平台,促进了工具的创新和共享。
  • crewAI:为工程师设计的 AI 智能体框架,以简单强大为特点,帮助构建智能体和自动化流程,简化了智能体的开发和部署。

三、大语言模型智能体的评估

AgentBench 基准测试,旨在评估作为智能体的大语言模型在现实世界挑战及八种不同环境下的表现(图源:Liu 等,2023)。

与评估大语言模型本身相似,对大语言模型智能体的评估也是一项充满挑战的任务。根据 Wang 等人(2023年)的研究,常用的评估方法包括:

  • 人工评注:涉及人类评价者直接就应用中重要的各个方面对大语言模型的输出进行评分,这些方面包括诚实性、有用性、参与度、公正性等。
  • 图灵测试:通过让人类评价者比较真实人类和智能体的输出结果来进行评估,如果结果无法区分,则意味着智能体达到了与人类相似的表现水平。
  • 量化指标:精心设计的量化指标用来反映智能体的质量,包括任务完成度指标、与人类相似度指标及效率指标等。
  • 评估协议:这指的是确定如何应用这些量化指标的常见评估流程,例如真实世界模拟、社交评估、多任务评估和软件测试等。
  • 基准测试:为了评估大语言模型智能体的性能,设计了若干基准测试,其中包括 ALFWorld、IGLU、Tachikuma、AgentBench、SocKET、AgentSims、ToolBench、WebShop、Mobile-Env、WebArena、GentBench、RocoBench、EmotionBench、PEB、ClemBench 和 E2E 等。

四、挑战

大语言模型(LLM)智能体正处于发展初期,构建它们的过程中仍面临诸多挑战和限制:

  • 角色适应能力:LLM 智能体在特定领域内有效执行任务通常需要适配特定角色。针对 LLM 较弱的角色识别能力,可以通过针对性地微调 LLM,使用反映罕见角色或心理特征的数据来增强其性能。
  • 长期规划与有限上下文长度:基于长时间历史的规划是一大挑战,可能导致错误累积,智能体难以自我纠错。同时,LLM 支持的上下文长度有限,这可能制约智能体的功能,比如限制其利用短期记忆的能力。
  • 广泛的人类价值对齐:使智能体与多元化的人类价值观保持一致同样具有挑战性,这在传统 LLM 中也是一个普遍问题。一种可能的解决方法是通过设计先进的提示策略来调整 LLM,以便更好地对齐人类价值。
  • 提示的稳定性与可靠性:LLM 智能体可能涉及设计多个提示来支持不同功能模块,如记忆和规划,而对提示微小变化的高敏感度常导致可靠性问题。整个提示框架的设计使其更易受到稳定性问题的影响。可能的解决办法包括通过反复试验来设计提示元素、自动优化或调整提示,或利用 GPT 自动生成提示。另一个常见问题是“语言幻觉”,LLM 智能体依赖自然语言与外部组件交互,可能因为接收到的冲突信息而产生信息准确性问题。
  • 知识界限:控制 LLM 的知识范围具有挑战性,这直接影响模拟活动的有效性。LLM 内部的知识可能携带偏见或使用用户不熟悉的信息,这在特定环境下可能影响智能体的表现。
  • 效率:LLM 智能体的操作涉及大量请求处理,这可能影响其行动的效率,因其高度依赖于 LLM 的推理速度。同时,在部署多个智能体时,成本也成为了一个需要考虑的因素。

五、参考资料

  • 利用大语言模型驱动的自主AI智能体
  • MRKL 系统:融合大语言模型、外部知识源与离散逻辑的模块化神经符号框架
  • 大语言模型支撑的自主智能体综述
  • 基于大语言模型的智能体:崛起及其潜能综览
  • 基于大语言模型的多智能体系统:进展与挑战综述
  • 语言智能体的认知框架
  • 大语言模型智能体入门
  • LangChain 智能体实践
  • 打造你的首款大语言模型智能体应用
  • 为生产环境打造大语言模型应用指南
  • 精选大语言模型智能体资源集
  • 精选大语言模型驱动智能体资源
  • LangChain:功能、工具与智能体综合应用

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

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

相关文章

浏览器设置字体1px时,不能正常显示

问题如下,某版本浏览器,字体很小时,无法正常显示,解决方案有三种。 解决方案1 解决方案2 解决方案3

WebServer -- 面试题(下)

👂 夏风 - Gifty - 单曲 - 网易云音乐 目录 🌼前言 🎂面试题(下) 4)HTTP报文解析 为什么要用状态机 状态转移图画一下 https 协议为什么安全 https 的 ssl 连接过程 GET 和 POST 的区别 5)数据库注册登录 登…

十五、软考-系统架构设计师笔记-面向服务架构设计理论与实践

1、SOA相关概念 面向服务的架构(SOA)的定义 SOA 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构…

[RoarCTF 2019]Easy Java -不会编程的崽

考察一下大家对java-web知识点的掌握 熟悉的登录界面让你想起了某位故人没有,哈哈,但是并非sql注入。一番基础尝试无果后,看看help吧 这个url让你想起某位故人了吗?对文件下载。但是似乎没有响应。改成post请求即可。 我看见pk了&…

unity3d Animal Controller的Animal组件中General基础部分理解

控制器介绍 动物脚本负责控制动物的所有运动逻辑.它管理所有的动画师和刚体参数,以及所有的状态和模式,动物可以做。 动物控制器 是一个动画框架控制器,根动或到位,为任何生物或人形。它利用刚体与物理世界的互动和动画师的玩动画。 States States 是不互相重叠的动画。例如…

canvas绘制圆形进度条

canvas绘制圆形进度条 用canvas绘制了一个圆形进度条&#xff0c;记录一下&#xff1a; 效果如下&#xff1a; 感觉效果还行&#xff0c;不过有待优化 代码如下&#xff1a; 我是用Vue写的 组件的代码&#xff1a; progressCanvas.vue <template><div><can…

Linux VM虚拟环境 设置静态IP

目录 查看自己的网卡配置说明重启网卡实例测试配置情况测试网络 查看自己的网卡 ip a配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens32配置说明 [rootlinux-server ~]# cd /etc/sysconfig/network-scripts/ #网卡配置文件存放路径 [rootlinux-server network-scri…

C/C++中{}的用法总结(全)

C基础专栏&#xff1a;http://t.csdnimg.cn/UjhPR 目录 1.定义初始化列表&#xff08;Initializer List&#xff09; 2.类成员初始化列表 3.无默认构造函数的类的默认初始化&#xff08;C11 及以后版本&#xff09; 4.初始化器列表构造函数&#xff08;C11 及以后版本&…

js判断对象是否有某个属性

前端判断后端接口是否返回某个字段的时候 <script>var obj { name: "John", age: 30 };console.log(obj.hasOwnProperty("name")); // 输出 trueconsole.log(obj.hasOwnProperty("email")); // 输出 falselet obj11 { name: "Joh…

一文搞懂多模态:BeiT-3之前的14个多模态+4个周边原理解读

在人工智能的世界里&#xff0c;多模态学习不断地展现出其重要性。这个领域的迅速发展不仅促进了不同类型数据之间的深度融合&#xff0c;还为机器理解世界提供了更加丰富和细腻的视角。随着科技的不断演进&#xff0c;人工智能模型已经开始渐渐具备处理和理解从文本、图像&…

MySQL主从复制的原理

MySQL 主从复制是一种数据复制技术&#xff0c;用于在多个数据库服务器之间的数据同步。在主从复制架构中&#xff0c;一个服务器被设置为主服务器&#xff0c;充当数据源&#xff0c;其他服务器被设置为从服务器&#xff0c;用来复制主服务器的数据。 1.主从复制优点 主从复…

Unity Timeline学习笔记(3) - SignalTrack信号轨道和自定义带参数的Marker信号和轨道

信号轨道&#xff0c;顾名思义就是运行到某处发送一个信号。 普通用法 普通用法就是没有任何封装的&#xff0c;个人感觉特别难用&#xff0c;但是有必要理解一下工作原理。 添加信号 我们添加一个信号资源 生成后可以看到资源文件&#xff0c;这个是可以拖到SignalTrack上…

web 服务搭建

实验拓扑图&#xff1a; 实验环境搭建 Centos7-5作为Client&#xff08;12.0.0.12/24&#xff09;&#xff1b;Centos7-1作为网关服务器&#xff08;配置两块网卡ens33 192.168.246.7/24&#xff0c;ens36 12.0.0.1/24&#xff09;&#xff1b;Centos7-2作为Web1&#xff08;19…

2024年云仓酒庄深惠公司发布会圆满落幕:共襄盛举,携手共赢

原标题&#xff1a;2024年云仓酒庄深惠公司发布会圆满落幕&#xff1a;共襄盛举&#xff0c;携手共赢 随着岁月的流转&#xff0c;云仓酒庄以其卓越的品质和不懈的创新精神&#xff0c;在葡萄酒行业中独树一帜。2024年&#xff0c;云仓酒庄再次迎来了一场盛大的发布会——深惠…

一文读懂『归并排序』算法(Merge Sort)

目录 归并排序算法&#xff08;Merge Sort&#xff09;简介 算法基本思想和流程&#xff08;时间复杂度O(nlogn) &#xff09; ​编辑代码实现 归并排序模板&#xff08;背诵&#xff09; 归并排序算法&#xff08;Merge Sort&#xff09;简介 归并排序&#xff08;Merge …

MyBatis入门(JDBC规范,MyBatis,连接池,Lombok)【详解】

目录 一、JDBC规范【了解】 1. JDBC介绍 2. JDBC示例 3. JDBC的问题 二、MyBatis入门【重点】 1. Mybatis是什么 2. Mybatis使用步骤 3. Mybatis入门案例 1.创建SpringBoot工程 2.创建Mapper 3.功能测试 三、连接池【了解】 1. 什么是连接池 2. 有哪些数据库连接池…

Java_9最大连续1的个数

最大连续1的个数 给定一个二进制数组 nums &#xff0c; 计算其中最大连续 1 的个数。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,0,1,1,1] 输出&#xff1a;3 解释&#xff1a;开头的两位和最后的三位都是连续 1 &#xff0c;所以最大连续 1 的个数是 3. 示例 2: 输入…

SIP-7043 SV-7043网络吸顶喇叭商场会议室播放器10W网络有源吸顶喇叭

SIP-7043 SV-7043网络吸顶喇叭商场会议室播放器 10W网络有源吸顶喇叭 一、描述 SIP-7043是我司的一款SIP网络有源吸顶喇叭&#xff0c;具有10/100M以太网接口&#xff0c;内置有一个高品质扬声器&#xff0c;将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率1…

Ubuntu23.10安装FFmpeg及编译FFmpeg源码

安装FFmpeg: 打开终端: 输入 sudo apt install ffmpeg 安装成功: 验证FFmpeg 默认安装位置与库与头文件位置 使用FFmpeg源码编译: 1.安装YASM sudo apt-get install yasm

STM32 晶振(用示波器测RCC频率是否一致)

如果测出的频率不准确&#xff0c;可以修改一下看看是否有改善&#xff1a;