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

news2024/9/21 22:46:29

目录

智能体系统的概念

规划组件

记忆组件

工具组件

案例研究


智能体系统的概念

在大语言模型(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.coloradmin.cn/o/1645869.html

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

相关文章

成语:势如破竹、迎刃而解;明以前唯一同时入选文庙、武庙的牛人

千古流芳、身后能够进入文庙或武庙,是古人最高的荣誉,也是读书人和武将终极的追求,所谓的青史留名,享受万代祭祀、千秋敬仰,甚至都可以称之为圣人,但历史上,却有两人文武兼备、同时入选了文庙与…

RESTFul风格设计和实战

四、RESTFul风格设计和实战 4.1 RESTFul风格概述 4.1.1 RESTFul风格简介 RESTful(Representational State Transfer)是一种软件架构风格,用于设计网络应用程序和服务之间的通信。它是一种基于标准 HTTP 方法的简单和轻量级的通信协议&#x…

多目标转化依赖DBMTL与AIT区别

DBMTL:通过前序目标输出作为后序目标输入刻画概率转移关系,概率关系的刻画是通过MLP来刻画的;目标之间如果存在内在联系,稀疏目标能利用非稀疏目标中的信息,得到特殊收益; DBMTL与ESMM区别:直接…

Socket学习记录

本次学习Socket的编程开发,该技术在一些通讯软件,比如说微信,QQ等有广泛应用。 网络结构 这些都是计算机网络中的内容,我们在这里简单回顾一下: UDP(User Datagram Protocol):用户数据报协议;TCP(Transmission Contr…

04-18 周四 为LLM_inference项目配置GitHub CI过程记录

04-18 周四 为LLM_inference项目配置GitHub CI过程记录 时间版本修改人描述2024年4月18日10:30:13V0.1宋全恒新建文档 简介和相关文档 04-15 周一 GitHub仓库CI服务器配置过程文档actions-runner 是托管与GitHub上的仓库,下载最新的客户端程序即可。self hosted r…

spring高级篇(十)

1、内嵌tomcat boot框架是默认内嵌tomcat的,不需要手动安装和配置外部的 Servlet 容器。 简单的介绍一下tomcat服务器的构成: Catalina: Catalina 是 Tomcat 的核心组件,负责处理 HTTP 请求、响应以及管理 Servlet 生命周期。它包…

考研数学|基础跟张宇,强化直接1000题还是先做660?

跟宇哥用1000题的,我愿称之为卷王之王!660对基础阶段是绝佳的查漏补缺,必做! 自我介绍一下:我21年一战数学83,总分没过线,22年二战143,逆袭上岸211!660是我的心头好&…

Python测试框架Pytest的参数化详解

上篇博文介绍过,Pytest是目前比较成熟功能齐全的测试框架,使用率肯定也不断攀升。 在实际工作中,许多测试用例都是类似的重复,一个个写最后代码会显得很冗余。这里,我们来了解一下pytest.mark.parametrize装饰器&…

【intro】图卷积神经网络(GCN)-续

本文为【intro】图卷积神经网络(GCN)-CSDN博客后续(因为经验告诉我超过2w字编辑器就会卡……) 第一部分还是进一步再看看GCN 图卷积神经网络GCN_哔哩哔哩_bilibili 回顾 图神经网络的基本原理就是把图中的节点编码映射成一个低…

4.堆_树(汇总版)

目录 1.树概念及结构 1.1树的概念 1.2 树的相关定义 1.3 树的表示 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树 2.3 特殊的二叉树 2.4 二叉树的性质 2.5 二叉树的存储结构 3.二叉树的顺序结构及实现 3.1 二叉树的顺序结构--堆 3.2 堆的实现 3.2.1打印 3.2.2 …

怎么通过Java语言实现远程控制无人售货柜

怎么通过Java语言实现远程控制无人售货柜呢? 本文描述了使用Java语言调用HTTP接口,实现控制无人售货柜,独立控制售货柜、格子柜的柜门。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称厂商1智能WiFi控…

CellMarker | 人骨骼肌组织细胞Marker大全!~(强烈建议火速收藏!)

1写在前面 分享一下最近看到的2篇paper关于骨骼肌组织的细胞Marker&#xff0c;绝对的Atlas级好东西。&#x1f44d; 希望做单细胞的小伙伴觉得有用哦。&#x1f60f; 2常用marker&#xff08;一&#xff09; general_mrkrs <- c( MYH7, TNNT1, TNNT3, MYH1, MYH2, "C…

2024.05.06作业

自由发挥应用场景&#xff0c;实现登录界面。 要求&#xff1a;尽量每行代码都有注释。 #include "yuanshen.h"yuanshen::yuanshen(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(1600,910);this->setFixedSize(1600,910);//窗口标题this-…

vue3中标签的ref属性

组合API-ref属性 在vue2.x中&#xff0c;可以通过给元素添加refxxx属性&#xff0c;然后在代码中通过this.$refs.xxx获取到对应的元素 然而在vue3中时没有$refs这个东西的&#xff0c;因此vue3中通过ref属性获取元素就不能按照vue2的方式来获取。 目标&#xff1a;掌握使用re…

java基础之Netty(主要用来开发像微信,qq等聊天软件)

一、Netty的定义 Netty是一个基于Java NIO的网络编程框架&#xff0c;提供了一套高效的、事件驱动的异步网络通信机制。简化了网络应用程序的开发过程&#xff0c;提供了可靠的、高性能的网络传输 二、Netty的特点是什么 异步和事件驱动&#xff1a;Netty使用异步的、非阻塞…

链表经典面试题01

目录 引言 面试题01:返回倒数第k个节点 题目描述: 思路分析: 代码展示: 面试题02:链表的回文结构 题目描述: 描述 思路分析: 代码展示: 面试题03:相交链表 题目描述: 思路分析: 代码展示: 小结: 引言 这次的题均来自力扣和牛客有关链表的经典面试题,代码只会展示…

【C++】命名空间namespace

为什么要有namespace&#xff1f; namespace是用来解决命名冲突&#xff08;名字污染&#xff09;的问题的。看看下面的代码&#xff1a; #include <cstdlib>int rand 10;int main() {return 0; }可以看到&#xff0c;这段代码什么都没干&#xff0c;就定义了一个全局…

[leetcode] 64. 最小路径和

文章目录 题目描述解题方法动态规划java代码复杂度分析 相似题目 题目描述 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#…

【字符串】Leetcode 43. 字符串相乘

题目讲解 43. 字符串相乘 算法讲解 class Solution { public:void AddZero(string& temp, int cnt) {while (cnt--) {temp 0;} }string Add(string num1, string num2) {string result;int carry 0;int i num1.size() - 1;int j num2.size() - 1;while (i > 0 ||…

制作微信在线答题步骤是什么

在信息爆炸的时代&#xff0c;学习不再只是书本和课堂的代名词。随着移动互联网的飞速发展&#xff0c;微信作为人们日常生活中不可或缺的沟通工具&#xff0c;也为我们提供了全新的学习平台。今天&#xff0c;就让我们一起探讨如何制作微信在线答题&#xff0c;让学习变得更加…