人工智能体-Agents 组件详解
【摘要】 在人工智能快速发展的今天,如何有效地与AI系统进行交互已成为一项重要技能。LearnPrompt应运而生,旨在帮助用户掌握这门新兴的"AI语言"。作为一个免费开源的AIGC(AI生成内容)课程平台,LearnPrompt提供了全面的学习资源,涵盖提示工程、ChatGPT使用、Midjourney等多个热门AI工具的应用。什么是LearnPrompt? LearnProm...
在人工智能快速发展的今天,如何有效地与AI系统进行交互已成为一项重要技能。LearnPrompt应运而生,旨在帮助用户掌握这门新兴的"AI语言"。作为一个免费开源的AIGC(AI生成内容)课程平台,LearnPrompt提供了全面的学习资源,涵盖提示工程、ChatGPT使用、Midjourney等多个热门AI工具的应用。
什么是LearnPrompt?
LearnPrompt是一个致力于教授人们如何与AI系统有效沟通的在线学习平台。该平台由一群来自OpenAI、微软等顶尖AI公司的专家共同创建,目前已有超过200万用户和45,000多名Discord社区成员。LearnPrompt提供80多个课程模块,涵盖了从基础到高级的各种提示工程技巧。
Agents 组件详解
在以LLM驱动的Agent系统中, LLM扮演着Agent的⼤脑⻆⾊, 并辅以⼏个关键组件:
1. 规划:LLM能够进⾏全⾯的规划,不仅仅是简单的任务拆分 。它可以评估不同的路径和策 略,制定最佳的⾏动计划, 以实现⽤户给出的⽬标。
2. 记忆:LLM具有记忆功能, 它可以存储和检索过去的信息和经验 。这使得它能够在处理⽤ 户查询时,利⽤之前学到的知识和经验,提供更准确和个性化的答案。
3. ⼯具使⽤ :LLM熟练掌握各种⼯具和资源, 能够灵活运⽤它们来⽀持任务的完成 。它可以 利⽤搜索引擎 、数据库 、API等⼯具, 获取和整理相关信息, 以满⾜⽤户的需求。
组件⼀ :规划
. ⼦⽬标和分解:Agent将⼤型任务分解为可管理的⼦⽬标,从⽽有效地处理复杂的任务。
. 反思和改进:Agent对过去的⾏动进⾏⾃我批评和反思,从错误中学习并改进未来的步 骤,从⽽提⾼最终结果的质量
处理复杂任务时,往往需要进⾏多个步骤 。为了更好地组织和计划,Agent 需要明确任务的 具体内容并开始提前计划。
任务分解
CoT将关注点放在了模型思考过程的可解释性上,使得处理困难任务变得更加可管理。
. 思维树(Tree of Thoughts)通过探索每个步骤的多种推理可能性来扩展CoT 。它⾸先将 任务分解为多个思考步骤, 并为每个步骤⽣成多个想法,从⽽可以创建⼀个树形结构 。形 成了⼀个树形结构 。您可以使⽤⼴度优先搜索或深度优先搜索来搜索思维树, 并根据分类 器或多数投票确定每个状态。
通过以上⽅法,您可以以三种⽅式拆解任务:
1. 使⽤简单的提示, 引导 LLM 进⾏拆解,例如: “ 实现A的步骤”, “ 实现A的⼦⽬标是什 么?”。
2. 使⽤特定任务的指令,例如 “ 写⼀个故事⼤纲 。”⽤于撰写⼩说。
3. 您可以⾃⼰进⾏任务拆解和规划 。如编写脚本要先进⾏信息提取, 再进⾏内容⽣成。
反思
在实际任务中,试错是不可避免的, ⽽⾃我反思在这个过程中起着⾄关重要的作⽤ 。它允许 Agent 通过改进过去的⾏动决策和纠正以前的错误来进⾏迭代改进。
反思是 Agent 对事情进⾏更⾼层次 、更抽象思考的结果 。反思是周期性⽣成的, 当Agent感 知到的最新事件的重要性评分之和超过⼀定阈值时,就会⽣成反思 。这可以类⽐为我们常⽤的成语 “三思⽽后⾏ ” ,做重⼤决策的时候, 我们会反思⾃⼰先前的决策 。
ReAct
ReAct是一种将推理和行动融合在一起的技术,通过将行动空间扩展为特定任务的离散行动。
和语言空间的组合 ,将其整合到LLM中 。简单来说,特定任务的离散⾏动使 LLM 能够与环 境交互(例如使⽤维基百科搜索API),语⾔空间能够促使LLM ⽣成⾃然语⾔的推理轨迹。 ReAct提示模板包括LLM思考的明确步骤,⼤致格式为:
ReAct与CoT的不同之处:CoT 只是在prompt加⼊了静态的 “ Let’s think step by step ” ;ReAct 的prompt是动态变化。
Reflexion
Reflexion是⼀个框架, 为Agent提供动态记忆和⾃我反思的能⼒以提⾼推理技能 。Reflexion 采⽤标准的强化学习设置, 奖励模型提供简单的⼆元奖励( 即判断⾏动正确与否), ⽽⾏动 空间遵循 ReAct 中的设置, 通过语⾔加强特定任务的⾏动空间,增加了复杂的推理步骤 。在 每个⾏动之后,Agent会计算⼀个启发式值,并根据⾃我反思的结果决定是否重置环境以开 始新的试验。
启发式函数⽤于判断 LLM 的⾏动轨迹什么时候开始低效或者包含幻觉, 并在这个时刻停⽌
任务 。低效是指花费了⼤量时间但没有没有成功的路径 。幻觉定义为 LLM 遇到了⼀系列连
续的相同动作, 这些动作导致LM在环境中观察到了相同的结果 。
请注意,这里跟我们一般说的大模型幻觉不同。大模型幻觉指的是模型会输出一系列看 似符合逻辑,但实际错误或并不存在的虚假事实。
组件⼆: 记忆
. 我们可以将上下⽂学习(context)看成是利⽤模型的短期记忆(也就是模型能接受输⼊ 的最⼤⻓度)来学习
. ⻓期记忆为 Agent 提供了⻓期存储和召回信息的能⼒ ,通常利⽤外部向量储存和快速检索 来实现。
记忆是指获取 、储存 、保留和后续检索信息的过程 。⼈脑中有多种记忆类型:
. 感觉记忆(Sensory Memory):这是记忆的最早阶段,提供在原始刺激结束后保留感官 信息( 视觉 、听觉等) 的印象的能⼒ 。感觉记忆通常只持续⼏秒钟。
. 短期记忆(Short-Term Memory, STM) 或⼯作记忆(Working Memory):它储存我们 当前意识到的信息,⽤于进⾏复杂的认知任务, ⽐如学习和推理 。短期记忆容量通常为7 个项⽬左右, 持续时间为20-30秒。
. ⻓期记忆( Long-Term Memory, LTM):⻓期记忆可以储存信息很⻓⼀段时间,从⼏天 到⼏⼗年, 其储存容量基本上是⽆限的 。⻓期记忆有两个⼦类型:
. 显性 / 陈述记忆( Explicit / declarative memory):指可被有意识回忆的事实和事件 的记忆, 包括情景记忆( 经历和经验) 和语义记忆( 事实和概念) 。
. 隐性 / 程序记忆( Implicit / procedural memory):这种记忆是⽆意识的, 涉及⾃动 执⾏的技能和例⾏程序, ⽐如骑⾃⾏车或打字。
对于 Agent 来说:
感觉记忆作为原始输⼊, 可以是⽂本 、图像或者其他模态的输⼊ 。 短期记忆则⽤于上下⽂学习 。它是短暂和有限的, 因为它受到Transformer有限上下⽂窗 ⼝⻓度的限制。⻓期记忆则是 Agent 可以在查询和关注的外部向量存储, 通过快速检索来访问。
记忆流与检索
记忆流( Memory Stream) 记录了Agent的全部经历 。它是⼀个内存对象列表,每个对象包 含⾃然语⾔描述 、创建时间戳和最近访问时间戳 。记忆流的基本元素是观察(Observation), 这是Agent直接感知的事件 。观察可以是Agent⾃身执⾏的⾏为,也可以 是Agent感知到其他Agent或⾮Agent对象执⾏的⾏为 。每个Agent都有⾃⼰独⽴的记忆流。检索功能根据Agent的当前情况,从记忆流中检索⼀部分记忆,供语⾔模型使⽤ 。排序打分 包括三个⽅⾯:
. 近期性( Recency):最近访问的记忆对象得到更⾼的分数, 因此刚刚发⽣的事件或今天 早上的事件可能会更受Agent关注 。近期性使⽤指数衰减函数来衡量,衰减因⼦为0.99 , 衰减的基准是上次检索记忆以来的时间。
. 重要性( Importance):根据Agent认为的重要程度, 为记忆对象分配不同的分数, 区分 普通记忆和核⼼记忆 。例如, 平凡的事件( ⽐如吃早餐) 得到低重要性分数, ⽽与重要的 ⼈开会这事件得到⾼分 。重要性分数可以使⽤不同的实现⽅式, 类似的解决⽅案就是使⽤ 了这个具体的评分模型来输出⼀个整数分数。
. 相关性( Relevance) 为与当前情况相关的记忆对象分配更⾼的分数 。使⽤常⻅的向量检 索引擎来实现相关性评估。
组件三: 使⽤⼯具
Agent可以通过学习调用外部API来获取模型权重中所缺少的额外信息,这些信息包括当前信 息、代码执行能力和访问专有信息源等。这对于预训练后难以修改的模型权重来说是非常重 要的。
掌握使⽤⼯具是⼈类最独特和重要的特质之⼀ 。我们通过创造 、修改和利⽤外部⼯具来突破 我们身体和认知的限制 。同样地, 我们也可以为语⾔模型( LLM) 提供外部⼯具来显著提升 其能⼒ 。
MRKL(模块化推理 、知识和语⾔) 是⼀种为⾃主Agent设计的神经符号架构 。MRKL系统包 含⼀组 “专家”模块, ⽽LLM 将查询发送到它认为最适合的专家模块 。这些模块可以是神经模 块( 如深度学习模型) 或符号模块( 如数学计算器 、货币转换器 、天⽓API) 。
TALM( ⼯具增强语⾔模型) 和Toolformer通过微调语⾔模型来学习使⽤外部⼯具的API 。这 些数据集是根据增加外部API调⽤注释是否能够提⾼模型输出质量⽽创建的 。⼯具API的集合 可以由其他开发⼈员提供( 如插件案例),也可以⾃定义( 如函数调⽤案例) 。
ChatGPT 插件和 OpenAI API 函数调⽤也是具有⼯具使⽤能⼒的 LLM 在实践中的最好 的例⼦ 。
1. 我们告诉 Agent “你的⽬标是找出关于Twitter的最新消息,然后给我发⼀份摘要”。
2. Agent查看⽬标并使⽤像OpenAI的GPT-4这样的AI进⾏阅读理解, 它提出了第⼀个任务: “在⾕歌上搜索与Twitter相关的新闻 。”
3. 然后,Agent 在⾕歌上搜索 Twitter 新闻,找到热⻔⽂章, 并返回链接列表 。第⼀个任务 已完成。
4. 现在,Agent 回顾主要⽬标( 获取关于Twitter的最新新闻, 并发送摘要) 以及它刚刚完成 的内容( 获得⼀系列关于Twitter的新闻链接), 并决定其下⼀个任务需要是什么。
5. 它提出了两个新任务 。1) 写新闻摘要 。2) 阅读通过⾕歌找到的新闻链接的内容。
6. 在继续之前,智能助理会稍作停顿, 以确保正确安排这些任务 。它反思是否应该先写摘 要 。然⽽, 它决定⾸要任务是阅读通过⾕歌找到的新闻链接的内容。
7. Agent 阅读⽂章内容,然后再次查看待办事项列表 。它考虑添加⼀个新任务来总结所阅读 的内容,但是发现这个任务已经在待办事项列表中, 因此不会重复添加它。
8. Agent 检查待办事项列表, 只剩下⼀项任务:撰写所阅读内容的摘要 。于是, 它执⾏了这 个任务,按照您的要求向您发送了摘要。
总结
AI Agent系统以大型语言模型(LLM)为核心,通过三大关键组件实现复杂任务处理:
-
规划:LLM将任务拆解为子目标(如CoT、思维树方法),并通过反思(如ReAct框架)动态优化决策,类似人类“三思而后行”的推理过程。
-
记忆:分为短期记忆(上下文学习)和长期记忆(外部向量存储),通过记忆流管理经验,结合近期性、重要性和相关性检索信息,提升响应准确性。
-
工具使用:调用外部API(如搜索、计算)扩展能力,如MRKL系统的模块化专家协作或ChatGPT插件机制,弥补模型固有局限。
典型工作流示例:Agent通过规划(搜索新闻→阅读→摘要)、记忆(存储检索结果)和工具(谷歌搜索API)协同完成任务。这类系统通过模仿人类认知机制,实现高效、自适应的问题解决,标志着AI从被动响应迈向主动协作的新阶段。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)