AI 学习笔记系列的第七篇,介绍 Agent 相关的基本概念,包括 Agent 的定义、推理与行动、工具调用、记忆以及架构设计范式和评估方法。

智能体(Agent)

当模型不再只负责生成文本,而是被放入一个能够与外界交互的系统中时,这个系统就可以称为 Agent。 自动驾驶汽车、游戏 AI、聊天机器人、机器人等,都是 Agent 的例子。

历史上的 Agent

Agent 并不一定要基于 LLM。 以语言类 Agent 为例,历史上就有一些典型系统:

  • 纯文本交互:ELIZA
  • 可调用外部服务的语音助手:Siri / Alexa
  • 机器人控制:SayCan

这些系统通常更接近反射式规则驱动的行为模式,而不是以显式推理为核心。

备注:模型能力和系统能力很容易混淆。很多看起来很强的 Agent,强的其实是系统编排能力——也就是如何把提示词、工具、检索和流程组合成一个稳定可用的系统,而不只是模型本身。

ReAct

LLM 当然也可以作为 Agent 的核心组件,既能进行推理(如 CoT),也能触发行动(如检索、调用工具、访问环境等)。

推理(Reasoning,更新信念)+ 行动(Acting,与世界交互)= ReAct

如果把推理本身也视为一种可选动作,那么系统既可以按从推理到行动再到推理的方式交替运行,也可以让模型在每一步自由选择下一种动作。 ReAct 是 Agent 的一个重要设计范式,许多后续方法都可视为在它基础上的延伸。

经典的 ReAct 框架通常不依赖额外训练,而主要通过 prompt 来组织推理与行动。

备注:不需要额外训练并不意味着零成本;提示词设计、工具选择和系统编排,依然会显著影响最终效果。

Agent 相关概念

进一步地,我们可以把一个 LLM 放入系统中,也可以让多个 LLM 协作形成 Agent。 例如,AutoGen 强调多 Agent 之间的对话协作,DyLAN 则更关注多模型之间的策略选择。

Memory(记忆,见后文)常是 Agent 的重要组成部分,但并不是定义 Agent 的必要条件。

另外,多模态(multi-modal)Agent 和 具身(embodied)Agent 也是两个重要方向:

  • 多模态 Agent:可处理多种输入形式,如文本、图像、语音等
  • 具身 Agent:拥有物理实体,能够在真实环境中感知和行动,例如机器人或无人机

在评估方面,传统 NLP 基准往往不足以衡量 Agent,因为 Agent 需要在更接近真实世界的环境中持续决策和交互。 因此,人们提出了新的 基准(benchmarks),有时还会配合模拟器来测试 Agent 的主动交互能力。 例如,可以使用 WebArenaSWE-BenchPrivacyLens 等基准来衡量 Agent 的进展。

此外,Agent Zoo 是一个汇集各类 Agent 方案的资源库,涵盖不同类型和应用场景。它有助于研究者和开发者了解已有设计,并从中获得灵感。 从这个角度看,LLM 更像是 Agent 系统中的一个组件,而不是 Agent 的全部。

推理(Reasoning)

在不同语境下,推理可以有不同含义:

  • 对人类而言,推理是一种心理过程
  • 对语言模型而言,推理通常体现为生成主要输出之前的中间生成,即那些不直接展示给用户的中间文本
  • 对 Agent 而言,推理还可以被视为一种内部动作,用来更新状态、信念或后续决策

更一般地说,推理是模型在生成主要输出之前所进行的思考过程。

推理方法

目前与推理相关的方法,可以拆成以下三类:

  • 推理范式:指模型如何组织推理过程本身
    • CoT(Chain-of-Thought):在 prompt 中引导模型显式生成中间推理步骤
    • 类比推理(Analogical Reasoning):通过引入相似问题或类比关系来辅助当前任务的推理
    • Tree of Thoughts:将推理过程组织为树状搜索,在多个候选思路之间进行探索、评估、回溯与选择
    • 规划(Planning):在推理过程中显式引入更高层次的任务分解与步骤安排,以指导后续推理和行动
  • 推理增强策略:指在已有推理过程中,提升稳定性、质量或纠错能力的方法
    • 自一致性 + CoT:对多条推理路径进行采样,并对最终结果进行投票或聚合,以提高答案稳定性
    • Reflexion:让模型根据历史失败经验或外部反馈生成反思,并将这些反思作为后续决策的上下文
  • 推理支撑机制 / 系统化方法:指为推理提供额外上下文、结构或优化能力的机制
    • 记忆机制(Memory):通过短期或长期记忆存储与检索信息,为推理提供额外上下文
      • 短期记忆:例如更新当前 prompt 或上下文窗口中的内容
      • 长期记忆:例如将信息写入外部数据库、向量库或文档系统,并在后续任务中检索使用
    • DSPy(Declarative Self-improving Python):一种以声明式方式构建 LM 系统的框架,可将提示、检索、工具调用等组织为结构化程序,并通过编译与优化提升整体效果

其中,CoT 是最早、也最具代表性的方法之一,许多后续方法都可以看作是在它基础上的扩展。 例如,自一致性是在 CoT 基础上对多条推理路径进行聚合,Tree of Thoughts 则进一步把线性推理扩展为带搜索的树状推理。

备注:这三类内容并不完全处于同一层级:前一类更偏推理过程本身,第二类更偏推理增强策略,第三类则更接近支撑推理的机制或系统化方法。

行动(Acting)

对于 Agent 而言,行动指的是模型除了生成 token 之外,还会触发的其他过程,即那些能够对外部环境、系统状态或工具调用产生影响的操作。

行动方式

常见的行动方式包括:

  • RAG:可视为一种从外部世界获取信息的行动
  • 工具调用:LLM 可通过输出特殊格式来调用工具
  • 从已有数据中学习工具使用模式:例如在训练或示例数据中寻找工具调用痕迹
  • Web 交互:可通过强化学习等方法训练
  • 代码执行或代码生成:例如 OpenHands
  • 计算机操作:例如 Anthropic 的 computer use 特性

其中,RAG 是最简单、也最常见的一类行动示例(RAG 的具体内容可以参考后续文章)。 对于一些结构清晰、接口简单的工具,例如计算器或搜索引擎,模型往往只需通过合适的 prompt 设计,就能获得不错的调用效果。 而对于更复杂的外部交互,例如操作整台电脑、在网页环境中执行多步任务等,目前仍有大量研究在进行中。

系统编排框架(Orchestration Frameworks)

除了单次推理或行动本身,Agent 往往还需要一个更高层的系统来组织多步流程、状态流转、工具调用,以及多 Agent 协作,这时就会用到系统编排框架。

我们可以按系统编排框架的主要职责来分类:

  • 通用应用编排框架:负责把模型、提示词、工具、检索、记忆和流程组织成完整应用。代表例子有 LangChain。它更接近应用层的通用编排框架,而不是单个由模型直接调用的工具。
  • 底层 Agent / Workflow 运行时:强调执行流控制、状态管理、循环、持久化和长期运行。代表例子是 LangGraph。它通过图结构来构建有状态长期运行的 Agent 与工作流,适合需要精细控制执行过程的场景。
  • 知识增强与检索框架:强调外部数据接入、文档处理、索引、检索与 RAG,并在此基础上支持 Agent 构建。代表例子是 LlamaIndex。它最初以文档检索和 RAG 能力著称,但现在也支持工作流与 Agent 系统。
  • 多 Agent 协作框架:主要关注多个 Agent 如何分工、通信与协同完成任务。例如,AutoGen 强调基于对话的多 Agent 协作。CrewAI 则更强调角色分工、任务委派与流程组织,并进一步支持较复杂的工程化工作流。
  • 平台化开发与部署系统:不仅提供编排能力,还集成模型管理、知识库、工作流、可观测性和部署能力。代表例子是 Dify。它更适合看作一个面向 LLM 应用和 Agentic Workflow 的开发与部署平台,而不只是单纯的代码框架。

这些类别的边界并不绝对。 比如 LlamaIndex 也支持 workflow 和 agent,LangChain 也能扩展到多 Agent 场景,Dify 也提供编排能力。 更准确地说,它们的区别主要在于默认重心不同,而不是能力彼此互斥。与其把它们机械地并列,不如把它们看成位于不同抽象层级、承担不同职责的 Agent 基础设施。

备注:Workflow 指预先定义好的执行流程,步骤和路径通常由开发者明确规定。Agent 指模型不仅负责生成内容,还负责根据目标和环境决定下一步行动。Agentic Workflow 则介于二者之间:整体流程由系统预先组织,但局部步骤允许模型自主决策、调用工具和调整策略。因此,Workflow 强调流程控制,Agent 强调自主决策,而 Agentic Workflow 强调在可控框架中引入 Agent 式能力。

记忆(Memory)

在 Agent 场景下,记忆通常也与推理紧密相关。 从时间尺度上看,记忆可以分为短期记忆长期记忆。 记忆的构建、维护与有效使用,至今仍然是 Agent 研究中的一个难点。

短期记忆(Short-term Memory)

短期记忆指只在当前任务或当前上下文中起作用的记忆。 它通常直接存在于模型当前可访问的上下文中,例如 prompt、对话历史、scratchpad 或中间状态。

备注:Scratchpad 是 Agent 在完成任务时使用的内部草稿区,用来暂存中间状态、推理步骤和执行进度。

短期记忆有如下特点:

  • 生命周期较长,可以跨任务、跨会话存在
  • 适合保存稳定信息、经验总结、历史偏好和可复用知识
  • 通常需要显式存储与显式检索

更新短期记忆的常见方式包括:

  • 将新的用户输入追加到上下文中
  • 将中间推理结果写入 scratchpad
  • 将当前任务拆解结果、子目标、工具调用结果回填到 prompt
  • 对过长上下文做摘要,再把摘要作为新的上下文保留

备注:短期记忆的更新,本质上是更新当前 prompt 或当前运行状态。

长期记忆(Long-term Memory)

长期记忆指能够在当前任务结束后仍然保存,并在未来任务中再次被检索和使用的信息。 它通常不会只放在当前 prompt 里,而是写入某种外部存储中,例如数据库、文档库、向量库或用户画像系统。

长期记忆的特点如下:

  • 生命周期较长,可以跨任务、跨会话存在
  • 适合保存稳定信息、经验总结、历史偏好和可复用知识
  • 通常需要显式存储与显式检索

更新长期记忆的常见方式包括:

  • 将新的事实写入数据库或文档系统
  • 将文本编码后写入向量库,供后续语义检索
  • 将历史任务总结整理成经验条目
  • 更新用户偏好、工具使用记录或环境状态表

备注:长期记忆的更新,本质上是更新外部存储,而不只是更新当前 prompt。

工具调用(Tool Calling)

在 Agent 系统中,工具调用指的是:模型在生成文本之外,还能够触发某种外部能力,例如调用搜索、计算器、数据库、代码执行器、浏览器或其他 API。

一个典型的工具调用过程包括以下几步(工具调用不是模型自己去执行了代码):

  1. 模型判断当前任务是否需要使用工具
  2. 模型选择合适的工具
  3. 模型生成结构化参数
  4. 外部系统实际执行工具调用
  5. 系统将工具返回结果再交给模型
  6. 模型基于结果生成最终回答

备注:Function Calling 也被翻译为“工具调用”,但它其实是 Tool Calling 的一种常见实现方式:开发者将外部工具定义为带有名称和参数的函数接口,模型负责选择函数并生成参数,再由外部系统实际执行。这两在实践中经常被混用。

关于工具调用的进一步探讨,会在后续文章中介绍 MCP 相关概念时展开。

Agent 架构设计范式

除了上文的 ReAct 以外,还有不少其他的 Agent 架构设计范式,这里只介绍最常见的几个。

  • ReAct:让模型在推理与行动之间交替进行,也就是一边思考下一步该做什么,一边调用工具或与环境交互。这种方式不预先要求完整规划,而是在每一步根据当前状态动态决定后续动作,因此具有较强的灵活性和适应性。它通常比固定流程更适合开放环境中的任务,但也可能因为缺乏全局规划而在长链条任务中出现局部最优或步骤漂移。
  • Plan-and-Execute:先由一个规划模块生成较完整的任务计划,再由执行模块按计划逐步完成。这种方式把高层规划和低层执行分开,通常比纯 ReAct 更适合长链条、长时程任务,但代价是系统更复杂,也更依赖计划质量。
  • Reflexion:先生成初稿或初步动作,再由系统对结果进行自我评估、反思、纠错,然后进入下一轮迭代。这类范式强调从生成到评估再到修正的闭环,适合代码、推理、写作等可反复改进的任务。Reflexion 的核心就是把失败经验转成自然语言反思,并作为后续尝试的上下文。

观测(Observability)

我们想要知道 Agent 在运行过程中发生了什么、哪里出了问题,以及为什么会出问题,这时就需要观测。

对 Agent 来说,仅看最终输出通常不够,因为一次任务往往包含多轮模型调用、工具调用、检索、状态更新、重试与异常处理。 因此,观测的重点通常不只是记录结果,还要尽可能还原完整执行过程。

常见的观测内容包括:

  • Trace / Run:一次任务执行的完整链路
  • 工具调用记录:调用了哪些工具、参数是什么、返回了什么
  • 模型调用信息:使用了哪个模型、输入输出长度、延迟、成本
  • 状态流转:中间状态如何变化,是否发生重试、回滚或分支
  • 错误与异常:超时、失败、空结果、幻觉、调用错误
  • 系统指标:吞吐量、成功率、时延、资源消耗

LangSmithLangfuse 是目前比较常见的 LLM / Agent 观测平台,提供从 trace、工具调用、模型调用到状态流转的全链路可视化与分析能力。 前者是 LangChain / LangGraph 生态中的官方平台,后者则是一个开源方案。

Prometheus 是一个开源的监控与告警系统,核心能力是采集和存储时间序列指标,并通过 PromQL(一种专门的查询语言)进行查询和告警。

Grafana 是一个常与 Prometheus 配合使用的可观测性可视化与告警平台,常用于构建仪表盘、查看指标与配置告警。

OpenTelemetry(OTel)是一个厂商中立的开源可观测性框架 / 标准,提供统一的 API、SDK 与数据模型来采集、处理和导出 Traces、Metrics、Logs,并支持多种后端系统。

实际工程里,常见做法是分层组合:用 LangSmith / Langfuse 看 Agent 级执行细节,用 Prometheus 结合 Grafana 看服务级健康状态和告警。 如果系统已经接入标准可观测栈,也可以通过 OpenTelemetry 统一采集遥测数据,再导出到相应的观测系统。

Traces、Metrics、Logs 是三类最基础的观测信号。 Trace 用来看一次请求或任务的完整执行链路,Metric 用来看系统层面的数值指标,Log 用来记录离散事件和具体错误上下文。 对 Agent 来说,Trace 往往最能反映这次任务是怎么一步步执行的,而 Metrics 和 Logs 则更适合补充系统健康状况与异常细节。

Collector 是负责接收、处理和导出这些观测数据的中间层。 如果使用 OpenTelemetry,通常会用 OpenTelemetry Collector 作为统一采集与转发组件。 如果在 Grafana 生态中,也常用 Grafana Alloy 作为这一层,它本质上是一个兼容 OpenTelemetry 与 Prometheus 的 collector。

评估(Evaluation)

和传统 NLP 任务相比,Agent 的评估对象不只是最终答案,还包括任务是否真正完成、是否满足约束、是否正确使用工具、执行路径是否高效,以及输出是否稳定、安全、可复现。 因此,Agent 的评估通常既要看结果质量,也要看执行过程。

现在常见的评估方式包括:

  • 离线评测(Offline Evaluation):基于固定数据集或测试集进行评测
  • 在线评测(Online Evaluation):在真实或近真实流量中持续观测系统表现
  • 人工评估(Human Evaluation):由人工对输出质量、可用性、安全性等进行判断
  • 规则评估(Rule-based Evaluation):用显式规则检查格式、约束、结构或工具调用是否符合要求
  • LLM-as-a-judge:使用另一个 LLM 作为评审器,对结果质量进行打分或比较(例如 DeepEval 提供的 G-Eval 就属于这一类)

常见的评估框架 / 平台包括:

  • Ragas:一个面向 RAG 与 agentic applications 的开源评估框架,强调评估指标、测试集生成和系统化评测流程,尤其适合知识增强型应用
  • DeepEval:一个开源 LLM 评估框架,强调 test cases、metrics、unit testing 和系统化评估;也提供面向 Agent 的指标,例如 tool correctness
  • TruLens:同时支持 tracingevaluation,强调把评估直接对齐到应用执行流,可用于评估 RAG、Agent 及其中间环节
  • Braintrust:更偏向持续化、工程化评估的平台,强调把生产 traces 转成 evals,并通过 CI/CD 和质量门禁来做回归测试与持续改进
  • LangSmith:除了 tracing 之外,也提供 datasets、evaluators、evaluation workflow,适合在 Agent 开发过程中持续比较 prompt、模型和系统版本
  • Phoenix / Arize:同时覆盖观测与评估,常用于分析输出质量、groundedness、相关性和系统版本变化带来的影响
  • Confident AI:围绕 DeepEval 的团队协作与云平台能力,补充了数据集管理、实验管理、监控与评估工作流
  • Patronus AI:更偏企业化的 AI evaluation / optimization 平台,常用于测试 prompt、检测 hallucination、跟踪实验和线上质量

常见的评估维度包括:

  • 结果质量
    • 正确性(Correctness)
    • 相关性(Relevance)
    • 事实一致性 / 忠实性(Groundedness / Faithfulness)
    • 完整性(Completeness)
  • 任务表现
    • 任务完成率(Task Success Rate / Task Completion Rate)
    • 约束满足(Constraint Satisfaction)
    • 工具使用正确性(Tool Correctness / Tool Use Correctness)
    • 执行效率(Execution Efficiency)
  • 系统性质
    • 稳定性(Stability)
    • 成本(Cost)
    • 效率 / 延迟(Efficiency / Latency)
    • 安全性(Safety)
    • 回归退化(Regression / Regression Detection)