【前言】以LLM(大语言模型)作为核心控制器构建智能体是一个很酷的概念。AutoGPT、GPT-Engineer和BabyAGI等几个概念验证演示都是鼓舞人心的示例。LLM的潜力不仅仅限于生成写得好的副本、故事、论文和程序;它可以被视为一个强大的通用问题解决器。
01
智能体系统概述
在 LLM 支持的自主智能体系统中,LLM 充当智能体的大脑,并由几个关键组件进行补充:
记忆
工具使用
01
第一部分:规划
一项复杂的任务通常涉及许多步骤。智能体需要了解它们是什么并提前计划。
任务分解
思想链:Chain of thought(CoT;Wei et al. 2022)已成为增强复杂任务模型性能的标准提示技术。该模型被指示“一步一步思考”,以利用更多的测试时间计算将困难任务分解为更小、更简单的步骤。CoT 将大任务转化为多个可管理的任务,并阐明模型思维过程的解释。
Tree of Thoughts(Yao et al. 2023)通过在每一步探索多种推理可能性来扩展 CoT。它首先将问题分解为多个思考步骤,并在每个步骤中生成多个思考,从而创建树结构。搜索过程可以是 BFS(广度优先搜索)或 DFS(深度优先搜索),每个状态由分类器(通过提示)或多数投票进行评估。
任务分解可以通过 (1) 通过 LLM 进行简单提示,如"Steps for XYZ.n1."、"What are the subgoals for achieving XYZ?"、 (2) 通过使用特定于任务的指令;例如,"Write a story outline."用于写小说,或 (3) 人工输入。
另一种截然不同的方法是LLM+P(Liu et al. 2023),涉及依赖外部经典规划器来进行长期规划。该方法利用规划领域定义语言(PDDL)作为描述规划问题的中间接口。在此过程中,LLM (1) 将问题转化为“Problem PDDL”,然后 (2) 请求经典规划器基于现有的“Domain PDDL”生成 PDDL 计划,最后 (3) 将 PDDL 计划转化回自然语言。本质上,规划步骤被外包给外部工具,假设特定领域的 PDDL 和合适的规划器可用,这在某些机器人设置中很常见,但在许多其他领域并不常见。
自我反省
自我反思是一个重要的方面,它允许自主代理通过完善过去的行动决策和纠正以前的错误来迭代改进。它在不可避免地会出现试错的现实任务中发挥着至关重要的作用。
ReAct(Yao et al. 2023)通过将动作空间扩展为特定于任务的离散动作和语言空间的组合,将推理和动作集成在法学硕士中。前者使LLM能够与环境交互(例如使用维基百科搜索API),而后者则促使LLM以自然语言生成推理痕迹。
ReAct 提示模板包含了 LLM 思考的明确步骤,大致格式为:
在知识密集型任务和决策任务的两个实验中,都比删除步骤的唯一基线ReAct效果更好。ActThought: …
Reflexion ( Shinn & Labash 2023 ) 是一个为智能体配备动态记忆和自我反思能力以提高推理技能的框架。Reflexion 有一个标准的 RL 设置,其中奖励模型提供简单的二元奖励,而动作空间遵循 ReAct 中的设置,其中特定于任务的动作空间通过语言进行增强,以实现复杂的推理步骤。每次动作a_t后,智能体计算启发式h_t并且可以选择根据自我反思的结果决定重置环境以开始新的试验。
启发式函数确定轨迹何时效率低下或包含幻觉并且应该停止。低效的规划是指花费太长时间而没有成功的轨迹。幻觉(Hallucination)被定义为遇到一系列连续的相同动作,这些动作导致在环境中进行相同的观察。
自我反思是通过向LLM展示两个例子来创建的,每个例子都是一对(失败的轨迹,指导计划未来变化的理想反思)。然后,反射将添加到智能体的工作内存中(最多三个),以用作查询 LLM 的上下文。
Chain of Hindsight(CoH;Liu et al. 2023)通过明确地向模型呈现一系列过去的输出(每个输出都 带有反馈注释) 来鼓励模型改进其自身的输出。人类反馈数据是以下数据的集合
, 在哪里 是提示, 每个 是一个模型完成, 是人类的评级 , 和 是相 应的人类提供的事后反馈。假设反馈元组按奖励排序,
该过程是有监督的微 调, 其中数据是以下形式的序列
, 在哪里
。该模型 被微调为仅预测 以序列前缀为条件, 以便模型可以根据反馈序列进行自我反思以产生更好的输出。该模型可以选择在测试时接收人类注释者的多轮指令。
为了避免过度拟合, 添加了正则化项来最大化预训练数据集的对数似然。为了避免捷径和复制 (因为反馈序列中有很多常见单词) , 他们在训练过程中随机屏蔽了
的过去标记。
他们实验中的训练数据集是WebGPT 比较、人类反馈总结和人类偏好数据集的组合。
CoH 的想法是呈现上下文中输出连续改进的历史,并训练模型以适应产生更好输出的趋势。算法蒸馏(AD;Laskin 等人,2023)将相同的想法应用于强化学习任务中的跨情节轨迹,其中算法被封装在长期历史条件策略中。考虑到智能体与环境进行多次交互,并且在每一集中智能体都会变得更好一些,AD 会将此学习历史连接起来并将其输入到模型中。因此,我们应该期望下一个预测的行动会带来比之前的试验更好的性能。目标是学习强化学习的过程,而不是训练特定于任务的策略本身。
该论文假设任何生成一组学习历史的算法都可以通过对动作执行行为克隆来提炼成神经网络。历史数据由一组源策略生成,每个源策略针对特定任务进行训练。在训练阶段,在每次 RL 运行期间,都会对随机任务进行采样,并使用多集历史的子序列进行训练,从而使学习到的策略与任务无关。
实际上,该模型的上下文窗口长度有限,因此剧集应该足够短以构建多剧集历史。要学习近乎最优的上下文强化学习算法,需要 2-4 个片段的多片段上下文。上下文强化学习的出现需要足够长的上下文。
与三个基线相比,包括 ED(专家蒸馏,用专家轨迹而不是学习历史进行行为克隆)、源策略(用于生成 UCB 蒸馏的轨迹)、RL^2(Duan et al. 2017 ;用作上限)因为它需要在线 RL),尽管仅使用离线 RL,AD 仍展示了上下文中的 RL,其性能接近 RL^2,并且学习速度比其他基线快得多。当以源策略的部分训练历史为条件时,AD 的改进速度也比 ED 基线快得多。
02
第二部分:内存
记忆的类型
记忆可以定义为用于获取、存储、保留以及随后检索信息的过程。人脑中有多种记忆类型。
感觉记忆:这是记忆的最早阶段,提供在原始刺激结束后保留感觉信息(视觉、听觉等)印象的能力。感觉记忆通常只能持续几秒钟。子类别包括图像记忆(视觉)、回声记忆(听觉)和触觉记忆(触摸)。
短期记忆(STM)或工作记忆:它存储我们当前意识到的以及执行学习和推理等复杂认知任务所需的信息。短期记忆被认为具有大约 7 个项目的容量(Miller 1956)并持续 20-30 秒。
长期记忆(LTM):长期记忆可以存储信息相当长的时间,从几天到几十年不等,存储容量基本上是无限的。LTM 有两种亚型:
我们可以粗略地考虑以下映射:
最大内积搜索 (MIPS)
外部记忆可以缓解有限注意力广度的限制。标准做法是将信息的嵌入表示保存到向量存储数据库中,该数据库可以支持快速最大内积搜索(MIPS)。为了优化检索速度,常见的选择是近似最近邻 (ANN)算法,返回大约前 k 个最近邻,以牺牲一点精度来换取巨大的加速。
用于快速 MIPS 的 ANN 算法的几种常见选择:
03
第三部分:工具使用
工具的使用是人类的一个显着而显着的特征。我们创造、修改和利用外部物体来完成超出我们身体和认知极限的事情。为法学硕士配备外部工具可以显着扩展模型功能。
MRKL(Karpas et al. 2022)是“模块化推理、知识和语言”的缩写,是一种用于自主代理的神经符号架构。建议 MRKL 系统包含一组“专家”模块,通用 LLM 作为路由器将查询路由到最合适的专家模块。这些模块可以是神经模块(例如深度学习模型)或符号模块(例如数学计算器、货币转换器、天气 API)。
他们做了一个微调 LLM 以调用计算器的实验,使用算术作为测试用例。他们的实验表明,解决口头数学问题比明确表述的数学问题更难,因为法学硕士(7B Jurassic1-large model)无法可靠地为基本算术提取正确的论据。结果强调了外部符号工具何时可以可靠地工作,知道何时以及如何使用这些工具至关重要,这由法学硕士的能力决定。
TALM (工具增强语言模型;Parisi 等人,2022 年)和Toolformer(Schick 等人,2023 年)都对 LM 进行微调,以学习使用外部工具 API。根据新添加的API调用注释是否可以提高模型输出的质量来扩展数据集。请参阅 Prompt Engineering 的“外部 API”部分了解更多详细信息。
ChatGPT插件和 OpenAI API 函数调用是法学硕士在实践中通过工具使用能力增强的很好的例子。工具API的集合可以由其他开发者提供(如在插件中)或自定义(如在函数调用中)。
HuggingGPT(Shen et al. 2023)是一个使用 ChatGPT 作为任务规划器的框架,根据模型描述选择 HuggingFace 平台中可用的模型,并根据执行结果总结响应。
该系统由4个阶段组成:
(1)任务规划:LLM作为大脑,将用户请求解析为多个任务。每个任务有四个关联的属性:任务类型、ID、依赖项和参数。他们使用少量的例子来指导法学硕士进行任务解析和规划。操作说明:
(2) 模型选择:LLM将任务分配给专家模型,其中请求被构建为多项选择题。LLM 提供了可供选择的模型列表。由于上下文长度有限,需要基于任务类型的过滤。
操作说明:
(3) 任务执行:专家模型执行特定任务并记录结果。
操作说明:
(4) 响应生成:LLM接收执行结果并向用户提供汇总结果。
为了将 HuggingGPT 投入到现实世界中,需要解决几个挑战:(1)需要提高效率,因为 LLM 推理轮次和与其他模型的交互都会减慢流程;(2) 依赖长上下文窗口来进行复杂任务内容的通信;(3)LLM产出和外部模型服务的稳定性提升。
API-Bank(Li et al. 2023)是评估工具增强法学硕士性能的基准。它包含 53 个常用的 API 工具、完整的工具增强的 LLM 工作流程以及涉及 568 个 API 调用的 264 个带注释的对话。API的选择相当多样化,包括搜索引擎、计算器、日历查询、智能家居控制、日程管理、健康数据管理、账户认证工作流程等等。由于API数量较多,LLM首先要访问API搜索引擎找到合适的API进行调用,然后使用相应的文档进行调用。
在 API-Bank 工作流程中,法学硕士需要做出几个决定,在每一步我们都可以评估该决定的准确性。决定包括:
是否需要API调用。
确定要调用的正确 API:如果不够好,法学硕士需要迭代修改 API 输入(例如,确定搜索引擎 API 的搜索关键字)。
基于API结果的响应:如果结果不满意,模型可以选择细化并再次调用。
该基准测试从三个层面评估代理的工具使用能力:
04
实例探究
科学发现剂
ChemCrow(Bran 等人,2023)是一个特定领域的示例,其中LLM通过 13 个专家设计的工具进行了增强,以完成有机合成、药物发现和材料设计等任务。在LangChain中实现的工作流程反映了之前在ReAct和MRKL中描述的内容,并将 CoT 推理与与任务相关的工具相结合:
一个有趣的观察结果是,虽然基于 LLM 的评估得出的结论是 GPT-4 和 ChemCrow 的表现几乎相当,但专家针对解决方案的完成度和化学正确性进行的人工评估表明,ChemCrow 的性能大幅优于 GPT-4。这表明使用LLM来评估其自身在需要深厚专业知识的领域的表现存在潜在问题。专业知识的缺乏可能会导致法学硕士不知道其缺陷,从而无法很好地判断任务结果的正确性。
博伊科等人。(2023)还研究了LLM的科学发现智能体,以处理复杂科学实验的自主设计、规划和执行。该智能体可以使用工具浏览互联网、阅读文档、执行代码、调用机器人实验 API 并利用其他法学硕士。
例如,当要求 时"develop a novel anticancer drug",模型提出以下推理步骤:
询问抗癌药物发现的当前趋势;
选择了一个目标;
要求针对这些化合物的支架;
一旦化合物被识别,模型就会尝试合成。
他们还讨论了风险,特别是非法药物和生物武器的风险。他们开发了一套测试装置,其中包含一系列已知的化学武器制剂,并要求该制剂合成它们。11 项请求中有 4 项 (36%) 被接受以获得合成解决方案,并且智能体尝试查阅文档来执行该程序。11 件中有 7 件被拒绝,这 7 件被拒绝的案例中,有 5 件是在网络搜索后发生的,2 件是仅根据提示被拒绝的。
生成智能体模拟
Generative Agents(Park 等人,2023)是一个超级有趣的实验,其中 25 个虚拟角色,每个角色都由 LLM 支持的智能体控制,在沙盒环境中生活和交互,其灵感来自《模拟人生》。生成智能体为交互式应用程序创建可信的人类行为模拟。
生成智能体的设计将 LLM 与记忆、规划和反射机制相结合,使智能体能够根据过去的经验进行行为,并与其他智能体进行交互。
检索模型:根据相关性、新近度和重要性,显示上下文以告知智能体的行为。
反射机制:随着时间的推移将记忆合成更高层次的推论,并指导智能体未来的行为。它们是对过去事件的更高层次的总结(
规划与反应:将反思和环境信息转化为行动
这种有趣的模拟会产生新兴的社交行为,例如信息传播、关系记忆(例如,两个智能体继续讨论话题)和社交活动的协调(例如举办聚会并邀请许多其他人)。
概念验证示例
AutoGPT引起了人们对建立以 LLM 作为主控制器的自治智能体的可能性的广泛关注。考虑到自然语言界面,它存在很多可靠性问题,但仍然是一个很酷的概念验证演示。AutoGPT 中的很多代码都是关于格式解析的。
这是 AutoGPT 使用的系统消息,其中{{...}}是用户输入:
GPT-Engineer是另一个项目,用于根据自然语言指定的任务创建整个代码存储库。GPT 工程师被指示考虑要构建的较小组件列表,并要求用户输入以根据需要澄清问题。
以下是发送到 GPT-Engineer 使用的 OpenAI ChatCompletion 端点的用于说明任务的示例对话。用户输入被包装在{{user input text}}.
05
挑战
在了解了构建以 LLM 为中心的智能体的关键想法和演示之后,我开始看到一些常见的限制:
06
引文
07
References
[1] Wei et al.“Chain of thought prompting elicits reasoning in large language models."NeurIPS 2022
[2] Yao et al.“Tree of Thoughts: Dliberate Problem Solving with Large Language Models."arXiv preprint arXiv:2305.10601 (2023).
[3] Liu et al.“Chain of Hindsight Aligns Language Models with Feedback “arXiv preprint arXiv:2302.02676 (2023).
[4] Liu et al.“LLM+P: Empowering Large Language Models with Optimal Planning Proficiency”arXiv preprint arXiv:2304.11477 (2023).
[5] Yao et al.“ReAct: Synergizing reasoning and acting in language models."ICLR 2023.
[6] Google Blog.“Announcing ScaNN: Efficient Vector Similarity Search”July 28, 2020.
[7]
[8] Shinn & Labash.“Reflexion: an autonomous agent with dynamic memory and self-reflection”arXiv preprint arXiv:2303.11366 (2023).
[9] Laskin et al.“In-context Reinforcement Learning with Algorithm Distillation”ICLR 2023.
[10] Karpas et al.“MRKL Systems A modular, neuro-symbolic architecture that combines large language models, external knowledge sources and discrete reasoning."arXiv preprint arXiv:2205.00445 (2022).
[11] Weaviate Blog.Why is Vector Search so fast?Sep 13, 2022.
[12] Li et al.“API-Bank: A Benchmark for Tool-Augmented LLMs”arXiv preprint arXiv:2304.08244 (2023).
[13] Shen et al.“HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in HuggingFace”arXiv preprint arXiv:2303.17580 (2023).
[14] Bran et al.“ChemCrow: Augmenting large-language models with chemistry tools."arXiv preprint arXiv:2304.05376 (2023).
[15] Boiko et al.“Emergent autonomous scientific research capabilities of large language models."arXiv preprint arXiv:2304.05332 (2023).
[16] Joon Sung Park, et al.“Generative Agents: Interactive Simulacra of Human Behavior."arXiv preprint arXiv:2304.03442 (2023).
[17] AutoGPT.
[18] GPT-Engineer.
END
AI新青年讲座预告
大模型部署及微调训练的难点?LoRA 等现有轻量级微调方法解析?9月4日晚7点,来自莫纳什大学ZIP Lab在读博士何昊宇主讲《大模型的轻量级微调方法解析》,欢迎朋友们一起交流✌。
你的每一个“在看”,我都当成了喜欢
▼
暂无评论内容