大语言模型智能体简介

大语言模型(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.mzph.cn/news/746129.shtml

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

相关文章

Compose UI 之 Buttons 按钮 IconButtons 图标按钮

Buttons 按钮 Android Compose UI 库中的 Button 和 IconButton 是两种常用的组件,它们各自具有一些独特的特点。 Button 的特点: 可点击性:Button 是一个可点击的组件,通常用于触发某个操作或事件。文本内容:Button 通常包含文本内容,用于描述按钮的功能或操作。自定义…

【数据结构】模拟实现二叉搜索树

文章目录 1. 二叉搜索树的实现2. 二叉搜索树的应用3. 改造二叉搜索树为 KV 结构4. 二叉搜索树的性能分析 1. 二叉搜索树的实现 namespace key {template<class K>struct BSTreeNode{typedef BSTreeNode<K> Node;Node* _left;Node* _right;K _key;BSTreeNode(const…

YOLOv8独家改进:backbone改进 | 最新大卷积核CNN架构UniRepLKNet,ImageNet 88% | CVPR2024

💡💡💡本文独家改进:大核卷积一统多种模态!RepLK正统续作UniRepLKNet,代替YOLOv8 Backbone 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适…

深度解析HTTP反向代理-okey proxy

反向代理這個概念可能並不常見&#xff0c;但其實它對於提升網路安全和訪問速度方面發揮著很大作用。 HTTP反向代理&#xff08;HTTP Reverse Proxy&#xff09;是一種特殊的代理伺服器&#xff0c;首先它能夠接收互聯網上的連接請求&#xff0c;然後將這些請求轉發給內部網路…

【CSP考点回顾】并查集(1)

并查集 并查集是一种简单而高效的数据结构&#xff0c;主要用于处理一些分离的元素集合的合并与查询问题。它在计算机科学中应用广泛&#xff0c;尤其适用于那些需要动态管理和查询元素分组情况的场景&#xff0c;如网络连接、图的连通分量、社交网络中的群组划分等。通过并查集…

Windows系统搭建Cloudreve结合内网穿透打造可公网访问的私有云盘

目录 ⛳️推荐 1、前言 2、本地网站搭建 2.1 环境使用 2.2 支持组件选择 2.3 网页安装 2.4 测试和使用 2.5 问题解决 3、本地网页发布 3.1 cpolar云端设置 3.2 cpolar本地设置 4、公网访问测试 5、结语 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff…

通讯芯片D3232简介——主要用于工控主板、工业控制器、新能源充电桩等众多涉及RS232通讯的产品。

一、应用领域 D3232芯片主要用于工控主板、工业控制器、程序烧录下载器、仿真器、新能源充电桩等众多涉及RS232通讯的产品。 二、基本特性 D3232芯片由两个线路驱动器、两个线路接收器和双电荷泵电路组成&#xff0c;具有HBM>15kV、CDM>2kV的ESD保护能力&#xff0c;并且…

leetcode解题思路分析(一百五十三)1342 - 1344 题

将数字变成 0 的操作次数 给你一个非负整数 num &#xff0c;请你返回将它变成 0 所需要的步数。 如果当前数字是偶数&#xff0c;你需要把它除以 2 &#xff1b;否则&#xff0c;减去 1 。 直接做就完事 class Solution { public:int numberOfSteps(int num) {int nCnt 0;w…

Java Web项目—餐饮管理系统Day02-管理员后台开发(一)登录

文章目录 1. 创建实体类2. 创建三层调用结构mapperservicecontroller 3. 登录逻辑实现4. 过滤器/拦截器 登录功能开发, 主要是要校验登录账号及密码的准确性, 注意密码使用 base64 加密. 另外一个最重要的是要记住当前用户的id以记住登录状态, 并使用拦截器, 对于部分请求, 需要…

从原理总结chatGPT的Prompt的方法

ChatGPT的Prompt方法是一种引导模型生成对话的技术&#xff0c;它基于前面已经提供的上下文信息&#xff0c;以及一个特定的输入格式来指导模型生成合理、连贯的回答。以下是ChatGPT Prompt方法的原理总结&#xff1a; 输入格式&#xff1a;Prompt方法将对话分为多个轮次&#…

外观模式实战运用

前言 即使在没有学习过设计模式之前&#xff0c;只要是写过代码&#xff0c;都会在不经意间使用到外观模式&#xff0c;或者说用到了外观模式的思想。 外观模式的定义&#xff1a;通过创建一个统一的高层接口&#xff0c;使得复杂的子系统更加容易使用。这个模式为复杂的系统…

Seata 2.x 系列【10】回滚日志表 undo_log

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 表语句…

【Java 并发】AbstractQueuedSynchronizer 中的 Condition

1 简介 任何一个 Java 对象都天然继承于 Object 类, 在线程间实现通信的往往会应用到 Object 的几个方法, 比如 wait(), wait(long timeout), wait(long timeout, int nanos) 与 notify(), notifyAll() 几个方法实现等待 / 通知机制。同样的, 在 Java Lock 体系下也有同样的方…

[C++核心编程](十):文件操作

目录 文件类型 文件三大类 写文本文件 读文本文件 写二进制文件 读二进制文件 文件打开方式 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放&#xff0c;因此通过文件可以将数据持久化 C中对文件操作需要包含头文件<fstream> 文件类…

每日shell脚本之邮件

每日shell脚本之邮件 以下是一个简单的脚本&#xff0c;它接收三个参数&#xff1a;收件人地址、邮件主题和邮件内容。这个脚本将使用系统的默认邮件服务器来发送邮件。 #!/bin/bash# 检查参数数量 if [ $# -ne 3 ]; thenecho "使用方法&#xff1a; $0 <收件人邮箱&…

工具篇--分布式定时任务springBoot--elasticjob简单使用(1)

文章目录 前言一、elasticjob 介绍&#xff1a;二、elasticjob 使用&#xff1a;2.1 部署zookeeper&#xff1a;2.2 引入库2.2 定义任务&#xff1a;2.3 任务执行&#xff1a;2.4 任务执行控制台输出&#xff1a; 三、elasticjob 启动错误&#xff1a;3.1 KeeperErrorCode Ope…

Linux系统架构----Nginx的服务优化

Linux系统架构----Nginx的服务优化 一.隐藏版本号 在生产环境中&#xff0c;需要隐藏Nginx的版本号&#xff0c;以免泄露Nginx的版本&#xff0c;使得攻击者不能针对特定版本进行攻击 查看Nginx的版本有两种方法 使用fiddler工具抓取数据包&#xff0c;查看Nginx版本 在Cen…

【Node.js从基础到高级运用】十二、身份验证与授权:JWT

身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制&#xff0c;将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWT&#xff08;Json Web Token&#xff09; JWT是一种用于双方之间…

蓝桥杯深度优先搜索|剪枝|N皇后问题|路径之谜(C++)

搜索&#xff1a;暴力法算法思想的具体实现 搜索&#xff1a;通用的方法&#xff0c;一个问题如果比较难&#xff0c;那么先尝试一下搜索&#xff0c;或许能启发出更好的算法 技巧&#xff1a;竞赛时遇到不会的难题&#xff0c;用搜索提交一下&#xff0c;说不定部分判题数据很…

R语言tidycmprsk包分析竞争风险模型

竞争风险模型就是指在临床事件中出现和它竞争的结局事件&#xff0c;这是事件会导致原有结局的改变&#xff0c;因此叫做竞争风险模型。比如我们想观察患者肿瘤的复发情况&#xff0c;但是患者在观察期突然车祸死亡&#xff0c;或者因其他疾病死亡&#xff0c;这样我们就观察不…