前言
自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)传递给语言模型,而检索功能有多种可能的实现方式,具体取决于智能体在决定如何行动时考虑的重要因素。
-
生成式智能体架构面临一个核心挑战,就是如何管理大量必须保留的事件和记忆。为了解决这个问题,架构的核心是记忆流(Memory Stream),即一个记录智能体全部经验的数据库。智能体可以从记忆流中检索相关记忆,这有助于它规划行动,做出正确反应,并且每次行动都会反馈记录到记忆流中,以便递归地改进未来行动。
-
此外,研究还引入了第二种类型的记忆——反思(Reflect)。反思是智能体根据最近经历生成的高级抽象思考。反思是周期性触发的过程,只有当智能体判断最近一系列事件的重要性评分,累积超过设定阈值时,才会启动反思机制。
-
生成式智能体为了创建合理的规划(Plan),它们会自上而下递归生成更多的细节。这些规划最初只是粗略的描述了当日所要做的事情。在执行规划的过程中,生成智能体会持续感知周围环境,并将感知到的观察结果存储到记忆流中。通过利用观察结果作为提示,让语言模型决定智能体下一步行动:继续执行当前规划,还是做出其他反应。
作者对该框架采用了两种评估方式:控制评估,以及端到端的评估:
- 控制评估:是为了了解智能体能否独立产生可信个体行为。
- 端到端评估:是为了了解智能体的涌现能力以及稳定性。
2.BabyAGI
BabyAGI是一个智能个人任务管理和解决工具。
BabyAGI背后的脚本非常简单(不要让看似复杂的图表欺骗你)。它本质上是一个与任务列表交互的语言模型,目的是根据预定义的目标自动生成任务、确定任务的优先级和执行任务。
BabyAG结合了OpenAI GPT-4和Pinecone向量搜索引擎的力量,以自动完成和管理一系列任务
- 从一个初始任务开始,BabyAGI使用GPT4生成解决方案和新任务,并将解决方案存储在Pinecone中以便进一步检索。
- BabyAGI根据先前任务的结果和预定义的目标创建新任务,并使用 Pinecone 存储和检索上下文的任务结果。
通过迭代这个过程,babyagi不断为用户解决问题,并生成新的相关任务,这使得用户可以更高效地解决复杂的问题,专注于实现更高层次的目标,同时,Pinecone向量搜索引擎的使用确保了解决方案的组织和快速检索。具体流程如下图:
- 有用户指定需要解决的问题也就是Objective,比如<如何解决世界饥荒问题>
- 根据用户给出的问题创建第一个需要解决的任务并插入系统任务列表当中:一个关于解决<如何解决世界饥荒问题>的任务列表
- 向OpenAI GPT-4发送一个请求,以获取如何解决世界饥饿问题的任务列表。请求时,提供目标(Objective)和第一个任务(First Task)
- 将OpenAI GPT-4生成的任务及其相关信息保存到Pinecone向量索引中
- 从Pinecone向量索引中检索任务及其相关信息,并将结果打印到控制台
- 继续提取任务进行执行,直到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的缺点:
- 成本高
- 已经完成的相似任务再来一遍仍然从头开始
- 容易陷入死循环
4.Voyager Agent
2023年4月,英伟达 AI 科学家 Jim Fan 等人把 GPT-4 整进了「我的世界」(Minecraft)—— 提出了一个全新的 AI 智能体 Voyager。
Voyager 的厉害之处在于,它不仅性能完胜 AutoGPT,而且还可以在游戏中进行全场景的终身学习!
真・数字生命
- 接入 GPT-4 之后,Voyager 根本不用人类操心,完全就是自学成才。
- 它不仅掌握了挖掘、建房屋、收集、打猎这些基本的生存技能,还学会了自个进行开放式探索。
- 它会自己去到不同的城市,路过一片片海洋,一座座金字塔,甚至还会自己搭建传送门。
- 通过自我驱动,它不断探索着这个神奇的世界,扩充着自己的物品和装备,配备不同等级的盔甲,用盾牌格挡伤害,用栅栏圈养动物……
与其他 AI 研究中常用的游戏不同,Minecraft 并没有强加预定义的终点目标或固定的剧情线,而是提供了一个具有无尽可能性的游乐场。对于一个有效的终身学习智能体来说,它应该具有与人类玩家类似的能力,如:
-
根据其当前的技能水平和世界状态提出适当的任务,例如,如果它发现自己是在沙漠而不是森林中,就会在学习收集铁之前学习收集沙子和仙人掌
-
基于环境反馈来完善技能,并将掌握的技能记入记忆,以便在类似情况下重复使用(例如,与僵尸战斗与与蜘蛛战斗类似)
-
持续探索世界,以自我驱动的方式寻找新的任务。
为了让 Voyager 具有上述这些能力,来自英伟达、加州理工学院、得克萨斯大学奥斯汀分校和亚利桑那州立大学的团队提出了 3 个关键组件:
-
一个迭代提示机制(Iterative Prompting Mechanism),能结合游戏反馈、执行错误和自我验证来改进程序
-
一个技能代码库(Skill Library),用来存储和检索复杂行为
-
一个自动教程(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等等。