从科幻走向现实,LLM Agent 做到哪一步了?
LLM 洪流滚滚,AI 浪潮席卷全球,在这不断冲击行业认知的一年中,Agent 以冉冉新星之态引起开发者侧目。OpenAI 科学家 Andrej Karpathy 曾言“OpenAI 在大模型领域快人一步,但在 Agent 领域,却是和大家处在同一起跑线上。”
在此背景下,AI 从业者坚信:基于 LLM 的 Agent 会是一个崭新并且充满着机会的蓝海领域。
那么,究竟什么是 Agent?它的框架工作方式是什么?现阶段存在哪些问题?未来有着怎样的可能性?本文将分享一些思考。
01.什么是 Agent?

根据 OpenAI 科学家 Lilian Weng 的一张 Agent 示意图 [1] 我们可以了解 Agent 由一些组件来组成。
规划模块
-
子目标分解:Agent 将目标分为更小的、易于管理的子目标,从而更高效地处理复杂的任务。
-
反省和调整:Agent 可以对过去的行为进行自我批评和自我反思,从错误中吸取教训,并针对未来的步骤进行完善,从而提高最终结果的质量。
记忆模块
-
短期记忆:在这里通常是指 in-context learning,即利用提示工程来让模型进行一定的学习。
-
长期记忆:这为 Agent 提供了长时间保留和召回信息的能力,通常是通过利用外部向量存储和快速检索。
工具使用模块
代理学习调用外部 API 来获取模型权重中缺失的额外信息(通常在预训练后很难更改),包括当前信息、代码执行能力、对专有信息源的访问等。
所以当 Agent 接收到一个处理复杂任务的目标时,它会首先进行任务的拆解,并去执行子任务,每次大模型调用之间通过短期记忆连接,使得大模型能理解当前任务处理的状态。接下来 Agent 需要根据任务的状态来获取能够帮助模型处理任务的信息,这些信息可以是历史信息以及与任务有关的额外信息。
由于大模型拥有一定的认知能力,所以在无法精准定义所需信息的情况下,我们可以将与当前状态有相关性的信息组织起来,让大模型自主地去摘取它需要的内容。所以,比起基于关键字精准的匹配的搜索方法,向量数据库所拥有的根据语义相关性的模糊搜索在这一点上受到了 Agent 框架的广泛青睐。通过将长期记忆存放在一个数据库(向量数据库或传统数据库),并且在执行过程中根据需要进行检索,模型能够在任务的执行中获取执行经验以及认识到总体的状态。
02.Agent 框架工作方式
我们以 AutoGPT 为例,看看一个 Agent 框架具体是如何工作的:

AutoGPT[2] 使用 GPT-4 来生成任务、确定优先级并执行任务,同时使用插件进行互联网浏览和其他访问。AutoGPT 使用外部记忆来跟踪它正在做什么并提供上下文,使其能够评估其情况,生成新任务或自我纠正,并将新任务添加到队列中,然后对其进行优先级排序。
另一个著名的项目 babyagi[3] 也是采取类似工作的方式。Agent 与一般的 LLM 最大的不同点在于,LLM Agent 通常根据任务的总体目标来去指定以及编排子目标,而 LLM 通常是作为一个被调用的工具,在一个工作流中担任一个具体任务的执行者。
03.LLM Agent 现阶段出现的问题
由于一些 LLM(GPT-4)带来了惊人的自然语言理解和生成能力,并且能处理非常复杂的任务,一度让 LLM Agent 成为满足人们对科幻电影所有憧憬的最终答案。但是在实际使用过程中,大家逐渐发现了通往通用人工智能的道路并不是一蹴而就的,目前 Agent 很容易在一些情况下失败:
-
Agent 会在处理某一个任务上陷入一个循环
-
prompt 越来越长,最终甚至超出最大内容长度
-
记忆模块的策略没有给 LLM 某些关键的信息而导致执行失败
-
LLM 由于幻觉问题错误使用工具,或者让事情半途而废
上述问题随着大家对于 Agent 的了解开始浮出水面,这些问题一部分需要 LLM 自身来解决,另一部分也需要 Agent 框架来进行解决,通用的 Agent 仍需进一步打磨。
04.Agent 的展望
目前,LLM Agent 大多是处于实验和概念验证的阶段,持续提升 Agent 的能力才能让它真正从科幻走向现实。当然,我们也可以看到,围绕 LLM Agent 的生态也已经开始逐渐丰富,大部分工作都可以归类到以下三个方面进行探索:
Agent模型
AgentBench[4] 指出了不同的 LLM 对于 Agent 的处理能力有很大区别,当前的 gpt-4(0613)版本以极大的优势领先于同类竞品,LLM 本身的逻辑推理能力以及更长的 prompt 处理能力都会是 Agent 中极其重要的因素。
sToolLLM[5] 则使用轻量级的 LLaMA 向更加复杂的大模型学习理解 API 和使用 API 的能力,希望能够将这种能力运用在更轻量的模型上。
Agent 框架
由 Lilian Weng 列出来的每一个组件都有探索的空间,目前学术探索较多的是利用框架提升 LLM 推理的能力,从 COT[6]、ReAct[7]、Reflexion[8] 等一系列方法,都是在不改变大模型的方法下,利用 prompt 去提升大模型的理性。关于记忆和搜索,目前普遍是将内容存储在数据库和搜索引擎中,Refexion 认为可以将执行过程中的观察以轨迹的形式存储在短期记忆中,而将接受反馈后的评估和自我反省总结的经验放在长期记忆中。在其他方向,AutoGen[9] 也在探索多智能体之间的通信与协作。
Agent 应用
实现真正意义上的 Agent 道阻且长,因为现实世界具有太多不确定性。在特定、具体的可控环境下,Agent 便可以如工厂中实现一道道供需的机器人一般,针对更多的场景特点进行针对性的设计,从而更好的去完成一些特定的任务,达到预期的效果。
MetaGPT[10] 是一个针对软件开发场景的 Agent,针对这一具体场景设计了各种具有不同技能的角色协作完成这一任务。Voyager[11] 是一个可以在 Minecraft 中可以进行自主探索、学习技能,并且会合成道具的 Agent。VoxPoser 结合了 RGB-D 信息以及 LLM 的推理能力后,可以完成更多复杂的机器人抓取操作。当下,Agent 尚不能做到完全可靠,针对更多场景的设计可以保障 Agent 不会在大部分简单场景下失败。
我们置身于一个充满无限可能性的时刻,人工智能的进步将继续塑造我们的未来,而 LLM Agent 无疑是这一演进过程中的亮点之一。人们探索人工智能,最终还是希望能够让人工智帮助人类完成自己无法做到的复杂任务,而 Agent 恰恰是从自动化走向智能化的一个关键的里程碑……
参考链接
[1]https://lilianweng.github.io/
[2]https://github.com/Significant-Gravitas/Auto-GPT
[3]https://github.com/yoheinakajima/babyagi
[4]https://arxiv.org/abs/2308.03688
[5]https://arxiv.org/abs/2307.16789
[6]https://arxiv.org/abs/2201.11903
[7]https://arxiv.org/abs/2210.03629
[8]https://arxiv.org/abs/2303.11366
[9]https://arxiv.org/abs/2308.08155
[10]https://arxiv.org/abs/2308.00352
[11]https://arxiv.org/abs/2305.16291
[12]https://arxiv.org/abs/2307.05973
本文由 mdnice 多平台发布
相关文章:

从科幻走向现实,LLM Agent 做到哪一步了?
LLM 洪流滚滚,AI 浪潮席卷全球,在这不断冲击行业认知的一年中,Agent 以冉冉新星之态引起开发者侧目。OpenAI 科学家 Andrej Karpathy 曾言“OpenAI 在大模型领域快人一步,但在 Agent 领域,却是和大家处在同一起跑线上。…...
[笔记] 数据类型
整形 一字节(Byte,也就是平时KB、MB里面的B)就是八个二进制位(bit) 整形——int——4B无符号整形——unsigned int——4B短整形——short——2B长整型——long——4B双长整型——long long——8B 浮点型 参考博客:C 语言的浮点类型…...

QT学习之QT概述
1.1 什么是QT? Qt是一个跨平台的C图形用户界面应用程序框架。 QT特点: 跨平台,几乎支持所有的平台接口简单,容易上手,学习QT框架对学习其他框架有参考意义。一定程度上简化了内存回收机制开发效率高,能够…...

编写shell脚本,利用mysqldump实现MySQL数据库分库分表备份
查看数据和数据表 mysql -uroot -p123456 -e show databases mysql -uroot -p123456 -e show tables from cb_d 删除头部Database和数据库自带的表 mysql -uroot -p123456 -e show databases -N | egrep -v "information_schema|mysql|performance_schema|sys"编写…...

本地部署Jellyfin影音服务器并实现远程访问影音库
文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…...

【数据结构】希尔排序
文章目录 前言一、希尔排序的演示图例二、希尔排序:插入排序的优化版本☆三、核心算法思路四、算法思路步骤(一)预排序 gap>1(二)gap1 插入排序 完成排序收尾 五、码源详解(1)ShellSort1 ——…...
使用VBA打印PDF文件
使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。 调用Windows的Shell命令可以实现打印PDF文件。 示例代码…...
分布式ID系统设计(2)
接上文 https://editor.csdn.net/md/?articleId=133988963 类snowFlake 方案 应用举例 mongoDB ObjectID 就是一个典型的实现。数据库生成 以MySQL举例 利用给字段设置AUTO-INCREMENT来保证ID自增,每次业务使用SQL拿到MySQL的ID 这种方案的优缺点: 优点 1 简单。利用数据库实…...
http和https的区别,以及https涉及到的加密过程
一.http与https的介绍 http:超文本传输协议,是互联网应用最广泛的一种网络协议。设计的最初目的是为了提供一种发布和接收HTML页面的方法。是以明文的形式来传输的,所以就会存在一定的安全隐患(因为攻击者可以截取web服务器和网站相关的报文…...

使用php打印时间精确到毫秒及毫秒转成11位时间戳
在PHP中,可以使用microtime函数来获取当前时间,包括毫秒。以下是示例代码: // 获取当前时间戳(秒) $time microtime(true); // 将当前时间戳转换为毫秒 $milliseconds round($time * 1000); // 输出当前时间&#…...

uni-app离线打包在android studio创建的.jks证书,签名文件获取MD5问题
获取证书信息 keytool -list -v -keystore test.keystore 获取的信息中没有md5信息 可以使用以下方式获取md5. 先创建签名文件,放到项目目录下 配置build.gradle文件 在android studio 打开终端输入以下命令 ./gradlew signingReport 等待生成签名。 生成的内容…...

333333333333
一、Map 接口 接下来讲的都是基于 jdk8 来开展的。 1.1 特点 1、Map 与 Collection 并列存在。Map 是用于保存具有映射关系的数据,即 key-value。 2、Map 中的 key 和 value 可以是任何引用类型的数据类型。 3、Map 中的 key 不允许重复,原因和 HashSet…...

Python:字符串格式化
文章目录 %用法使用format方法进行格式化 %用法 格式字符说明%s字符串%c单个字符%d十进制整数%o八进制整数%x十六进制整数%e指数(基底写为e)%E指数(基底写为E) x 1235 print(%o % x) print(%d % x) print(%x % x) print(%e % x) print(%s % 65) print(%c % a)使用format方法…...

虹科示波器 | 汽车免拆检修 | 2010款江铃陆风X8车发动机怠速抖动、加速无力
一、故障现象 一辆2010款江铃陆风X8车,搭载4G6GS4N发动机,累计行驶里程约为20万km。该车在其他修理厂进行发动机大修,维修后试车,发动机怠速抖动、加速无力。用故障检测仪检测,发动机控制模块(ECMÿ…...
js中的遍历
1. 最原始的可以使用 for(let i0;i<....) 可以用来遍历数组和对象 2. for ... in 用来遍历对象的index 3. for ... of 用来遍历数组 4. 数组内置的forEach,map也可以遍历数组 forEach和for ..of 类似,但是forEach不支持break,continue等流程控制语句,而且forEach中不支持…...
Python算法——快速排序
快速排序(Quick Sort)是一种高效的分治排序算法,它选择一个基准元素,将数组分成两个子数组,小于基准的放在左边,大于基准的放在右边,然后递归地排序子数组。快速排序通常比冒泡排序和选择排序更…...

操作系统备考学习 day12 (第五章)
操作系统备考学习 day12 第五章 (输入/输出)I/O管理5.1 I/O管理概述5.1.1 I/O设备I/O设备的分类 5.1.2 I/O控制器I/O设备的电子部件 5.1.3 I/O控制方式程序直接控制方式中断驱动方式DMA方式DMA控制器通道控制方式 5.1.4 I/O软件层次结构用户层软件设备独…...
Elasticsearch删除映射类型
一 前言 官方解释:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html 在elasticsearch6.0.0或更高的版本中创建索引仅能包含单个映射类型。在具有多种映射类型的5.x版本中创建的索引将继续像以前一样在elasticsearch6.x中运行。类型将在e…...

网络工程师进阶课:华为HCIP认证课程介绍
微思网络HCIP VIP试听课程:DHCP协议原理与配置https://www.bilibili.com/video/BV1cy4y1J7yg/?spm_id_from333.999.0.0 【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等 https://xmws-it.blog.csdn.net/article/det…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...