ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0.5em 1em;color: rgb(63, 63, 63);text-shadow: rgba(0, 0, 0, 0.1) 2px 2px 4px;">LLM Agent 概述
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">当您遇到没有简单答案的问题时,您通常需要遵循几个步骤,仔细思考并记住您已经尝试过的内容。LLM代理正是为语言模型应用程序中的这些情况而设计的。它们结合了全面的数据分析、战略规划、数据检索以及从过去的行动中学习以解决复杂问题的能力。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在本文中,我们将探讨什么是LLM代理、它们的好处、能力、实际示例以及他们面临的挑战。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;color: rgb(63, 63, 63);"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 0.1em auto 0.5em;border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 8px;" title="null"/> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0.3em 1em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px;"> ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">什么是LLM Agent?
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">LLM Agent 是高级 AI 系统,旨在创建需要顺序推理的复杂文本。他们可以提前思考,记住过去的对话,并使用不同的工具根据所需的情况和风格调整他们的回答。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">现在,考虑一个详细的场景:
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">根据新的数据隐私法,公司面临的常见法律挑战是什么,法院如何解决这些问题?这个问题比仅仅查找事实更深入。这是关于了解新规则,它们如何影响不同的公司,并了解法院对这一切的看法。一个简单的 RAG 系统可以提取相关的法律和案例,但它缺乏将这些法律与实际业务情况联系起来或深入分析法院判决的能力。
在这种情况下,当项目需要顺序推理、计划和记忆时,LLM Agent 就会发挥作用。
对于这个问题,Agent 可以将其任务分解为多个子任务,如下所示。
• 第一个子任务可能是访问法律数据库以检索最新的法律法规。 • 另一个子任务可以是总结法律文档并根据观察到的模式预测未来趋势。 要完成这些子任务,Agent 需要一个结构化的计划LLM、一个可靠的内存来跟踪进度,以及访问必要的工具。这些组件构成了LLM Agent 工作流程的支柱。
LLM Agent组件 LLM代理通常由四个部分组成:
Agent/brain 代理/大脑 LLM Agent 的核心是大语言模型,它根据经过训练的大量数据来处理和理解语言。
使用LLM Agent 时,首先要为其提供特定 Prompt。这个 Prompt 至关重要——它指导 LLM 如何响应、使用什么工具以及在交互过程中应该实现的目标。这就像在旅行前给导航员指路一样。
此外,您还可以使用特定角色自定义代理。这意味着为代理设置某些特征和专业知识,使其更适合特定任务或交互。这是关于调整代理以感觉适合情况的方式执行任务。比如历史专家、法律专家、经济专家等等。
从本质上讲,LLM Agent 的核心是将高级处理能力与可自定义功能相结合,以有效处理和适应各种任务和交互。
Memory 记忆 Agent 的LLM Memory 通过记录以前完成的工作来帮助他们处理复杂的LLM任务。内存有两种主要类型:
• **短期记忆:**这就像 agent’s 的记事本,它可以在对话中快速写下重要细节。它跟踪正在进行的讨论,帮助模型对直接环境做出相关响应。然而,这种记忆是暂时的,一旦手头的任务完成,就会清除。 • **长期记忆:**将其视为 agent’s 的日记,存储数周甚至数月过去互动的见解和信息。这不仅仅是关于保存数据;它是关于理解模式、从以前的任务中学习并调用这些信息以在未来的交互中做出更好的决策。 通过混合这两种类型的记忆,该模型可以跟上当前的对话,并利用丰富的交互历史记录。这意味着它可以提供更有针对性的响应,并随着时间的推移记住用户的偏好,使每次对话都感觉更加紧密和相关。从本质上讲,代理正在建立一种理解,这有助于它在每次互动中更好地为您服务。
Planning 规划 通过规划,LLM Agent 可以推理,将复杂的任务分解成更小、更易于管理的部分,并为每个部分制定具体的计划。随着任务的发展,代理还可以反思和调整他们的计划,确保他们与现实世界的情况保持相关性。这种适应性是成功完成任务的关键。
规划通常包括两个主要阶段:计划制定和计划反思。
计划制定阶段,Agent 将大型任务分解为较小的子任务,如下是几种拆分的方法:
• 一些任务分解方法建议一次性创建一个详细的计划,然后逐步遵循它。 • 思维链 (CoT) 方法,推荐了一种更具适应性的策略,让智能体逐个处理子任务,从而提供更大的灵活性。 • 思路(ToT)树是另一种通过探索解决问题的不同途径来进一步发展 CoT 技术的方法。它将问题分为几个步骤,在每个步骤中产生多个想法,并像树上的树枝一样排列它们。 制定计划后,代理审查和评估其有效性非常重要。LLM基于智能体的智能体使用内部反馈机制,利用现有模型来改进其策略。他们还与人类互动,根据人类的反馈和偏好调整他们的计划。代理还可以从他们的真实和虚拟环境中收集见解,使用结果和观察来进一步完善他们的计划。
在规划中纳入反馈的两种有效方法是ReAct[1] 和Reflexion[2] 。
Tools use 工具使用 这里的工具是帮助LLM Agent 与外部环境连接以执行某些任务的各种资源。这些任务可能包括从数据库中提取信息、查询、编码以及代理运行所需的任何其他内容。LLM当代理使用这些工具时,它会遵循特定的工作流程来执行任务、收集观察结果或收集完成子任务和满足用户请求所需的信息。
以下是不同系统如何集成这些工具的一些示例:
•MRKL[3] (模块化推理、知识和语言):该系统使用一系列专家模块,从神经网络到计算器或天气 API 等简单工具。main LLM 充当 router,根据任务将查询定向到相应的 expert 模块。 •Toolformer[4] 和TALM(工具增强语言模型):[5] 这些模型经过专门微调,可以有效地与外部 API 交互。例如,该模型可以经过训练,使用金融 API 来分析股票市场趋势或预测货币波动,从而直接向用户提供实时金融洞察。 •HuggingGPT:[6] 该框架使用 ChatGPT 来管理任务,方法是选择 HuggingFace 平台上可用的最佳模型来处理特定请求,然后总结结果。 •API-Bank[7] :一项基准测试,用于测试LLMs使用 53 个常用 API 处理日程安排、健康数据管理或智能家居控制等任务的能力。 LLM代理框架 让我们看一下一些值得注意LLM的代理[8] 和框架:
•Langchain[9] - 用于开发 LLM-powered 应用程序的框架,可简化LLM应用程序生命周期。 •Llama Index[10] :一个数据框架,通过数据连接器和结构、高级检索交互和集成功能简化LLM应用程序的创建。 •Haystack[11] - 一个端到端的 NLP 框架,使您能够构建 NLP 应用程序。 •Embedchain[12] - 为您的数据集创建类似 ChatGPT 的机器人的框架。 •MindSearch[13] :一种新的 AI 搜索引擎框架,其工作方式类似于Perplexity.ai Pro[14] 。您可以使用 GPT 和 Claude 等专有LLMs模型或InternLM2.5-7b-chat[15] 等开源模型将其设置为您自己的搜索引擎。它旨在浏览数百个网页来回答任何问题,提供详细的回答并展示它如何找到这些答案。 •AgentQ[16] :帮助创建可以规划、适应和自我纠正的自主 Web 代理。它使用直接偏好优化 (DPO)[17] 算法集成了引导式 Monte Carlo 树搜索 (MCTS)、AI 自我批评和RLHF[18] 。 •Nvidia NIM 代理蓝图[19] :适用于需要构建和部署自定义 GenAI 应用程序的企业开发人员的代理。 •Bee 代理框架[20] :IBM 的一个开源框架,用于大规模构建、部署和服务大型代理工作流。IBM 对 Bee 的目标是使开发人员能够采用最新的开源和专有模型,同时对当前代理实现进行最少的更改。 LLM代理挑战 虽然LLM代理非常有用,但它们确实面临着我们需要考虑的几个挑战:
• **有限的上下文:**LLM代理一次只能跟踪有限数量的信息。这意味着他们可能不记得谈话中早些时候的重要细节或错过了关键指示。尽管 vector stores(向量数据库) 等技术通过提供对更多信息的访问来提供帮助,但它们无法完全解决这个问题。 • **长期规划的困难:**LLM代理人很难制定跨长期的计划。当意外问题出现时,他们往往难以适应,与人类解决问题的方式相比,这可能会使他们不那么灵活。 •不一致的输出 :由于LLM代理依靠自然语言与其他工具和数据库交互,因此它们有时会产生不可靠的输出。他们可能会犯格式错误或未正确遵循说明,这可能会导致他们执行的任务出错。 • **适应特定角色:**LLM代理需要能够根据手头的任务处理不同的角色。然而,对他们进行微调以理解和执行不常见的角色或与不同的人类价值观保持一致是一项复杂的挑战。最新的 MOE 模型可能就比较好解决这个问题。 • **Prompt依赖性:**LLM agent根据提示词进行操作,但这些提示需要非常精确。即使是很小的更改也可能导致大错误,因此创建和优化这些提示可能是一个微妙的过程。这就会出现失之毫厘谬之千里的问题。 • **管理知识:**保持LLM Agent的知识准确和公正是很棘手的。他们必须拥有正确的信息才能做出明智的决定,但太多不相关的信息会导致他们得出错误的结论或根据过时的事实采取行动