嘿,大家好!这里是一个专注于AI智能体的频道~

最近这2篇综述有点撞车了,不是纯正的Agent综述,可以了解一下最新的应用测的Agent发展情况!

图片

现实中的Agent系统会面临很多的挑战,常见的有以下几点:

  • 感知模块的探索不足:当前研究中对LLM-based Agent的感知模块探索不够,尤其是在处理代码这类特殊文本输入时,缺乏对树/图结构等高级输入模式的研究。
  • 角色扮演能力的需求:Agent常常需要在不同任务中扮演多种角色,如代码生成器、测试员等,这对Agent的多角色处理能力提出了挑战。
  • 知识检索基础的缺乏:很多场景,缺乏一个权威且公认的、包含丰富相关知识的外部检索库
  • 幻觉问题:如生成不存在的API或错误的代码,这影响了Agent的整体性能。
  • 效率问题:在多Agent协作中,计算资源的需求和通信开销可能会影响协作的效率和实时性。

一个Agent应用框架主要由三个主要的部分:感知、记忆和行动。

图片
  • 感知部分就像是机器人的眼睛和耳朵。它用来接收来自外部世界的各种信息,比如文字、图片或者声音,然后把这些信息转换成机器人能理解的形式。

  • 行动部分就像是机器人的手脚和大脑。它根据接收到的信息做出决策,就像是我们根据看到和听到的东西来决定怎么做一样。同时,机器人还可以根据和外部世界互动得到的反馈来调整和改进自己的决策。

  • 记忆部分则像是机器人的记忆库,它保存了各种各样的知识和经验。这些记忆帮助机器人更好地理解信息和做出决策。记忆部分还可以通过学习来更新,让机器人在未来能做得更好。

  • 最后,多Agent协作。像是一群机器人一起工作,每个机器人都有自己的任务,但它们通过合作来完成更复杂的工作。

图片感知可以处理多种模态的输入,包括文本、视觉(如图像)和听觉(如声音)输入。

其中文本输入可以进一步细分为基于token的输入、基于tree/graph的输入和混合输入。这些不同的输入形式分别关注代码的不同特征,例如语义、结构等。

当然无论是文本、视觉还是听觉输入,感知模块最终都要将接收到的信息转换成适合LLM处理的嵌入格式,为后续的推理和决策制定奠定基础。

记忆模块负责存储能够帮助LLM进行有效推理决策的信息。它包括语义记忆、情景记忆和程序记忆三种类型。

  • 语义记忆通常存在于外部知识库中,如文档、库、API信息等;
  • 情景记忆记录了与当前任务相关的特定情景或经验信息。例如,它可以包括历史消息、代码库中检索到的相关代码;
  • 程序记忆包含了存储在LLM权重中的隐性知识和在Agent代码中明确写出的显性知识。

记忆模块是Agent的大脑,它保存了所有重要的信息和经验,帮助Agent更好地理解问题和做出决策。

图片重头戏,Action。行动模块包括内部行动和外部行动,它们根据LLM的输入做出推理决策,并根据与外部环境互动获得的反馈来优化这些决策。

内部行动,涉及Agent的思考过程,包括推理、检索和学习。

其中推理部分,可以概括为3种形式图片

  • 基于思维链推理(Chain-of-Thought, CoT):通过逐步展开思考过程,帮助LLM深入理解问题,分解复杂任务,并生成高质量的答案。
  • 结构化推理(Structured CoT):将推理过程以类似伪代码的形式呈现,涉及循环、分支等结构。这种方式特别适合于代码生成,因为它可以利用源代码的丰富结构信息。
  • 其他推理形式:包括头脑风暴和树形推理等,这些方法通过生成相关关键词或动态探索和更新推理过程来辅助问题解决。

其中检索部分,为了辅助推理和决策过程,从内部或外部的知识库中检索相关信息。这包括查找文档、代码片段、API信息等,以支持当前的任务。根据召回内容不同,可以概括为以下几个类别:图片

召回分为密集Dense的语义搜索,稀疏Sparse的关键词搜索:图片

learning Action部分,是LLM-based Agent持续进步和适应新挑战的关键。通过有效的学习机制,系统能够不断进化。一般包括从经验中学习、优化内部模型和调整策略,以更好地完成未来的任务。

  • 更新语义记忆:这可能包括新的API知识、编程语言的语法变化或新的算法。
  • 更新程序记忆:通常涉及到模型的微调或持续学习。
  • 优化Agent代码:可能会根据学习到的知识来优化其执行代码,以提高效率和性能。

最后是External Action部分,它使得Agent能够主动地与外部世界进行交互,完成任务,并根据外部反馈进行自我优化。如:通过与人或其他Agent交互,以获取任务需求、澄清问题或报告结果;与各种数字工具和平台(如API服务)进行交互,以执行任务或验证结果。