LLM下半场之Agent基础能力概述:Profile、Memory、Plan、Action、Eval学习笔记

news2024/11/20 1:23:04

 一.Agent发展将会是LLM的下半场

目前大家都在讨论LLM,LLM解决的问题是帮助机器像人类一样理解彼此的意图,本质上来讲,LLM更像是一个技术或者工具。但是人类社会发生变革的引线,往往是一个产品或者解决方案,比如电池技术的发展带来了长续航,但是真正改变大家生活的是电动车这样一个产品。Agent的概念是创造一个个场景的智能体,可以在某些领域,比如在社会分析、电商导购、工业制造方面提供解决方案。LLM的发展将会让Agent的诞生成为可能,也会推动各个领域的Agent发展,所以我说Agent将会是LLM的下半场。

最近也是学习了一篇高瓴机构发布的论文《A Survvey on Large Language Model based Autonomous Agents》,将里面的内容和最近的思考做个整理。

二.Agent的整体结构

如果要实现以LLM为Base的Agent,主要需要从两个角度思考问题,(1)如何设计一种架构可以更高效的应用LLM(2)如何让Agent具备解决不同任务的范化能力,当然这个也依赖于LLM。目前行业里通常通用的一种架构是由Profile、Memory、Planning、Action所构建的四级架构。

1.Profile模块

Profile模块解决的问题是告诉Agent他的角色,或者换一种说法,是告诉Agent需要解决的问题的背景信息。Profile有三种实现模式。第一种是人工设定模式,比如告诉Agent你是个外向的厨师,你需要解决点餐环节客人的问题。第二种是LLM延申模式,先把一些背景告诉LLM,让LLM给出一些候选集,比方说告诉LLM生成几种人物,解决点餐的问题,然后基于LLM的输出选择合适的Profile方向。第三种是基于database,比方说已经在数据库中存储了某些厨师的数据,包含他的各种身体特征,然后完成设定。

2.Memory模块

Memory模块是Agent解决方案中的重要一环。Memory主要解决的是行业知识的传递问题,可以让Agent拥有长期和短期记忆,让他表现得更智能。

Shot-Memory一般用来传递上下文的的对话信息,常常通过Prompt作为传递介质。而Long-Memory更多的是领域知识,需要有独立的存储模块。Long-Memory的存储结构可能是自然语言、Embedding、结构化的表等。比如做一个餐厅服务点餐Agent,那么完全可以把菜单内容以自然语言的形式存储为Long-Memory,每次点餐要求Agent从约定内容里面选择。随着LLM的发展,目前向量数据库也成为了投资的重点领域,因为以Embedding存储,可以更有利于在大规模数据的前提下压缩信息和高效检索。

3.Planning模块

这一模块是最体现智能能力的模块,这个模块需要根据任务设定具体的执行方案。

Planning模块可以是两种结构,一种是Single-Path,这里引入CoT的概念(Chain of thought),可以要求LLM基于任务一步步推理,形成一个解决方案。每一步推理后产出的内容可以再次输入给LLM去判断下一步如何走。

另一种是Muti-Path,这个方案更符合人类的思维方式,因为要解决问题,很难完全设定好端到端的流程,需要给出几种候选的模式,另外需要考虑环境反馈,可以每走一步再次推理和选择最优模式,这里可以参考最近非常火的ReAct的模式,另外LLM也可以代替人类去做多种方案的选择,我们可以把需要考虑的边界给到LLM,由LLM去思考每一步如何选择。

4.Action模块

这一步是执行模块,需要按照Planning的设计,完成目标。在这一步需要建设的能力是与外部的服务关联,比如我们的Agent是解决帮用户买飞机票的问题,那么在执行阶段就需要与飞机票务系统的订票接口关联,也需要与用户的信用卡付款接口关联。

三、Agent的评估模式

相比于LLM,Agent是一种更广泛的解决方案,于是如何评估Agent的能力是一个很有挑战性的问题。

通常,评估有两种,,一种是主观评估,需要将Agent的执行结果给到人类去打分,所以最近许多类似于标注的众包平台也吸引到了资本的关注,但是这种评估模式的成本较高,很难规模化复制,这也是为什么Agent的迭代优化目前都只能在特定领域展开。

客观评估工作看上去更可能以程序化的模式低成本实现,但这也严重依赖与评价的Metrics设定和Benchmark集合,目前在社会学、自然科学、工程科学范畴已经沉淀了一些相关工作,这也使得相关领域的Agent看上去更有可能率先实现。

四、总结

目前行业中还没有特别出色或者优秀的Agent范本的出现,但是我个人对这个方向是深信不疑的,因为已经有许多工具可以应用,除了上面提到的评估相关的工作,如何串联四个流程,Langchain给了很好的参考。另外在Prompt设计方面,CoT、ReACT都提供了不错的思路,接下来行业内的各个玩家一定会在各个领域去探索Agent的落地可能,相信会在近期有一些成功案例诞生。

参考材料:

https://arxiv.org/pdf/2308.11432.pdf

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

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

相关文章

润滑油泵控制(博途SCL源代码)

有关博途PLC定时器的各种使用方法请参考下面文章链接: 博途PLC IEC定时器编程应用(SCL语言)_博图 定时器-CSDN博客博途PLC定时器支持数据类型TIME 类型 ,写法支持T#2M10S 、T#10S等,时基是MS所以如果设置1M用 DINT数据类型就是60000,大部分HMI上数据类型很多不支持IEC的…

IDEA中maven无法下载依赖解决方案

如果你尝试了很多网上的办法 仍然没有解决 那么很有可能和我一样碰到**了,解决办法千奇百怪, 解决之前(山丹丹的那个红艳艳)都没我屏幕红,本人试了一下几种 1、检查maven配置 settings.xml(应该都没问题)&#xff0c…

微信公众号模板消息First,Remark字段不显示,备注字段不见了

今天在开发公众号过程中有个需求发模板消息我设置的如下 成绩单打印通知!姓名:{{name.DATA}} 学号:{{stuid.DATA}}状态:{{status.DATA}}时间:{{date.DATA}} 备注:{{remark.DATA}} 然后发完通知发现《…

AtCoder Beginner Contest 232(A-G)

A - QQ solver (atcoder.jp)直接按题意模拟即可。 B - Caesar Cipher (atcoder.jp)按题意模拟即可 C - Graph Isomorphism (atcoder.jp)按题意模拟即可 D - Weak Takahashi (atcoder.jp) 一个非常套路的网格dp E - Rook Path (atcoder.jp) (1)题意 有…

C++ stack和queue及优先级队列

stack的介绍 stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出 stack的底层容器可以是任何标准…

基于SpringBoot的ElasticSearch操作(超详细教程)

一、ElasticSearch 简介 1、简介 ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多员工能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 语言开发的,并作为 Apache 许可条款下的开放源码发布,是一种…

Vue中如何进行文件浏览与文件管理

Vue中的文件浏览与文件管理 文件浏览与文件管理是许多Web应用程序中常见的功能之一。在Vue.js中,您可以轻松地实现文件浏览和管理功能,使您的应用程序更具交互性和可用性。本文将向您展示如何使用Vue.js构建文件浏览器和文件管理功能,以及如…

Vue中如何进行响应式图像与图片懒加载优化

Vue中响应式图像与图片懒加载优化 在现代的Web开发中,图像在网站性能和用户体验方面扮演着至关重要的角色。然而,加载大量的图像可能会导致网页加载速度变慢,从而影响用户的满意度。为了解决这个问题,Vue.js提供了一些强大的工具…

Polygon Miden中的nullifier sets设计

1. 引言 前序博客: Polygon Miden zkRollup中的UTXO账户混合状态模型Polygon Mide状态模型:解决状态膨胀,而不牺牲隐私和去中心化 本文基本结构为: 何为nullifiers?为何需要nullifiers?使用nullifiers存…

Ubuntu 20.04 桌面美化

Ubuntu 20.04 桌面美化 Ubuntu 20.04 在 2020 年 4 月 28 日发布,距今已经快四个月了,我将自己的笔记本升级成 Ubuntu 20.04 操作系统了,Ubuntu 20.04 默认安装完成的桌面比较简单,如下图: 根据我个人的喜好&#xff0…

Android自定义Drawable---灵活多变的矩形背景

Android自定义Drawable—灵活多变的矩形背景 在安卓开发中,我们通常需要为不同的按钮设置不同的背景以实现不同的效果,有时还需要这些按钮根据实际情况进行变化。如果采用编写resource中xml文件的形式,就需要重复定义许多只有微小变动的资源…

Vue中如何进行表单验证码与滑动验证

在Vue中实现表单验证码与滑动验证功能 验证码和滑动验证是Web应用程序中常见的安全功能,用于验证用户的身份并防止恶意活动。Vue.js作为一个流行的JavaScript框架,提供了许多工具和库来实现这些功能。本文将介绍如何使用Vue来实现表单验证码和滑动验证功…

solidity 合约转java

Generate a Java Wrapper from your Smart Contract Solidity Gradle Plugin - Web3j web3j / web3j-maven-plugin GitLab

ARM汇编与C言语的混合编程

1. C言语如何与汇编进行交互 有些时候,我们需要在汇编代码中调用C代码,或者说C代码中调用汇编代码。 那么,汇编调用C代码,或者C代码调用汇编函数,他们的函数参数、返回值是如何传递的? 对应ARM架构来说&…

学习开发一个RISC-V上的操作系统(汪辰老师) — unrecognized opcode `csrr t0,mhartid‘报错问题

前言 (1)此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。 (2)该课程相关代码gitee链接; (3)PLCT实验室实习生长期招聘:招聘信息链接 正文 (1)在跟着…

【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)

目录 前言 五、模块化程序设计——函数 5.1 计算三角形的重心 5.2 函数 5.2.1 函数定义 5.2.2 函数调用 a. 函数调用的形式和过程 b. 参数传递 值传递 指针传递 c. 函数结果返回 5.2.3 函数原型(先调用后定义) 5.3 程序设计实例 5.3.1 打印…

【14】c++设计模式——>工厂模式

简单工厂模式的弊端 简单工厂模式虽然简单,但是违反了设计模式中的开放封闭原则,即工厂类在数据增加时需要被修改,而我们在设计时对于已经设计好的类需要避免修改的操作,而选用扩展的方式。 工厂模式设计 简单工厂模式只有一个…

【Java】接口 interface

目录 概述 示例代码: 接口成员访问特点 示例代码: 概述 什么是接口 接口就是一种公共的规范标准,只要符合规范标准,大家都可以调用。 Java 中的接口更多的体现在对行为的抽象! 1. 接口 用关键字 interface 修饰 pub…

AtCoder Beginner Contest 231(D-F,H)

D - Neighbors (atcoder.jp) (1)题意 给出M组关系,问是否有一个排列,能表示A[i]和B[i]相邻 (2)思路 考虑如果有环,显然不能满足排列,因为排列中度数最多为2,若有超过2的显…

JavaScript操作CSS样式

上节课我们基本完成了游戏的主体,这节课我们来学习如果使用JavaScript去操作CSS样式 ● 例如,我们现在想当玩家输入对的数字之后,我们讲背景改为绿色,并且把number的框宽度变大 const secretnumber Math.trunc(Math.random() * …