(读书笔记-大模型) LLM Powered Autonomous Agents

目录

智能体系统的概念

规划组件

记忆组件

工具组件

案例研究


智能体系统的概念

在大语言模型(LLM)赋能的自主智能体系统中,LLM 充当了智能体的大脑,其三个关键组件分别如下:

首先是规划,它又分为以下内容:

  • 子目标和分解。智能体将大型任务分解为更小、可管理的子目标,从而高效处理复杂的任务;

  • 反思和完善:智能体可以对过去的行为展开自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,提高最终结果的质量。

其次是记忆,分为了短期记忆和长期记忆:

  • 短期记忆:作者认为所有的上下文学习(参见提示工程)都是利用模型的短期记忆来学习。

  • 长期记忆:为智能体提供了长时间保留和回忆(无限)信息的能力,通常利用外部向量存储和快速检索实现。

最后是工具使用:

  • 智能体学习调用外部 API 来获取模型权重中缺失的额外信息(通常在预训练后很难更改),包括当前信息、代码执行能力、对专有信息源的访问等。

下图 1 为 LLM 赋能的自主智能体系统概览。

规划组件

  • 任务分解:一项复杂的任务通常涉及许多步骤。智能体必须了解任务是什么并提前进行规划。

  • 思维链chain-of-thought:它已经成为增强复杂任务上模型性能的标准提示技术。在实现过程中,模型被指示「一步一步思考」,从而利用更多的测试时间计算将困难任务分解为更小、更简单的步骤。CoT 将大型任务转化为多个可管理的小任务,并解释清楚模型的思维过程。

  • 思维树tree-of-thought:它通过在每一步探索多种推理可能性来扩展 CoT。首先将问题分解为多个思考步骤,并在每个步骤中生成多个思考,创建一种树结构。搜索过程可以是广度优先搜索(BFS)或深度优先搜索(DFS),其中每个状态由分类器(通过提示)或多数 vote 进行评估。

  • LLM+P:依赖外部经典规划器来进行长期规划。该方法利用规划领域定义语言(PDDL)作为描述规划问题的中间接口。在这一过程中,LLM (1) 将问题转化为「Problem PDDL」,然后 (2) 请求经典规划器基于现有的「Domain PDDL」生成 PDDL 规划,最后 (3) 将 PDDL 规划转换回自然语言。

  • 自我反思Self-reflection:允许自主智能体通过完善以往行动决策和纠正以往错误来迭代改进,因而会在出现试错的现实世界任务中发挥至关重要的作用。ReAct 通过将动作空间扩展为一个任务特定的「离散动作和语言空间的组合」,将推理和动作集成在 LLM 中。离散动作使 LLM 能够与环境交互(例如使用维基百科搜索 API),而语言空间促使 LLM 以自然语言生成推理轨迹。注意,这里还可以将任务分为知识密集型任务(例如,HotpotQA、FEVER)和决策型任务(例如,AlfWorld Env、WebShop)。

    • ReAct:ReAct通过将动作空间扩展为特定于任务的离散动作和语言空间的组合,在LLM中集成了推理和动作。前者使LLM能够与环境进行交互(例如使用Wikipedia搜索API),而后者促使LLM以自然语言生成推理痕迹。

      • ReAct模板为:Thought步骤可以让整体效果更好

        • Thought: ...

        • Action: ...

        • Observation: ...

        • ... (Repeated many times)

    • Reflexion:Reflexion 框架则为智能体配备了动态记忆和自我反思能力,提高了推理技能。它有一个标准的 RL 设置,其中奖励模型提供简单的二元奖励,而动作空间遵循 ReAct 中的设置。并且特定于任务的动作空间通过语言进行增强,实现复杂推理步骤。在每个动作 a_t 之后,智能体计算启发式 h_t,并选择性地根据自我反思结果来决定重置环境,从而开始新的试验。

      • Reflection框架概览:

      • 其中,启发式功能Heuristic决定轨迹何时开始效率低下或包含幻觉,以及何时应该停止。低效的规划是指花费太长时间而没有成功的轨迹。幻觉(Hallucination)被定义为遇到了一系列连续的相同动作,而这些动作导致环境中出现相同的观察;自我反思Reflection通过向 LLM 展示 two-shot 示例来创建,每个例子都是一对失败的轨迹,它们是指导未来规划中变化的理想反思。然后反思被添加到智能体的工作记忆中,最多三个,用作查询 LLM 的上下文。

    • Chain of Hindsight (CoH):鼓励模型通过显式地呈现一系列过去的输出(每个输出都带有反馈注释)来改进其自身的输出。

记忆组件


记忆类型分为三类:感知记忆、短期记忆(STM)或工作记忆以及长期记忆(LTM)。

感知记忆:这是记忆的早期阶段,它能够在原始刺激结束后保持对感官信息(视觉、听觉等)的印象。感知记忆通常只能持续几秒钟。其子类包括图像记忆(视觉)、回声记忆(听觉)和触摸记忆(触感)。

短期记忆(STM)或工作记忆:短期记忆存储着我们目前所知道的信息,以及执行复杂认知任务(如学习和推理)所需要的信息。一般来讲,短期记忆持续 20-30 秒。

长期记忆:长时记忆可以将信息存储很长时间,从几天到几十年不等,其存储容量基本上是无限的。LTM 有两种子类型:

  • 显式、陈述性记忆:这是对事实和事件的记忆,指的是那些可以有意识地回忆起来的记忆,包括情景记忆(事件和经过)和语义记忆(事实和概念);

  • 隐式、程序性记忆:这种类型的记忆是无意识的,涉及自主执行的技能和惯例,比如骑自行车或在键盘上打字。

参考人类记忆的分类,我们可以得到以下映射:

  • 感知记忆作为原始输入(包括文本、图像或其他模态)的学习嵌入表示。

  • 短期记忆作为上下文学习,由于受到 Transformer 有限上下文窗口长度的限制,短期记忆是短暂且有限的。

  • 长期记忆作为外部向量存储,智能体可以查询、快速检索,从而进行访问。

工具组件

MRKL(Karpas et al. 2022)是一种用于自主智能体的神经 - 符号(neuro-symbolic)架构,命名来源于模块化推理(Modular Reasoning)、知识(Knowledge)和语言(Language)的简称。每个 MRKL 系统包含一些「专家」模块,通用 LLM 作为一个路由器,负责将查询路由到最合适的专家模块。这些模块可以是神经的(如深度学习模型),也可以是符号的(如数学计算器、货币转换器、天气 API)。

HuggingGPT(Shen et al. 2023)则是一个使用 ChatGPT 作为任务规划器的框架,根据模型描述选择 HuggingFace 平台中可用的模型,并根据执行结果归纳总结出响应。


案例研究

  • ChemCrow 是一个由大型语言模型(LLM)设计的化学智能体,旨在完成有机合成、药物发现和材料设计等任务。通过整合 17 种专家设计的工具,ChemCrow 提高了 LLM 在化学方面的性能,并衍生出新的能力。

  • AutoGPT(自主人工智能)相当于给基于 GPT 的模型一个内存和一个身体。有了它,你可以把一项任务交给 AI 智能体,让它自主地提出一个计划,然后执行计划。此外其还具有互联网访问、长期和短期内存管理、用于文本生成的 GPT-4 实例以及使用 GPT-3.5 进行文件存储和生成摘要等功能。AutoGPT 用处很多,可用来分析市场并提出交易策略、提供客户服务、进行营销等其他需要持续更新的任务。

限制:

  • 有限的上下文长度:LLM 处理上下文信息的能力有限,尽管 self-reflection 等机制可以从过去的错误中学习,但更长或无限的上下文窗口将会带来很大的好处。虽然向量存储和检索可以提供对更大知识库的访问,但它们的表示能力不如全注意力(full attention)强大。

  • LLM 在长期规划和任务分解中的挑战:LLM 在面对意外错误时很难调整规划并进行改正,与人类可以不断试错相比,LLM 鲁棒性还是比较差的。

  • 自然语言接口的可靠性:当前的智能体系统依赖于自然语言作为 LLM 与内存和工具等外部组件之间的接口。然而,模型输出的可靠性是值得怀疑的,因为 LLM 可能会出现格式错误,偶尔还会表现出叛逆行为(例如,拒绝遵循指令)。

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

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

相关文章

Docker在linux安装步骤超详细

官网 Install Docker Engine on CentOS | Docker Docs yum -y install gcc yum -y install gcc-c 安装工具 sudo yum install -y yum-utils 设置国内的镜像 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yu…

python部署linux

python项目做完了,就涉及到了部署,windows可以打包exe,linux如何部署呢? 部署 Python的打包部署方式有多种,具体取决于项目的需求、规模以及所使用的工具。以下是几种常见的Python打包部署方式: 使用pip安…

vite打包配置

目录 minify默认是esbuild,不能启动下面配置 使用: plugins: [viteMockServe({mockPath: mock})]根目录新建mock/index.ts. 有例子Mock file examples:https://www.npmjs.com/package/vite-plugin-mock-server 开发环境生产环境地址替换。根…

计算机是如何执行指令的

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

权益商城系统源码 现支持多种支付方式

简介: 权益商城系统源码,支持多种支付方式,后台商品管理,订单管理,串货管理,分站管理,会员列表,分销日志,应用配置。 上传到服务器,修改数据库信息&#xff…

软件测试与管理-白盒测试-逻辑覆盖法例题

目录 知识点: 例题 : 知识点: 语句覆盖:设计足够多的测试用例,使得被测试程序中的“ 每条可执行语句至少被执行一次” 优点:可通过源码观察直观地得到测试用例,无须细分每个判定表达式。缺点&am…

保研面试408复习 3——操作系统

文章目录 1、操作系统一、进程有哪几种状态,状态之间的转换、二、调度策略a.处理机调度分为三级:b.调度算法 标记文字记忆,加粗文字注意,普通文字理解。 为什么越写越少? 问就是在打瓦。(bushi) 1、操作系统 一、进程…

企业网站 | 被攻击时该怎么办?

前言 每天,数以千计的网站被黑客入侵。发生这种情况时,被入侵网站可用于从网络钓鱼页面到SEO垃圾邮件或者其它内容。如果您拥有一个小型网站,很容易相信黑客不会对它感兴趣。不幸的是,通常情况并非如此。 黑客入侵网站的动机与所…

后端方案设计文档结构模板可参考

文章目录 1 方案设计文档整体结构2 方案详细设计2.1 概要设计2.2 详细设计方案2.2.1 需求分析2.2.2 业务流程设计2.2.3 抽象类:实体对象建模2.2.4 接口设计2.2.5 存储设计 1 方案设计文档整体结构 一,现状:把项目的基本情况和背景都说清楚&a…

MAC 本地搭建Dify环境

Dify 介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过…

Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg

本文首发于公众号:机器感知 Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg Converting Anyones Voice: End-to-End Expressive Voice Conversion with a Conditional Diffusion Model Expressive voice conversion (VC) conducts speak…

数塔问题(蛮力算法和动态规划)

题目:如下图是一个数塔,从顶部出发在每一个节点可以选择向左或者向右走,一直走到底层,要求找出一条路径,使得路径上的数字之和最大,及路径情况。(使用蛮力算法和动态规划算法分别实现) #include…

c语言从入门到函数速成(1)

温馨提醒:本篇文章适合人群:刚学c又感觉那个地方不怎么懂的同学以及以及学了一些因为自身原因停学一段时间后又继续学c的同学 好,正片开始。 主函数 学c时最先学的是我们c语言程序的主体函数,c的主函数有两种写法,这…

【Docker】★★★

docker 的网络模式 ●host模式:使用 --nethost 指定 容器与宿主机共享网络命名空间、ip和端口 ●container模式:使用 --netcontainer:NAME_or_ID 指定 新建的容器共享已有容器的网络命名空间、ip和端口 ●none模式:使用 --netnone 指定 不进行…

被问了n遍的小程序地理位置权限开通方法

小程序地理位置接口有什么功能? 在平时我们在开发小程序时,难免会需要用到用户的地理位置信息的功能,小程序开发者开放平台新规要求如果没有申请开通微信小程序地理位置接口( getLocation ),但是在代码中却使用到了相关接口&#…

macOS sonoma 14.4.1编译JDK 12

macOS sonoma 14.4.1编译JDK 12 环境参考文档开始简述问题心路历程着手解决最终解决(前面有点啰嗦了,可以直接看这里) 记录一次靠自己看代码解决问题的经历(总之就是非常开心)。 首先,先diss一下bing,我差一点就放弃了。 环境 macOS sonom…

分布式与一致性协议之Raft算法(二)

Raft算法 什么是任期 我们知道,议会选举中的领导者是有任期的,当领导者任命到期后,需要重新再次选举。Raft算法中的领导者也是有任期,每个任期由单调递增的数字(任期编号)标识。比如,节点A的任期编号是1。任期编号会…

自定义类型

引言: C语言分为:1、内置类型 2、自定义类型: 1》结构体——每个成员有自己的空间 2》枚举型——定义多个常量 3》联合体——所有成员共用一快内存空间 一、结构体: 单独写过了一篇 关于结构体的介绍以及使用 二、 枚举型&…

论文辅助笔记:Tempo之modules/prompt.py

1 get_prompt_param_cls 2 get_prompt_value 3 Prompt 类 3.1 _init_weights 3.2 forward

表空间的概述

目录 表空间的属性 表空间的类型 永久性表空间(PermanentTablespace) 临时表空间(Temp Tablespace ) 撤销表空间(Undo Tablespace) 大文件表空间(BigfileTablespace) 表空间的状态 联机状态(Online) 读写状态(Read Write) 只读状态(Read) 脱机状态(Offline) Oracle从…