AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AI Agent 介绍
发布日期:2025-01-17 07:44:20 浏览次数: 1561 来源:是海潮音

什么是AI Agent?

Agent 指能自主感知环境并采取行动实现目标的智能体。

基于大语言模型的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等,并可以通过学习或获取知识来提高其性能。

AI Agent = LLM + Memory + Planning + Tool[图片]

Memory

记忆可以被定义为获取、储存、保留以及后来检索信息的过程。

人脑中有几种类型的记忆。

感觉记忆(Sensory Memory)

这是记忆的最早阶段,提供在原始刺激结束后保留感官信息(视觉、听觉等)的印象的能力。感觉记忆通常只持续几秒钟。子类别包括视觉记忆(iconic memory)、回声记忆(echoic memory)和触觉记忆(haptic memory)。

短期记忆(Short-Term Memory, STM)或(Working Memory)

它储存我们当前意识到的信息,以执行复杂的认知任务,如学习和推理。短期记忆被认为有大约7个项目的容量(Miller 1956)并持续20-30秒。

长期记忆(Long-Term Memory, LTM)

长期记忆可以储存信息很长一段时间,从几天到几十年,其储存容量基本上是无限的。LTM有两个子类型:

  • 显性 / 陈述记忆(Explicit / declarative memory):这是对事实和事件的记忆,指的是那些可以被有意识地回忆的记忆,包括情景记忆(事件和经验)和语义记忆(事实和概念)。
  • 隐性 / 程序记忆(Implicit / procedural memory):这种记忆是无意识的,涉及自动执行的技能和例行程序,如骑自行车或在键盘上打字。

将人类的记忆模式mapping到AI Agent:

  • 将感觉记忆视为学习原始输入(包括文本、图像或其他模式)的嵌入表示;
  • 将短期记忆视为在上下文中(prompt)学习。它是短暂且有限的,因为它受到Transformer的上下文窗口长度的限制。
  • 将长期记忆视为代理在查询时可以注意到的外部向量存储,可以通过快速检索访问。

Planning

Planning是整个AI Agent中最核心最关键的部分,Agent可以把大型任务分解为子任务,并规划执行子任务的流程

同时Agent还需要对任务执行的过程进行思考和反思,从而决定是继续执行任务,还是判断任务完结并终止运行。

整个Planning模块包括两个步骤:子任务分解,反思和完善

子任务分解 Task Decomposition

Agent 将大型任务分解为更小、更易于管理的子目标,从而高效处理复杂任务。

主要的子任务分解方式包括:

  • 思维链COT(Chain of thought)
  • COT-SC

一个CoT出现错误的概率比较大,可以让Agent进行发散,尝试通过多种思路来解决问题,然后投票选择出最佳答案

  • 思维树TOT(Tree of thought)

TOT是对思维链CoT的进一步扩展,在思维链的每一步,推理出多个分支,拓扑展开成一棵思维树。使用启发式方法评估每个推理分支对问题解决的贡献。选择搜索算法,使用广度优先搜索(BFS)或深度优先搜索(DFS)等算法来探索思维树,并进行前瞻和回溯。

  • 思维图GOT(Graph of thought)

思维树ToT 的方式也存在一些缺陷,比如需要分解后再整合的问题,可以考虑引入思维图GOT来解决。

  • 规划器LLM+P

规划器LLM+P 原理是依靠外部传统规划器来进行长视野规划,利用规划域定义语言(PDDL)作为中间接口来描述规划问题。在此过程中,LLM先将问题转化为成 "Problem PDDL"形式,然后请求经典规划器根据现有的 "Domain PDDL "生成 PDDL 计划,最后将 PDDL 计划翻译回自然语言。

反思和完善 Self-Reflection

反思和完善机制在Agent 应用中发挥着重要的作用,Agent 通过完善过去的行动决策和纠正以前的错误来不断改进。

尤其是在现实世界的任务中,不可能在规划环节就能做出万无一失的计划和策略,试错是不可避免的,只有通过自我反思和逐步完善,才能一步步逼近最佳结果。

反思和完善机制的实现,主要有以下几种方式:

  • ReAct

ReACT的全称是Reasoning-Action,这种模式是让大模型先进行思考,思考完再进行行动,然后根据行动的结果再进行观察,再进行思考,这样一步一步循环下去。

  • Reflexion

Reflecxion是一个为 Agent 配备了动态记忆和自我反思能力的框架,能够提高 Agent 的推理能力。Reflexion 具有标准的强化学习机制,其奖励模型提供了一个简单的二进制奖励机制,执行空间则遵循 ReAct 中的设置。每次行动,Agent 都会计算一个启发式 ht,并根据自我反思的结果决定环境重置以开始新的试验。

  • Basic Reflection
    • https://langchain-ai.github.io/langgraph/tutorials/reflection/reflection/

其本质是利用左右互搏来实现协同进化。比如设计一个帮助用户完成市场调研报告的Agent系统,其中Generator负责输出,Reflector负责检查,通过两个角色之间不断的协同,来实现整个任务的反思和完善。

  • Chain of Hindsight

Tooling

为AI Agent配备工具API,比如计算器、搜索工具、代码执行器、数据库查询等工具,AI Agent就可以和物理世界交互,来解决更加实际的问题。

Agent使用工具的方式主要有以下几种:

Function Calling

Function Calling是一种实现大型语言模型连接外部工具的机制。通过API调用LLM时,调用方可以描述函数,包括函数的功能描述、请求参数说明、响应参数说明,让LLM根据用户的输入,合适地选择调用哪个函数,同时理解用户的自然语言,并转换为调用函数的请求参数。

TALM & ToolFormer

是对 LLM 进行微调,以学习使用外部工具API。该数据集根据新增的 API 调用注释是否能够提高模型输出的质量而进行扩展。

HuggingGPT = ChatGPT+HuggingFace,

从本质上来说,HuggingGPT是一个使用ChatGPT作为任务规划器的框架,ChatGPT 可根据模型的描述选择 HuggingFace 平台中可用的模型,并根据执行结果总结响应结果。

API-Bank

包含 53 种常用的 API 工具、完整的工具增强的 LLM 工作流程。API 的选择相当多样化,包括搜索引擎、计算器、日历查询、智能家居控制、日程管理、健康数据管理、账户认证工作流程等。由于 API 数量众多,LLM 首先可以访问 API 搜索引擎,找到要调用的 API,然后使用相应的文档进行调用

其中比较重要的是ReAct,接下来介绍下:

ReAct(Reason & Act)

  • REAC T: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS: https://arxiv.org/pdf/2210.03629

作者提出了ReAct,一种将推理和行动与语言模型结合以解决各种语言推理和决策任务的通用范式。ReAct提示LLMs以交错方式生成与任务相关的语言推理轨迹和行动,使模型能够进行动态推理以创建、维护和调整用于行动的高级计划(推理到行动),同时与外部环境(例如维基百科)交互以将额外信息纳入推理(行动到推理)。

ReAct 中迭代使用3个元素:Thought, Action, Observation。其中 Thought, Action 由 LLM 生成,Observation 是执行 Action 后获得的返回结果。

  • Step 1 中,LLM基于 Question 先think(reasoning),然后再决定采取什么行动。这样LLM就会生成 Thought 1 和 Action 1 。执行 Action 1 获得 Observation 1。
  • Step 2 中,LLM基于 Question,Thought 1 ,Action 1 和 Observation 1,汇总所有信息先think(reasoning),然后再决定采取什么行动。这样LLM就会生成 Thought 2 和 Action 2 。执行 Action 2 获得 Observation 2。
  • Step 3 中,LLM基于 Question,Thought 1 ,Action 1 ,Observation 1,Thought 2 ,Action 2 和 Observation 2,汇总所有信息先think(reasoning),然后再决定采取什么行动。这样LLM就会生成 Thought 3 和 Action 3 。执行 Action 3 获得 Observation 3。
  • 以此类推直到 Action 表示结束。

The ReAct prompt template incorporates explicit steps for LLM to think, roughly formatted as:

Thought: ...
Action: ...
Observation: ...
... (Repeated many times)

作者在四个不同基准测试上对ReAct和最先进的基线进行了实证评估:问题回答(HotPotQA)、事实验证(Fever)、基于文本的游戏(ALFWorld)、网页导航(WebShop)。对于HotPotQA和Fever,在模型可以与维基百科API交互的情况下,ReAct在超越普通行动生成模型的同时,可以与思维链推理竞争。

总体而言,最佳方法是ReAct和CoT的结合,允许在推理过程中同时使用内部知识和外部获取的信息。

AI Agent 典型代表

斯坦福小镇

  • Generative Agents: Interactive Simulacra of Human Behavior:https://arxiv.org/abs/2304.03442
  • https://github.com/joonspk-research/generative_agents

GENERATIVE AGENT ARCHITECTURE

Agents感知环境,当前agent所有的感知(完整的经历记录)都被保存在一个名为"记忆流"(memory stream)中。基于代理的感知,系统检索相关的记忆,然后使用这些检索到的行为来决定下一个行为。这些检索到的记忆也被用来形成长期计划,并创造出更高级的反思,这些都被输入到记忆流中以供未来使用。

1. 记忆流(Memory Stream)与检索

记忆流记录了代理(Agent)的所有经历。它是一个内存对象列表,其中每个对象包含自然语言描述,创建时间戳和最近访问时间戳。记忆流的最基本元素是观察(Observation),这是代理直接感知的事件。常见的观察包括代理自己执行的行为,或者代理感知到的其他代理或非代理对象执行的行为(每个Agent都有自己独立的记忆流)。

检索功能以代理的当前情况作为输入,检索出一部分记忆流,以传递给语言模型。 排序打分包括三个部分:

  • 近期性(Recency)为最近访问的记忆对象分配更高的分数,因此刚刚发生的事件或今天早上的事件可能会保留在代理的注意力范围内。在作者的实现中,将近期性视为一个指数衰减函数,衰减的对象是自上次检索记忆以来的沙盒游戏小时数。衰减因子是0.99。
  • 重要性(Importance)通过为代理认为重要的记忆对象分配更高的分数,区分了平凡记忆和核心记忆。例如,一个平凡的事件,如在房间里吃早餐,会产生一个低重要性分数,而与重要的他人分手则会产生一个高分。重要性分数的实现方式有很多种;作者直接使用LLM打分,输出一个整数分数。
  • 相关性(Relevance)为与当前情况相关的记忆对象分配更高的分数。使用常见的向量检索引擎即可。

2. 反思(Reflection)

挑战:仅配备原始观察记忆的代理,往往难以进行概括或推理。

作者引入了第二种类型的记忆,称之为反思(Reflection)。反思是由代理生成的更高级别、更抽象的思考。因为反思也是一种记忆,所以在检索时,它们会与其他观察结果一起被包含在内。反思是周期性生成的;在作者的实现中,当代理感知到的最新事件的重要性评分之和超过一定阈值时,就会生成反思。在实践中,代理大约每天反思两到三次(一日三省吾身)。

3. 计划与响应

像反思一样,计划也被储存在记忆流中(第三种记忆),并被包含在检索过程中。这使得代理能够在决定如何行动时,同时考虑观察、反思和计划。如果需要,代理可能在中途改变他们的计划(即响应,reacting)。

AutoGPT

  • https://github.com/Significant-Gravitas/AutoGPT

AutoGPT 定位类似个人助理,帮助用户完成指定的任务,如调研某个课题。AutoGPT比较强调对外部工具的使用,如搜索引擎、页面浏览等。

GPT-Engineer

  • https://github.com/gpt-engineer-org/gpt-engineer

旨在根据自然语言中指定的任务创建一个完整的代码仓库。GPT-Engineer 被指导去构建的一系列较小的组件,并在需要时要求用户输入以澄清问题。

MetaGPT。

  • https://github.com/geekan/MetaGPT
  • https://www.bilibili.com/video/BV1Ru411V7XL/?vd_source=0534c0954ddd3d4c4bd8113d31975f6a

总结

其他工作

  • agents from aiwaves-cn:https://github.com/aiwaves-cn/agents

  • AutoAgents from LinkSoul-AI:https://github.com/Link-AGI/AutoAgents

AutoAgents 强调自动生成 Agents,它在 MetaGPT 的基础上开发了自动创建 Agent 的 Agent。基于给定的任务自动生成多个agents,然后由这些 agents 来完成任务。

  • ChatDev from OpenBMB:https://github.com/OpenBMB/ChatDev

ChatDev 的思路借鉴自瀑布模型(waterfall model),将开发过程分为四个明确的时间顺序阶段:设计(designing)、编码(coding)、测试(testing)和文档编制(documenting)。每个阶段都会涉及到一组代理人,例如程序员、代码审查者和测试工程师,以促进合作对话并促进流畅的工作流程。聊天链(Chat Chain)充当了一个促进者的角色,将每个阶段细分为原子子任务。

AI Agent Challenges

  • 有限的上下文长度:受限的上下文容量限制了历史信息、详细指令、API调用上下文和响应的包含。系统的设计必须在这种有限的通信带宽下工作,而像自我反思从过去的错误中吸取教训这样的机制将从长或无限的上下文窗口中受益良多。尽管向量存储和检索可以提供对更大知识库的访问,但它们的表示能力不如完全注意力强大。

  • 长期规划和任务分解的挑战:在漫长的历史中进行规划并有效地探索解决方案空间仍然具有挑战性。LLM在面对意外错误时难以调整计划,使其与从试错中学习的人类相比不够稳健。

  • 自然语言接口的可靠性:当前的代理系统依赖自然语言作为LLM和外部组件(如内存和工具)之间的接口。然而,模型输出的可靠性值得怀疑,因为LLM可能会出现格式错误并偶尔表现出叛逆行为(例如拒绝遵循指令)。因此,大部分代理演示代码都集中在解析模型输出上。

AI Agent Type

从工作模式,AI智能体可以分为单Agent、多Agent和混合Agent。

按决策制定方式分类

Reference

  • https://www.madrona.com/the-rise-of-ai-agent-infrastructure/
  • https://lilianweng.github.io/posts/2023-06-23-agent/


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询