Blog Reading:LLM Powered Autonomous Agents -Lilian Weng
Last updated on September 20, 2025 pm
该博文深入探讨了以大型语言模型(LLM)为核心控制器来构建自主智能代理(Autonomous Agents) 的概念、架构、组件、案例研究及其面临的挑战。文章指出,LLM的潜力远不止于生成文本,更可被视为一个强大的通用问题解决器,作为代理的“大脑”。
核心架构概述
一个LLM驱动的自主代理系统通常由三个关键组件协同工作:
- 规划(Planning):代理的核心思维能力,用于分解任务和反思改进。
- 记忆(Memory):代理的存储系统,用于保留和召回信息。
- 工具使用(Tool Use):代理与外部世界交互的手段,扩展其内在能力。
组件一:规划 (Planning)
规划使代理能够处理复杂任务,主要包括两个方面:
1. 任务分解 (Task Decomposition) * 思维链(CoT):标准技术,通过“一步一步思考”的提示,将复杂任务分解为更小、更简单的步骤。 * 思维树(ToT):CoT的扩展,在每一步探索多种推理可能性,形成树状结构,并通过广度优先搜索(BFS)或深度优先搜索(DFS)进行搜索,由分类器(通过提示)或多数投票评估状态。 * 分解方法:可通过LLM简单提示、任务特定指令或人类输入完成。 * LLM+P:一种独特方法,将长期规划外包给外部经典规划器。LLM负责将问题转换为规划域定义语言(PDDL), classical planner生成计划,LLM再将计划转换回自然语言。该方法依赖于现成的领域PDDL和规划器。
2. 自我反思 (Self-Reflection)
自我反思使代理能够从错误中学习,迭代改进其行动和策略。 *
ReAct(Reason +
Act):将推理(生成自然语言思考轨迹)和行动(调用特定任务API)结合在一个框架内。其提示模板格式为:Thought: ... Action: ... Observation: ...。研究表明,ReAct在知识密集和决策任务上均优于仅行动的基线。
*
Reflexion:一个为代理配备动态记忆和自我反思能力的框架,其灵感来自强化学习(RL)设置。它引入了一种启发式函数来检测低效规划或幻觉(连续相同动作导致相同观察),并决定何时停止当前轨迹并重置环境。通过少样本示例让LLM生成自我反思,并将这些反思存入工作记忆中以指导未来规划。
* **
hindsight(CoH):通过向模型展示一个带有反馈的过去输出序列(按奖励排序)进行监督微调,训练模型根据反馈历史趋势生成更好的输出。
*
算法蒸馏(AD):将CoH思想应用于强化学习。它将跨
episode
的学习历史串联起来作为模型的输入,目的是让模型学会强化学习过程本身**,从而在上下文中表现出学习行为,其性能接近在线RL方法。
组件二:记忆 (Memory)
记忆使代理能够积累和利用过去的信息。 * 记忆类型(类比人类记忆): * 感官记忆:类比于对原始输入(文本、图像等)学习嵌入表示。 * 短期记忆:类比于上下文学习。受Transformer上下文窗口长度限制,容量有限。 * 长期记忆:类比于外部向量存储(Vector Store),通过快速检索访问,提供近乎无限的存储容量。 * 最大内积搜索(MIPS):为了快速从向量库中检索信息,常使用近似最近邻(ANN) 算法。文章介绍了几种常见算法: * LSH(局部敏感哈希) * ANNOY(基于随机投影树) * HNSW(分层可导航小世界图) * FAISS(基于向量量化) * ScaNN(各向异性向量量化)
组件三:工具使用 (Tool Use)
工具使用极大地扩展了LLM的能力边界,使其能够获取实时信息、执行代码等。 * MRKL:一种神经符号架构,LLM作为路由器,将问题路由到最适合的专家模块(可以是神经或符号工具,如计算器、API)。关键在于LLM能否可靠地决定何时及如何使用工具。 * TALM & Toolformer:通过微调LLM来学习调用外部工具API。数据集通过判断添加API调用是否能改进输出质量来构建。 * 实践案例:ChatGPT Plugins 和 OpenAI API function calling 是工具增强LLM的实际例子。 * HuggingGPT:一个框架,利用ChatGPT作为任务规划器,根据模型描述选择HuggingFace平台上的模型,并总结执行结果。其工作流程分为四个阶段: 1. 任务规划:LLM解析用户请求为多个任务。 2. 模型选择:LLM将任务分配给专家模型。 3. 任务执行:专家模型执行任务。 4. 响应生成:LLM汇总结果返回给用户。 * API-Bank:一个用于评估工具增强LLM性能的基准测试,包含53个API工具和264个对话。它在三个层次上评估代理: * Level-1:调用给定API的能力。 * Level-2:检索正确API的能力。 * Level-3:超越检索和调用的规划能力(处理模糊用户请求,需多次API调用)。
案例研究 (Case Studies)
- 科学发现代理:
- ChemCrow:一个用于化学领域(有机合成、药物发现等)的代理,集成了13个专家设计的工具。使用ReAct和MRKL模式。关键发现:人类专家评估发现ChemCrow远优于GPT-4,突显了LLM在专业领域自我评估的局限性。
- Boiko et al.:探索LLM代理自主设计、规划和执行复杂科学实验,使用互联网浏览、文档阅读、代码执行、机器人实验API等工具。同时讨论了其用于合成化学武器等风险。
- 生成式代理模拟:
- Generative
Agents:一个有趣的实验,25个由LLM驱动的虚拟角色在一个沙盒环境中生活互动(类似《模拟人生》)。代理架构结合了:
- 记忆流:记录代理经验的外部数据库。
- 检索模型:根据相关性、新近性和重要性从记忆流中检索信息。
- 反思机制:将记忆合成为更高层次的推断,指导未来行为。
- 规划与反应:将反射和环境信息转化为行动。
- 结果涌现出信息传播、关系记忆和社交事件协调等逼真的社会行为。
- Generative
Agents:一个有趣的实验,25个由LLM驱动的虚拟角色在一个沙盒环境中生活互动(类似《模拟人生》)。代理架构结合了:
- 概念验证示例:
- AutoGPT:一个著名的PoC演示,展示了自主代理的潜力。其系统提示定义了目标、约束、可用命令(如谷歌搜索、读写文件、执行代码等),并要求以特定JSON格式响应。大量代码用于解析自然语言输出。
- GPT-Engineer:根据自然语言任务描述生成整个代码库。其工作流程包括:首先要求LLM澄清任务细节,然后进入代码生成模式(使用详细的系统提示,要求生成完整、可运行、跨文件兼容的代码)。
挑战 (Challenges)
文章最后指出了构建LLM驱动代理面临的主要挑战: 1. 有限的上下文长度:限制了历史信息、详细指令和API上下文的包含。虽然向量存储提供了扩展,但其表示能力不如全注意力机制。 2. 长期规划与任务分解的困难:LLM在根据意外错误调整计划方面存在困难,其稳健性不如人类。 3. 自然语言接口的可靠性:LLM的输出可能存在格式错误或偶尔拒绝指令,导致系统需要大量代码来解析输出,可靠性成为问题。
总结
这篇博文全面综述了LLM驱动自主代理的技术蓝图,将其分解为规划、记忆和使用工具三大核心模块,并辅以丰富的技术细节(如ReAct、Reflexion、HNSW、HuggingGPT等)和生动案例(ChemCrow, Generative Agents, AutoGPT)。最后,它客观地指出了当前技术在实际应用中面临的上下文限制、规划可靠性和接口稳定性等关键挑战,为读者提供了对该领域深入且系统的理解。