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

 一.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.mzph.cn/news/95379.shtml

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

相关文章

jQuery中ajax的使用

$ .ajax()方法概述 在jQuery中也为大家封装好了一些ajax方法。内部会自动将data对象转换成x-www-form-urlencoded的形式,data中我们也可以传递字符串。如果要传递json格式数据,需要设置contentType和将data写成json字符串的形式(可以用JSON.s…

C/C++ 动态规划面试算法题

1.买卖股票的最佳时机 https://blog.csdn.net/qq_41277628/article/details/113322136 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 1)的时候买入,在第 5 天(股票价格 6&#xff…

Linux【网络】数据链路层

Linux【网络】数据链路层 数据链路层以太网帧格式对比理解MAC地址和IP地址ARP协议--地址解析协议ARP工作流程ARP请求ARP应答 其他协议DNS-域名解析协议ICMP--网络层协议NAT技术NAPT 正向代理与反向代理 数据链路层 数据链路层用于两个设备,同一数据链路节点之间的信…

栈和队列的实现

用栈实现队列 1.分析2.代码 1.分析 2.代码 class MyQueue {private Stack<Integer> s1;private Stack<Integer> s2;public MyQueue() {s1 new Stack<>();s2 new Stack<>();}public void push(int x) {s1.push(x);}public int pop() {if(empty()){re…

多线程安全的Queue

在实际工作中经常会用到生产者消费者模式,这时候使用queue即可解决问题,但每次使用都需要自己动手加锁,通知,于是便自己封装了一个多线程安全的队列,代码如下: SafeQueue.h: #pragma once #include <queue> #include <mutex> #include <condition_variab…

基础算法:习题

786.第k个数 #include <iostream>using namespace std;const int N 100010;int q[N];int quick_sort(int q[], int l, int r, int k) {if (l > r) return q[l];int i l - 1, j r 1, x q[l r >> 1];while (i < j){do i ; while (q[i] < x);do j --…

山西电力市场日前价格预测【2023-10-05】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-05&#xff09;山西电力市场全天平均日前电价为363.87元/MWh。其中&#xff0c;最高日前电价为649.89元/MWh&#xff0c;预计出现在18: 45。最低日前电价为291.58元/MWh&#xff0c;预计…

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

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

矩阵的c++实现(2)

上一次我们了解了矩阵的运算和如何使用矩阵解决斐波那契数列&#xff0c;这一次我们多看看例题&#xff0c;了解什么情况下用矩阵比较合适。 先看例题 1.洛谷P1939 【模板】矩阵加速&#xff08;数列&#xff09; 模板题应该很简单。 补&#xff1a;1<n<10^9 10^9肯定…

背包问题学习笔记-多重背包问题

题意描述&#xff1a; 有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件&#xff0c;每件体积是 vi&#xff0c;价值是 wi。求解将哪些物品装入背包&#xff0c;可使物品体积总和不超过背包容量&#xff0c;且价值总和最大。 输出最大价值。输入格式 第一行两个整数…

成都建筑模板批发市场在哪?

成都作为中国西南地区的重要城市&#xff0c;建筑业蓬勃发展&#xff0c;建筑模板作为建筑施工的重要材料之一&#xff0c;在成都也有着广泛的需求。如果您正在寻找成都的建筑模板批发市场&#xff0c;广西贵港市能强优品木业有限公司是一家值得关注的供应商。广西贵港市能强优…

mysql面试题16:说说分库与分表的设计?常用的分库分表中间件有哪些?分库分表可能遇到的问题有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说说分库与分表的设计? 在MySQL中,分库与分表是常用的数据库水平扩展技术,可以提高数据库的吞吐量和扩展性。下面将具体讲解MySQL中分库与分表…

<C++> String

目录 一、标准库中的string类 1. string类 2. string类的常用接口说明 2.1 string类对象的常见构造 2.2 string类对象的容量操作 2.3 string类对象的访问及遍历操作 2.4 string类对象的修改操作 2.5 string类非成员函数 总结 前言 C语言中&#xff0c;字符串是以 \0 结尾的一些…

[软件工具]opencv-svm快速训练助手教程解决opencv C++ SVM模型训练与分类实现任务支持C# python调用

opencv中已经提供了svm算法可以对图像实现多分类&#xff0c;使用svm算法对图像分类的任务多用于场景简单且对时间有要求的场景&#xff0c;因为opencv的svm训练一般只需要很短时间就可以完成训练任务。但是目前网上没有一个工具很好解决训练问题&#xff0c;大部分需要自己编程…

AWS Lambda Golang HelloWorld 快速入门

操作步骤 以下测试基于 WSL2 Ubuntu 22.04 环境 # 下载最新 golang wget https://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gz# 解压 tar -C ~/.local/ -xzf go1.21.1.linux-amd64.tar.gz# 配置环境变量 PATH echo export PATH$PATH:~/.local/go/bin >> ~/.bashrc …

密码技术 (6) - 证书

一. 前言 前面介绍的公钥密码和数字签名&#xff0c;都无法解决一个问题&#xff0c;那就是判断自己获取的公钥是否期望的&#xff0c;不能确定公钥是否被中间攻击人掉包。所以&#xff0c;证书的作用是用来证明公钥是否合法的。本文介绍的证书就是解决证书的可靠性的技术。 二…

老卫带你学---leetcode刷题(4. 寻找两个正序数组的中位数)

4. 寻找两个正序数组的中位数 问题&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a;输入&#xff1a;nums1 [1…

Python3数据科学包系列(一):数据分析实战

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python3数据科学包系列(一):数据分析实战 Python3数据科学包系列(二):数据分析实战 认识下数据科学中数据处理基础包: (1)NumPy 俗话说: 要学会跑需先…

React框架核心原理

一、整体架构 三大核心库与对应的组件 history -> react-router -> react-router-dom react-router 可视为react-router-dom 的核心&#xff0c;里面封装了<Router>&#xff0c;<Route>&#xff0c;<Switch>等核心组件,实现了从路由的改变到组件的更新…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第三周测验

课程1_第3周_测验题 目录&#xff1a;目录 第一题 1.以下哪一项是正确的&#xff1f; A. 【  】 a [ 2 ] ( 12 ) a^{[2](12)} a[2](12)是第12层&#xff0c;第2个训练数据的激活向量。 B. 【  】X是一个矩阵&#xff0c;其中每个列都是一个训练示例。 C. 【  】 a 4 […