大模型语言系列-Agent

文章目录

  • 前言
  • 一、Agent是什么?
  • 二、LLM Agent
    • 1.西部世界小镇Agent
    • 2.BabyAGI
    • 3.AutoGPT
    • 4.Voyager Agent
  • 总结


前言

自2022年ChatGPT诞生以来,LLM获得了收获了大量关注和研究,但究其根本,技术还是要为应用服务,如何将LLM应用于实际的业务场景成为了诸多工程师思考的问题。

从ChatGPT引入强化学习以来,基于LLM的Agent(智能体)概念再次火爆起来,本文旨在对Agent的起源、发展、现状进行一定程度的探究。


一、Agent是什么?

Agent(智能体)概念最早由人工智能领域的研究者提出,旨在模拟人类的智能行为。最初的Agent系统主要集中在解决特定问题或领域,如专家系统、规则引擎等。

20世纪80年代末和90年代初,随着计算机和网络技术的发展,Agent开始融入到各种应用中,如搜索引擎、个人助理等。

强化学习等技术的兴起(2014年起,深度强化学习出现)使得Agent能够通过与环境的交互来学习和优化其行为。

直到现在,基于LLM和深度强化学习结合的Agent已经成为人工智能领域的核心研究方向之一,涉及到智能系统、机器人、游戏、自动化等多个领域。

简而言之,现在的Agent就是LLM + Planning + Memory + Tools,让大模型实现任务自动化,并且能够不断探索、规划和发展新技能。

下面举几个LLM Agent案例。

二、LLM Agent

1.西部世界小镇Agent

2023年3月,斯坦福制作了西部世界小镇Agent,构建出了一个虚拟小镇,让25个AI智能体在其中生存、从事复杂行为。
在这里插入图片描述

为了生成智能体,研究者提出了一种全新架构,它扩展了大语言模型,能够使用自然语言存储Agent的经历。随着时间的推移,这些记忆会被合成为更高级别的反射,智能体可以动态检索它们,来规划自己的行为。最终,用户可以使用自然语言和全镇的25个Agent都实现交互。

在这里插入图片描述
如上,生成式智能体的架构实现了一个记忆「检索」(Retrieve)功能,这一功能将智能体的当前情况/感知(Perceive)作为输入,并返回记忆流(Memory Stream)的一个子集(Retrieved Memories)传递给语言模型,而检索功能有多种可能的实现方式,具体取决于智能体在决定如何行动时考虑的重要因素。

  1. 生成式智能体架构面临一个核心挑战,就是如何管理大量必须保留的事件和记忆。为了解决这个问题,架构的核心是记忆流(Memory Stream),即一个记录智能体全部经验的数据库。智能体可以从记忆流中检索相关记忆,这有助于它规划行动,做出正确反应,并且每次行动都会反馈记录到记忆流中,以便递归地改进未来行动。

  2. 此外,研究还引入了第二种类型的记忆——反思(Reflect)。反思是智能体根据最近经历生成的高级抽象思考。反思是周期性触发的过程,只有当智能体判断最近一系列事件的重要性评分,累积超过设定阈值时,才会启动反思机制。
    在这里插入图片描述

  3. 生成式智能体为了创建合理的规划(Plan),它们会自上而下递归生成更多的细节。这些规划最初只是粗略的描述了当日所要做的事情。在执行规划的过程中,生成智能体会持续感知周围环境,并将感知到的观察结果存储到记忆流中。通过利用观察结果作为提示,让语言模型决定智能体下一步行动:继续执行当前规划,还是做出其他反应。
    在这里插入图片描述

作者对该框架采用了两种评估方式:控制评估,以及端到端的评估:

  • 控制评估:是为了了解智能体能否独立产生可信个体行为。
  • 端到端评估:是为了了解智能体的涌现能力以及稳定性。

2.BabyAGI

BabyAGI是一个智能个人任务管理和解决工具。

BabyAGI背后的脚本非常简单(不要让看似复杂的图表欺骗你)。它本质上是一个与任务列表交互的语言模型,目的是根据预定义的目标自动生成任务、确定任务的优先级和执行任务。

BabyAG结合了OpenAI GPT-4和Pinecone向量搜索引擎的力量,以自动完成和管理一系列任务

  • 从一个初始任务开始,BabyAGI使用GPT4生成解决方案和新任务,并将解决方案存储在Pinecone中以便进一步检索。
  • BabyAGI根据先前任务的结果和预定义的目标创建新任务,并使用 Pinecone 存储和检索上下文的任务结果。

通过迭代这个过程,babyagi不断为用户解决问题,并生成新的相关任务,这使得用户可以更高效地解决复杂的问题,专注于实现更高层次的目标,同时,Pinecone向量搜索引擎的使用确保了解决方案的组织和快速检索。具体流程如下图:
在这里插入图片描述

  1. 有用户指定需要解决的问题也就是Objective,比如<如何解决世界饥荒问题>
  2. 根据用户给出的问题创建第一个需要解决的任务并插入系统任务列表当中:一个关于解决<如何解决世界饥荒问题>的任务列表
  3. 向OpenAI GPT-4发送一个请求,以获取如何解决世界饥饿问题的任务列表。请求时,提供目标(Objective)和第一个任务(First Task)
  4. 将OpenAI GPT-4生成的任务及其相关信息保存到Pinecone向量索引中
  5. 从Pinecone向量索引中检索任务及其相关信息,并将结果打印到控制台
  6. 继续提取任务进行执行,直到GPT-4无法生成新任务为止。换句话说,当GPT-4生成的任务已经在tasks列表中时,程序将中止。这意味着所有已分配的任务已经解决,不再有新任务生成

在这里插入图片描述

3.AutoGPT

使GPT-4能够自主完成任务,而无需人类干预(Prompt)。

過往我們在使用ChatGPT的時候,必須要一步一步的给出提示Prompt,于ChatGPT「对话」才能达到自己要的結果。AutoGPT无需人工一步步干预,第一次输入指令后,AutoGPT会自动学习并完成任务。

可以将Auto-GPT想象成一个足智多谋的机器人。

我们每分配一个任务,Auto-GPT都会给出一个相应的解决计划。比如,需要浏览互联网或使用新数据,它便会调整其策略,直到任务完成。这就像拥有一个能处理各种任务的私人助手,如市场分析、客户服务、市场营销、财务等。

AutoGPT 可以抓取网站、搜索信息、生成图像、创建和运行代码等。
在这里插入图片描述

Auto-GPT具备的几个功能:

  • 连接网络以便搜寻和收集咨询
  • 管理长期和短期记忆的能力
  • 串联 GPT-4 的多个实例以进行文字生成,存取热门的网站和平台
  • 使用 GPT-3.5 执行档案存储和总结

Auto-GPT的缺点:

  1. 成本高
  2. 已经完成的相似任务再来一遍仍然从头开始
  3. 容易陷入死循环

4.Voyager Agent

2023年4月,英伟达 AI 科学家 Jim Fan 等人把 GPT-4 整进了「我的世界」(Minecraft)—— 提出了一个全新的 AI 智能体 Voyager。

Voyager 的厉害之处在于,它不仅性能完胜 AutoGPT,而且还可以在游戏中进行全场景的终身学习!

真・数字生命

  • 接入 GPT-4 之后,Voyager 根本不用人类操心,完全就是自学成才。
  • 它不仅掌握了挖掘、建房屋、收集、打猎这些基本的生存技能,还学会了自个进行开放式探索。
  • 它会自己去到不同的城市,路过一片片海洋,一座座金字塔,甚至还会自己搭建传送门。
  • 通过自我驱动,它不断探索着这个神奇的世界,扩充着自己的物品和装备,配备不同等级的盔甲,用盾牌格挡伤害,用栅栏圈养动物……

与其他 AI 研究中常用的游戏不同,Minecraft 并没有强加预定义的终点目标或固定的剧情线,而是提供了一个具有无尽可能性的游乐场。对于一个有效的终身学习智能体来说,它应该具有与人类玩家类似的能力,如:

  1. 根据其当前的技能水平和世界状态提出适当的任务,例如,如果它发现自己是在沙漠而不是森林中,就会在学习收集铁之前学习收集沙子和仙人掌

  2. 基于环境反馈来完善技能,并将掌握的技能记入记忆,以便在类似情况下重复使用(例如,与僵尸战斗与与蜘蛛战斗类似)

  3. 持续探索世界,以自我驱动的方式寻找新的任务。

为了让 Voyager 具有上述这些能力,来自英伟达、加州理工学院、得克萨斯大学奥斯汀分校和亚利桑那州立大学的团队提出了 3 个关键组件:

  1. 一个迭代提示机制(Iterative Prompting Mechanism),能结合游戏反馈、执行错误和自我验证来改进程序

  2. 一个技能代码库(Skill Library),用来存储和检索复杂行为

  3. 一个自动教程(Automatic Curriculum),可以最大化智能体的探索

在这里插入图片描述

首先,Voyager 会尝试使用一个流行的 Minecraft JavaScript API(Mineflayer)来编写一个实现特定目标的程序。

虽然程序在第一次尝试时就出错了,但是游戏环境反馈和 JavaScript 执行错误(如果有的话)会帮助 GPT-4 改进程序。

在这里插入图片描述

左:环境反馈。GPT-4 意识到在制作木棒之前还需要 2 块木板。
右: 执行错误。GPT-4 意识到它应该制作一把木斧,而不是一把「相思木」斧,因为 Minecraft 中并没有「相思木」斧。

通过提供智能体当前的状态和任务,GPT-4 会告诉程序是否完成了任务。此外,如果任务失败了,GPT-4 还会提出批评,建议如何完成任务。

在这里插入图片描述
其次,Voyager 通过在向量数据库中存储成功的程序,逐步建立一个技能库。每个程序可以通过其文档字符串的嵌入来检索。复杂的技能是通过组合简单的技能来合成的,这会使 Voyager 的能力随着时间的推移迅速增长,并缓解灾难性遗忘。

在这里插入图片描述

上:添加技能。每个技能都由其描述的嵌入索引,可以在将来的类似情况中检索。
下:检索技能。当面对自动课程提出的新任务时,会进行查询并识别前 5 个相关技能。

第三,自动课程会根据智能体当前的技能水平和世界状态,提出合适的探索任务。

例如,如果它发现自己在沙漠而非森林中,就学习采集沙子和仙人掌,而不是铁。具体来说,课程是由 GPT-4 基于「发现尽可能多样化的东西」这个目标生成的。

在这里插入图片描述


总结

目前,Agent领域百花齐放,并且已经诞生了很多有有趣、有实际应用的产品,如微软的贾维斯(Microsoft JARVIS,也称为HuggingGPT)、全球首个AI软件工程师-Devin等等。

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

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

相关文章

探索编程新纪元:Code GeeX、Copilot与通义灵码的智能辅助之旅

在人工智能技术日新月异的今天&#xff0c;编程领域的革新也正以前所未有的速度推进。新一代的编程辅助工具&#xff0c;如Code GeeX、Copilot和通义灵码&#xff0c;正在重塑开发者的工作流程&#xff0c;提升编程效率&#xff0c;并推动编程教育的普及。本文将深入探讨这三款…

Docker 镜像源配置

目录 一、 Docker 镜像源1.1 加速域名1.2 阿里云镜像源&#xff08;推荐&#xff09; 二、Docker 镜像源配置2.1 修改配置文件2.1.1 Docker Desktop 配置2.1.2 命令行配置 2.2 重启 Docker 服务2.2.1 Docker Desktop 重启2.2.2 命令行重启 2.3 检查是否配置成功 参考资料 一、 …

SpringCloudAlibaba系列之Seata实战

目录 环境准备 1.下载seata安装包 2.修改配置文件 3.准备seata所需配置文件 4.初始化seata所需数据库 5.运行seata 服务准备 分布式事务测试 环境准备 1.下载seata安装包 Seata-Server下载 | Apache Seata 本地环境我们选择稳定版的二进制下载。 下载之后解压到指定目录…

网络分层架构(七/四层协议)详解

OSI七层模型和TCP/IP四层模型 业内普遍的分层方式有两种&#xff1a;OSI七层模型 和TCP/IP四层模型。记忆则为 “应表会传网数物” 关于协议&#xff1a; ① OSI七层模型详解 结构名 功能 主要设备 应用层 是最靠近用户的OSI层。用户接口、应用程序。应用层向应用进程展示…

详解MySql索引

目录 一 、概念 二、使用场景 三、索引使用 四、索引存在问题 五、命中索引问题 六、索引执行原理 一 、概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。暂时可以理解成C语言的指针,文章后面详解 二、使用场景 数据量较大&#xff0c;且…

P1881 绳子对折

题目描述 FJ 有一个长度为 L&#xff08;1≤L≤10,000&#xff09;的绳子。这个绳子上有 N&#xff08;1≤N≤100&#xff09;个结&#xff0c;包括两个端点。FJ 想将绳子对折&#xff0c;并使较短一边的绳子上的结与较长一边绳子上的结完全重合&#xff0c;如图所示&#xff…

CleanMyMac X2024永久免费的强大的Mac清理工具

作为产品功能介绍专员&#xff0c;很高兴向您详细介绍CleanMyMac X这款强大的Mac清理工具。CleanMyMac X具有广泛的清理能力&#xff0c;支持多种文件类型的清理&#xff0c;让您的Mac始终保持最佳状态。 系统垃圾 CleanMyMac X能够深入系统内部&#xff0c;智能识别并清理各种…

MinGW64 windows gcc编译器安装

下载编译好的文件包 https://sourceforge.net/projects/mingw-w64/ 打开网址 界面左上方 点File 滚轮 滚到下面 点 红框 解压 配置path 环境变量

Vue3+TS+Vite 找不到模块“@/components/xxx/xxx”或其相应的类型声明

引入vue文件时文件是存在的&#xff0c;引入路径也是对的&#xff0c;报找不到模块&#xff0c;有一些解决方案是在tsconfig.json里面做一些配置&#xff0c;大家可以自行百度&#xff08;不知道是不是我百度的不对&#xff0c;我的没有解决&#xff09;还有一种是在项目根目录…

进程学习--02

在C语言中&#xff0c;一般使用fork函数开辟进程&#xff0c;这个函数开辟进程后会返回一个进程号&#xff0c;在子进程中会返回0&#xff0c;在父进程中会返回子进程的进程号。 int main(){int ret fork();if(ret<0){fprintf(stderr, "pid error");exit(-1);}e…

【Python编程基础】第一节.Python基本语法(上)

文章目录 前言⼀、Python介绍二、Python环境配置三、Pycharm 书写代码四、Python基本语法 4.1 print 函数的简单使用 4.2 注释 4.3 Python 代码中三种波浪线和 PEP8 4.4 在 cmd 终端中运⾏ Python 代码 4.5 变量 4.6 数据类型 4.7 类型转换…

字典树 [Tire]

数据结构、算法总述&#xff1a;数据结构/基础算法 C/C_禊月初三的博客-CSDN博客 字典树&#xff0c;英文名 trie。顾名思义&#xff0c;就是一个像字典一样的树。 Trie 树是一种多叉树的结构&#xff0c;它的特点是所有的字符都存储在树的分支上&#xff0c;并且从根节点到某…

什么是VR应急预案演练虚拟化|VR体验馆加盟|元宇宙文旅

VR 应急预案演练虚拟化指的是利用虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;技术进行应急预案演练的过程。在传统的应急预案演练中&#xff0c;人们通常需要在实际场地或模拟环境中进行演练&#xff0c;这可能存在一些限制&#xff0c;如成本高昂、场地受…

Delphi7应用教程学习1.3【练习题目】:文本及悬停文字的显示

这个例子主要用到了btn的Hint 属性&#xff0c;Hint是提示的意思。 还有Delphi7还是很好用的&#xff0c;改变了的属性是粗体&#xff0c;默认没有改变的属性为细体。

吴恩达prompt 笔记2:迭代提示开发(Iterative Prompt Develelopment)

1 前言 我们很难在初次尝试中就设计出最佳的提示&#xff0c;因此需要根据ChatGPT的反馈进行分析&#xff0c;分析输出具体在哪里不符合期望&#xff0c;然后不断思考和优化提示。如果有条件的话&#xff0c;最好是利用批量的样本来改善提示&#xff0c;这样可以对你的优化结…

Spring炼气之路(炼气一层)

目录 一、IOC 1.1 控制反转是什么&#xff1f; 1.2 什么是IOC容器&#xff1f; 1.3 IOC容器的作用 1.4 IOC容器存放的是什么&#xff1f; 二、DI 2.1 依赖注入是什么&#xff1f; 2.2 依赖注入的作用 三、IOC案例实现 3.1下载Maven 3.2 配置Maven中的settings.xml文…

【经验总结】ubuntu 20.04 git 上传本地文件给 github,并解决出现的问题

1. 在GitHub 上创建仓库 登录 GitHub 个人网站 点击 New 填写 Repository name, 以及 Description (optional) 选择 Public &#xff0c; 并添加 Add a README file 点击 Create repository github repository 创建成功 2. 设置SSH key 在本地 bash 运行&#xff1a;…

【PLC】现场总线和工业以太网汇总

1、 现场总线 1.1 什么是现场总线 1&#xff09;非专业描述&#xff1a; 如下图&#xff1a;“人机界面”一般通过以太网连接“控制器(PLC)”&#xff0c;“控制器(PLC)”通过 “现场总线”和现场设备连接。 2&#xff09;专业描述&#xff08;维基百科&#xff09; 现场总线…

WAAP全站防护是什么,有什么作用

WAAP全站防护是基于风险管理和WAAP理念打造的安全方案&#xff0c;以“体系化主动安全” 取代安全产品的简单叠加&#xff0c;为各类Web、API业务等防御来自网络层和应用层的攻击&#xff0c;帮助企业全面提升Web安全水位和安全运营效率。 主要的特性在于&#xff1a; 1.全周…

C语言例:设 int a=11; 则表达式 a+=a-=a*a 的值

注&#xff1a;软件为VC6.0 代码如下&#xff1a; #include<stdio.h> int main(void) {int a11, b;b (aa-a*a); //a*a121 -->a-121结果为a-110 -->a-110结果为a-220printf("表达式aa-a*a 的值为&#xff1a; %d\n",b);return 0; } //优先级&#x…