learning_notes

学习笔记

View project on GitHub

AI Agent 系统的各种设计模式

提示词链

  • 任务分解:将复杂任务拆解为聚焦步骤序列(又称管道模式)
  • 链式处理:每步使用前步输出作为输入,执行LLM调用或处理逻辑
  • 可靠性提升:显著增强复杂语言交互的可控性和稳定性

路由

  • 路由使 Agent 能够根据条件动态决定工作流中的下一步。
  • 它允许 Agent 处理各种输入并调整其行为,超越线性执行。
  • 路由逻辑可以使用 LLM、基于规则的系统或嵌入相似性实现。

并行化

  • 并行化是一种通过并发执行独立任务来提高效率的模式
  • 在涉及等待外部资源(如 API 调用)的任务中特别有效
  • 采用并发或并行架构会引入显著复杂性和成本,影响设计、调试和系统日志等关键开发环节
  • 并行化有助于减少整体延迟,使 Agent 系统在处理复杂任务时更具响应性
  • 像 LangChain 和 Google ADK 这样的框架提供定义和管理并行执行的内置支持

反思

  • 反思模式的主要优势在于其迭代自我纠正和优化输出的能力,带来显著更高的质量、准确性和复杂指令遵循度
  • 它涉及执行、评估/评审和优化的反馈循环。反思对需要高质量、准确或精细输出的任务至关重要
  • 一个强大的实现是生产者-评审者模型,其中独立 Agent(或提示角色)评估初始输出。这种关注点分离增强客观性,并支持更专业、结构化的反馈
  • 然而,这些优势以增加的延迟和计算成本为代价,同时伴随超出模型上下文窗口或被 API 服务限制的更高风险
  • 此模式使 Agent 能够执行自我纠正并随时间提升性能

工具使用

  • 工具使用(函数调用)允许 Agent 与外部系统交互并访问动态信息。
  • 它涉及定义具有 LLM 可以理解的清晰描述和参数的工具。
  • LLM 决定何时使用工具并生成结构化函数调用。
  • Agent 框架执行实际的工具调用并将结果返回给 LLM。
  • 工具使用对于构建可以执行现实世界操作并提供最新信息的 Agent 至关重要。

规划

  • 规划使 Agent 能够将复杂目标分解为可操作的顺序步骤。
  • 它对于处理多步任务、工作流自动化和导航复杂环境至关重要。
  • LLM 可以通过基于任务描述生成逐步方法来执行规划。
  • 明确提示或设计任务以要求规划步骤会在 Agent 框架中鼓励这种行为。

多 Agent 协作

  • 多 Agent 协作涉及多个 Agent 协同工作以实现共同目标。
  • 此模式利用专业角色、分布式任务和 Agent 间通信。
  • 协作可以采取顺序交接、并行处理、辩论或层次结构等形式。
  • 此模式非常适合需要多样化专业知识或多个不同阶段的复杂问题。

记忆管理

  • 短期记忆(上下文记忆):
  • 长期记忆(持久记忆):数据库、知识图谱或向量数据库中
    • 长期记忆类型:
      • 语义记忆:记住事实 涉及保留特定事实和概念,如用户偏好或领域知识。
      • 情景记忆:记住经历 涉及回忆过去事件或行动。
      • 程序记忆:记住规则 关于如何执行任务的记忆——Agent 的核心指令和行为,通常包含在其系统提示中。
  • 每次与 Agent 交互可视为独特对话线程,Agent 可能需要访问早期数据。
    • Session(会话): 独立聊天线程,记录该特定交互的消息和操作(Events),同时存储与该对话相关的临时数据(State)
    • State(状态)(session.state): 存储在 Session 中的数据,包含仅与当前活动聊天线程相关的信息
    • Memory(记忆): 来自各种过往聊天或外部来源信息的可搜索存储库,作为超出即时对话范围的数据检索资源

学习和适应

  • 关键学习机制:
    • 强化学习:通过奖励(积极结果)和惩罚(消极结果)在交互中学习最优行为,例如训练游戏角色或机器人。
    • 监督学习与无监督学习:分别从带标签示例中学习输入-输出映射,或在未标注数据中发现隐藏模式。
    • 基于记忆的学习:回忆过去经验以调整当前行动,增强决策能力。
    • 在线学习:持续用新数据更新知识,适应动态环境
  • 重要算法:
    • 近端策略优化(PPO):通过小幅、谨慎的策略更新(使用“裁剪”机制避免剧烈变化),稳定地改进智能体在连续动作环境中的决策。
    • 直接偏好优化(DPO):简化大语言模型与人类偏好的对齐过程,直接利用偏好数据更新模型,无需训练复杂的奖励模型。
  • 经验法则:
    • 在动态、不确定或需个性化的环境中构建智能体时,集成学习和适应机制至关重要。

模型上下文协议 (MCP)

  • modelcontextprotocol
  • 工具函数调用和MCP的区别:
    • 工具函数调用:静态绑定(写死)、工具数量少、场景简单、点对点调用、模型的一种能力、如何调用(具体操作)
    • MCP:动态发现(动态注册、自动发现)、工具繁多、跨团队、C/S架构、一种标准化接入协议、如何接入(平台)
  • MCP C/S架构交互流程:
    • 发现:询问MCP服务器可以提供那些工具。
    • 请求制定:需要使用发现的工具之一和必要参数。
    • 客户端通信:MCP 客户端获取 LLM 制定的请求,将其作为标准化调用发送到适当 MCP 服务器。
    • 服务器执行:MCP 服务器接收请求,验证和执行操作。
    • 响应和上下文更新:执行后,MCP 服务器将标准化响应发送回 MCP 客户端。
  • 关键用例:数据库集成、生成媒体编排、外部 API 交互、基于推理的信息提取、物联网设备控制、金融服务自动化

目标设定和监控

  • 目标设定和监控为 Agent 配备目的和跟踪进度的机制。
  • 目标应该是具体的、可衡量的、可实现的、相关的和有时限的(SMART)。
  • 清楚地定义指标和成功标准对于有效监控至关重要。
  • 监控涉及观察 Agent 的行动、环境状态和工具输出。
  • 来自监控的反馈循环允许 Agent 调整、修订计划或升级问题。

异常处理和恢复

  • 异常处理和恢复对于构建强大和可靠的智能体非常重要。
  • 此模式涉及检测错误、优雅地处理错误以及实施恢复策略。
  • 错误检测可能涉及验证工具输出、检查 API 错误代码以及使用超时。
  • 处理策略包括日志记录、重试、回退、优雅降级和通知。
  • 恢复侧重于通过诊断、自我纠正或升级恢复稳定运行。
  • 此模式确保智能体在不可预测的现实世界环境中也能有效运行。

人机协同

  • 人机协同(HITL)将人类智能和判断整合到 AI 工作流中。
  • 它在复杂或高风险场景中对安全性、道德和有效性至关重要。
  • 关键方面包括人类监督、干预、学习反馈和决策增强。
  • 升级策略对于智能体何时交接给人类至关重要。
  • HITL 允许负责任的 AI 部署和持续改进。
  • 人机协同的主要缺点是其固有的可扩展性不足,在准确性和数量之间造成权衡,以及对高技能领域专家进行有效干预的依赖性。
  • 其实施带来了操作挑战,包括需要培训人类操作员进行数据生成,以及通过匿名化敏感信息来解决隐私问题。

知识检索(RAG)

RAG 的工作原理

  • 嵌入(Embeddings):是文本的数值表示形式,其核心思想是在数学空间中捕捉不同文本片段的语义含义和关系。
  • 文本相似度:衡量两段文本相似程度的指标。
  • 语义相似度和距离:纯粹关注文本的含义和上下文,而不仅仅是使用的单词。
  • 文档分块:分块是将大型文档分解为更小、更易于管理的片段或”块”的过程。
  • 向量数据库:是一种专门设计用于高效存储和查询嵌入的专用数据库类型。在文档被分块并转换为嵌入后,这些高维向量被存储在向量数据库中。
  • RAG 的挑战:
    • 系统的有效性还高度依赖于分块和检索过程的质量,检索到不相关的块,可能会引入噪声并混淆 LLM。
    • 存储在专门的数据库中(如向量或图数据库)。
    • 对性能产生明显影响,增加延迟、运营成本和最终提示中使用的 token 数量。
  • 图 RAG(Graph RAG):
    • 利用知识图谱而不是简单的向量数据库进行信息检索。它通过在这个结构化知识库中导航数据实体(节点)之间的明确关系(边)来回答复杂查询。
    • 构建和维护高质量知识图谱所需的显著复杂性、成本和专业知识。
  • Agentic RAG:充当知识的关键守门人和精炼者。引入了一个推理智能体,它主动评估、协调和精炼检索的信息,以确保更准确和可信的最终响应。

关键点

  • 知识检索(RAG)通过允许 LLM 访问外部的、最新的和特定的信息来增强它们。
  • 该过程涉及检索(在知识库中搜索相关片段)和增强(将这些片段添加到 LLM 的提示中)。
  • RAG 帮助 LLM 克服过时训练数据等局限,减少”幻觉”,并实现特定领域知识集成。
  • RAG 允许可归因的答案,因为 LLM 的响应基于检索的来源。
  • GraphRAG 利用知识图谱来理解不同信息片段之间的关系,允许它回答需要从多个来源综合数据的复杂问题。
  • Agentic RAG 超越了简单的信息检索,使用智能体主动推理、验证和精炼外部知识,确保更准确和可靠的答案。
  • 实际应用涵盖企业搜索、客户支持、法律研究和个性化推荐。

智能体间通信(A2A)

主要实体:

  • 用户:发起对智能体的请求。
  • A2A 客户端(客户端 Agent):代表用户请求操作或信息的应用程序或 AI Agent。
  • A2A 服务器(远程 Agent):提供 HTTP 端点处理客户端请求并返回结果的 AI 智能体系统。远程智能体以“不透明”方式运行,意味着客户端无需了解其内部操作细节。

    细节

  • Agent 卡片:通常是 JSON 文件,包括智能体身份、端点 URL 和版本,支持的功能(如流式传输或推送通知)。
  • Agent 发现:标准 URI:Agent 在标准化路径(如 /.well-known/agent.json)。
  • 通信和任务:通信围绕异步任务结构化,每个任务被分配唯一标识符,并通过一系列状态(如已提交、工作中或已完成)移动,此设计支持复杂操作中的并行处理。智能体间通信通过消息进行。
  • 交互机制:
    • 同步请求/响应
    • 异步轮询
    • 流式更新(服务器发送事件 - SSE)
    • 推送通知(Webhook)
  • 安全性:
    • 双向传输层安全(TLS)
    • 全面审计日志
    • Agent 卡片声明
    • 凭据处理

      A2A 与 MCP

  • MCP专注于为智能体提供上下文及其与外部数据和工具的交互,而 A2A 则促进智能体间发现和通信,实现任务委派与协作。

    实际应用和用例

  • 多框架协作:独立 AI 智能体能够通信和协作,无论其底层框架如何。
  • 自动化工作流编排:使智能体通信和协调任务来促进复杂工作流。
  • 动态信息检索:通过通信来检索和交换实时信息。

    关键点

  • Google A2A 协议是一个开放、基于 HTTP 的标准,促进使用不同框架构建的 AI 智能体进行通信和协作。
  • AgentCard 作为智能体的数字标识符,允许其他智能体发现和理解其能力。
  • A2A 提供同步请求-响应交互(使用 tasks/send)和流式更新(使用 tasks/sendSubscribe)以适应不同的通信需求。
  • 该协议支持多轮对话,包括 input-required 状态,允许智能体请求额外信息并在交互期间维护上下文。
  • A2A 鼓励模块化架构,其中专门智能体在不同端口上独立运行,实现系统的可扩展性和分布式部署。
  • Trickle AI 等工具有助于可视化和跟踪 A2A 通信,帮助开发人员监控、调试和优化多智能体系统。
  • 虽然 A2A 是用于管理不同智能体间任务和工作流的高级协议,但模型上下文协议(MCP)为 LLM 提供与外部资源交互的标准化接口。

资源感知优化

  • 资源感知优化至关重要:智能体可以动态管理计算、时间和财务资源。根据实时约束和目标做出关于模型使用和执行路径的决策。
  • 可扩展性的多智能体架构:Google 的 ADK 提供多智能体框架,实现模块化设计。不同的智能体(回答、路由、批评)处理特定任务。
  • 动态、LLM 驱动的路由:路由器智能体根据查询复杂性和预算将查询引导到语言模型(简单查询使用 Gemini Flash,复杂查询使用 Gemini Pro)。这优化了成本和性能。
  • 批评智能体功能:专用批评智能体为自我纠正、性能监控和改进路由逻辑提供反馈,增强系统有效性。
  • 通过反馈和灵活性进行优化:批评的评估能力和模型集成灵活性有助于自适应和自我改进的系统行为。
  • 其他资源感知优化技术:其他方法包括自适应工具使用和选择、上下文修剪和摘要、主动资源预测、多智能体系统中的成本敏感探索、节能部署、并行化和分布式计算感知、学习型资源分配策略、优雅降级和回退机制,以及关键任务的优先级排序。

推理技术

  • 思维链(Chain-of-Thought,CoT)提示词通过模拟逐步思考过程,显著增强了 LLM 的复杂推理能力。
  • 思维树(Tree-of-Thought,ToT)是一种建立在思维链(CoT)基础上的推理技术。它允许 LLM 通过分支到不同的中间步骤来探索多个推理路径,形成树状结构。
  • 自我纠正,也称为自我改进,是智能体推理过程的一个关键方面,特别是在思维链提示词中。它涉及智能体对生成内容和中间思考过程的内部评估。
  • 程序辅助语言模型(Program-Aided Language Models,PALMs)将 LLM 与符号推理能力相结合。这种集成允许 LLM 在问题解决过程中生成和执行代码,例如 Python。
  • ReAct(推理与行动)是一种将思维链(CoT)提示词与智能体通过工具与外部环境交互的能力相结合的范式。
  • CoD(辩论链,Chain of Debates)是微软提出的一种正式 AI 框架,其中多个不同的模型协作和争论以解决问题,超越了单个 AI 的”思维链”。
  • GoD(辩论图,Graph of Debates)是一个高级 Agentic 框架,它将讨论重新构想为动态的、非线性网络,而不是简单的链式结构。

智能体的思考过程

Agent 的”思考”由强大的 LLM 驱动。这个 LLM 生成一系列指导智能体行动的思考。该过程通常遵循思考-行动-观察循环:

  • 思考:Agent 首先生成分解问题、制定计划或分析当前情况的文本思考。这种内部独白使智能体的推理过程透明且可引导。
  • 行动:基于思考,Agent 从预定义的离散选项集中选择一个行动。例如,在问答场景中,行动空间可能包括在线搜索、从特定网页检索信息或提供最终答案。
  • 观察:Agent 然后根据所采取的行动从其环境接收反馈。这可能是网络搜索的结果或网页的内容。

关键点

  • 通过使推理明确,Agent 可以制定透明的、多步骤的计划,这是自主行动和用户信任的基础能力。
  • ReAct 框架为智能体提供了其核心操作循环,使它们能够超越单纯的推理并与外部工具交互,以在环境中动态行动和适应。
  • 推理扩展定律意味着智能体的性能不仅关乎其底层模型大小,还关乎其分配的”思考时间”,允许更审慎和更高质量的自主行动。
  • 思维链(CoT)作为智能体的内部独白,提供了一种通过将复杂目标分解为一系列可管理的行动来制定计划的结构化方法。
  • 思维树和自我纠正赋予智能体关键的审议能力,允许它们评估多个策略、从错误中回溯并在执行前改进自己的计划。
  • 像辩论链(CoD)这样的协作框架标志着从单独智能体到多智能体系统的转变,其中智能体团队可以共同推理以解决更复杂的问题并减少个体偏见。
  • 像 Deep Research 这样的应用程序展示了这些技术如何在智能体中达到高潮,这些智能体能够完全自主地代表用户执行复杂的、长期运行的任务,例如深入调查。
  • 为了构建有效的智能体团队,像 MASS 这样的框架自动化优化各个智能体的指令方式以及它们如何交互,确保整个多智能体系统以最优方式执行。
  • 通过集成这些推理技术,我们构建的智能体不仅是自动化的,而且是真正自主的,能够被信任去规划、行动和解决复杂问题而无需直接监督。

Guardrails/安全模式

  • 防护栏对于通过防止有害、有偏见或离题的响应来构建负责任、符合道德规范和安全的智能体很重要。
  • 它们可以在各个阶段实施,包括输入验证、输出过滤、行为提示词、工具使用限制和外部审核
  • 不同防护栏技术的组合提供了最强大的保护。
  • 防护栏需要持续的监控、评估和改进,以适应不断演变的风险和用户交互。
  • 有效的防护栏对于维护用户信任和保护智能体开发者的声誉至关重要。
  • 构建可靠的、生产级智能体的有效方法是将它们视为复杂软件,应用与传统系统几十年来相同的经过验证的工程最佳实践——如容错、状态管理和健壮测试。

评估和监控

  • 评估智能体超越了传统测试,在真实世界环境中持续测量其有效性、效率以及对要求的遵守。
  • 智能体评估的实际应用包括实时系统中的性能跟踪、用于改进的 A/B 测试、合规审计以及检测行为中的漂移或异常。
  • 基本智能体评估涉及评估响应准确性,而真实世界场景需要更复杂的指标,如延迟监控和 LLM 驱动智能体的 token 使用跟踪。
  • 智能体轨迹(智能体采取的步骤序列)对于评估至关重要,将实际操作与理想的、真实的路径进行比较,以识别错误和低效率。
  • ADK 通过用于单元测试的单个测试文件和用于集成测试的综合评估集文件提供结构化的评估方法,两者都定义了预期的智能体行为。
  • 智能体评估可以通过基于 Web 的 UI 进行交互式测试、使用 pytest 进行 CI/CD 集成的编程方式,或通过命令行界面进行自动化工作流执行。
  • 为了使 AI 在复杂的、高风险的任务中可靠,我们必须从简单的提示词转向精确定义可验证可交付成果和范围的正式”合约”。这种结构化协议允许智能体协商、澄清歧义并迭代验证其自己的工作,将其从不可预测的工具转变为可问责和值得信赖的系统。

优先级排序

  • 优先级排序使 AI 智能体在复杂的多方面环境中有效运作。
  • 智能体根据既定标准(如紧急性、重要性和依赖关系)来评估和排序任务。
  • 动态重新优先级排序允许智能体根据实时变化调整其操作焦点。
  • 优先级排序发生在各个层面,包括总体战略目标和即时战术决策。
  • 有效的优先级排序可提高 AI 智能体效率和操作稳健性。