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

news/2024/10/11 13:23:59/

目录

智能体系统的概念

规划组件

记忆组件

工具组件

案例研究


智能体系统的概念

在大语言模型(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.ppmy.cn/news/1455557.html

相关文章

AWS Cloudfront支持vuejs的html5模式

前提 1.vuejs项目使用html5模式;2.vuejs项目独立部署在一个s3桶中;3.vuejs项目独立使用一个AWS Cloudfront的CDN。 解决 只需要在Cloudfront中添加一个函数,大概规则就是如果从请求uri中提取到文件名,则表示需要访问s3&#xf…

Vue 插槽

Vue插槽是一种特殊的语法,用于在组件中定义可复用的模板部分。它允许开发者在组件的标记中声明一个或多个插槽,然后在使用该组件时,可以根据自己的需求将内容插入到这些插槽中。 Vue插槽分为默认插槽和具名插槽两种。 默认插槽 语法 组件…

第七章 Python 函数进阶

一、函数的多返回值 在 def return_num(): return 1 return 2 这种情况下只能返回1,运行到 return 1后就不在继续运行了; 1.1 语法: def return_num(): return 1 ,2 x, y return_num() print(x) print(y) 按照返回值的顺序…

【linuxC语言】守护进程

文章目录 前言一、守护进程的介绍二、开启守护进程总结 前言 在Linux系统中,守护进程是在后台运行的进程,通常以服务的形式提供某种功能,如网络服务、系统监控等。守护进程的特点是在启动时脱离终端并且在后台运行,它们通常不与用…

Vue笔记 4

内置指令 1.v-text_指令 我们学过的指令: ​ v-bind : 单向绑定解析表达式, 可简写为 :xxx ​ v-model : 双向数据绑定 ​ v-for : 遍历数组/对象/字符串 ​ v-on : 绑定事件监听, 可简写为 ​ v-if : 条件渲染(动态控制节点是否存存在&#xff0…

【C++】学习笔记——string_3

文章目录 六、string类5. string类的操作6. string类的转换7. string类的模拟实现 未完待续 搭配文档食用 六、string类 5. string类的操作 上面的函数中,有些是不常用的,咱们只挑几个重要的进行讲解。 c_str 就是将字符串转换成 C语言 字符串的格式。…

红米1s 刷入魔趣 (Mokee)ROM(Android 7.1)

目录 背景准备工具硬件(自己准备)软件(我会在文末提供链接) 刷机步骤1. 重启电脑2. 安装驱动3. 刷入TWRP4. 清空数据5. 刷入魔趣6. 开机 结尾下载链接 本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 B…

esp32-cam 1. 出厂固件编译与测试

0. 环境 - ubuntu18 - esp32-cam - usb转ttl ch340 硬件连接 esp32-camch340板子U0RTXDU0TRXDGNDGND5V5V 1. 安装依赖 sudo apt-get install vim sudo apt install git sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial p…