E AI 评测 企业级质量体系
导航
章节 / 第二篇:理解被评系统

第 8 章:Tool Call、Memory、Workflow 与 Agent 编排

第 8 章:Tool Call、Memory、Workflow 与 Agent 编排

8.1 Agent 的风险经常发生在“会回答”之后

客服 Agent 正确理解了用户要办理部分退款,也选择了退款工具。但它把整单金额填进了部分退款参数,导致工具返回的预估金额错误。最终回答看起来专业,业务结果却是错的。

这类问题不属于普通问答错误。Agent 不只是生成文本,它还会选择工具、读写状态、执行流程、处理异常,甚至影响真实业务系统。

因此,Agent 评测必须从“答案是否正确”扩展到“过程是否安全、稳定、可追踪”。

本章关注四类对象:

  1. Tool Call。
  2. Memory。
  3. Workflow。
  4. Agent 编排。

轨迹级评分会在第 14 章展开,本章先建立组件失效模式和基础字段。

8.2 Tool Call 评测

Tool Call 至少要评五件事。

维度 判断问题
工具选择 是否选择了正确工具
参数生成 参数是否完整、准确、类型正确
Schema 遵循 是否符合工具输入输出协议
权限边界 是否在授权范围内调用
结果使用 是否忠实使用工具结果回答

客服 Agent 的工具调用错误包括:

  • 应调用退款规则工具,却只检索政策文档。
  • 应查询订单状态,却调用物流工具。
  • 订单 ID 与商品 ID 混淆。
  • 未完成身份核验就调用敏感工具。
  • 工具返回失败后仍给出确定回答。

Tool Call 评测要同时覆盖“是否调用”和“调用是否正确”。只统计工具调用率没有意义。

8.3 Tool Call 的副作用与幂等性

有些工具是只读的,例如查询订单状态;有些工具会产生副作用,例如提交退款、修改地址、取消订单。

副作用工具必须更严格评测。

工具类型 风险 评测重点
查询类 泄露隐私、查错对象 权限、参数、结果使用
计算类 金额和规则错误 参数准确、规则版本
提交类 不可逆业务操作 二次确认、幂等性、审计
通知类 错发消息、误导用户 收件人、内容、触发条件

对于提交退款这类工具,Agent 不应仅凭用户一句“帮我退”就执行。它需要身份核验、订单确认、金额确认和用户二次确认。

幂等性也很关键。Agent 反复调用同一提交工具,可能造成重复操作。评测要检查是否有去重、事务和状态保护。

8.3.1 副作用工具必须在可控环境中评测

提交退款、取消订单、修改地址、发送通知这类工具不能直接在生产环境里做离线评测。评测环境至少要满足三项要求。

要求 含义 评测价值
沙箱数据 使用可控的订单、用户、权益和支付状态 避免影响真实用户和财务数据
可回放 同一工具调用可以重复执行并得到可解释结果 支持版本对比和回归验证
可审计 每次调用记录参数、权限、操作者、终态和副作用 支持归因、合规和事故复盘

对于客服 Agent,副作用工具评测不应只检查“工具是否返回成功”,还要检查业务终态。例如退款预提交成功后,订单状态是否仍处于待用户确认,金额是否正确,是否生成了二次确认记录,是否没有触发财务出款。

更稳妥的方式是把副作用工具拆成两层:

  1. 计划层:Agent 生成拟执行动作和参数。
  2. 执行层:业务系统在权限、幂等、审批和确认通过后执行。

评测重点应先落在计划层,确认 Agent 是否生成了正确、安全、可审批的动作;执行层则通过沙箱和业务规则引擎验证终态。

对于代码 Agent 这类执行型系统,Tool Call 的风险性质与客服 Agent 有本质区别。客服 Agent 的工具是查询订单、计算退款,风险集中在"答错"或"参数填错";代码 Agent 的工具是文件读写、Shell 命令执行、测试运行,风险不是"说错了什么"而是"做了什么"——误删源文件、执行危险命令、修改 CI 配置绕过检查。因此,代码 Agent 的 Tool Call 评测重点不是回答正确性,而是副作用审计:每次文件修改必须有 Diff 记录、每条命令必须记录 stdout/stderr、禁止执行白名单外命令、必须支持沙箱回滚。幂等性要求同一修复任务重复执行不应产生叠加破坏。

8.4 Memory 评测

Memory 包括短期状态和长期记忆。

短期状态用于当前会话,例如用户已提供订单号、选择了部分退款、完成了身份验证。

长期记忆用于跨会话信息,例如用户偏好、常用地址、历史问题。但长期记忆带来隐私和污染风险。

Memory 评测关注:

维度 问题
写入正确性 是否把正确事实写入记忆
读取相关性 是否只读取与当前任务相关的信息
状态保持 多轮中关键状态是否保留
状态隔离 不同用户、订单和会话是否隔离
隐私边界 是否写入不应保存的敏感信息
过期机制 记忆是否有有效期和删除机制

客服 Agent 如果把一个用户的退款状态带到另一个用户会话,就是严重 Memory 隔离问题。

Memory 评测最容易被低估。很多团队只检查 Agent 有没有“记住用户说过什么”,却没有检查“应该记什么、不应该记什么、什么时候必须忘记”。对于客服 Agent,记住用户已经完成身份验证有助于减少重复询问;但把身份状态跨订单、跨会话或跨用户复用,就会变成权限风险。记住用户偏好可以提升体验;但记住未脱敏的地址、手机号或投诉细节,可能违反隐私边界。

因此,Memory 的质量不是记得越多越好,而是记得准确、相关、隔离、可过期。评测 Case 应同时包含“应该保留的状态”和“不应保留或不应读取的信息”。这也是为什么 Memory 评测不能只看最终回答,需要结合状态快照和 Trace。

8.5 Workflow 评测

Workflow 是业务流程约束。不同任务对流程自由度要求不同。

类型 特点 示例
固定流程 步骤顺序严格 身份核验后才能查订单
半固定流程 有核心步骤,但允许跳转 售后咨询可先定位问题再选择工具
动态流程 根据环境反馈规划 代码 Agent 调试失败后选择下一步

客服 Agent 的高风险流程通常应更固定。退款、账号、隐私、投诉等场景不能完全依赖模型自由规划。

Workflow 评测要检查:

  • 必要步骤是否执行。
  • 步骤顺序是否正确。
  • 异常分支是否覆盖。
  • 是否触发人工兜底。
  • 终态是否符合业务要求。

流程评测适合用状态检查器和 Trace 检查,而不是只看最终文本。

8.5.1 高风险流程要刚性化

Agent 编排的自由度应随风险等级变化。低风险咨询可以允许模型灵活组织回答;高风险业务动作必须有刚性流程约束。

场景 建议流程自由度 必要约束
普通政策咨询 较高 引用当前政策,不编造承诺
订单状态查询 中等 身份核验后查询,只返回本人订单
部分退款计算 较低 查询订单、校验规则、计算金额、解释依据
提交退款申请 很低 身份核验、订单确认、金额确认、用户二次确认、审计记录
隐私与账号问题 很低 严格权限、必要时转人工
投诉升级 中低 识别情绪和风险,按 SOP 转人工或建单

评测时也要按自由度设置不同标准。对于普通咨询,可以接受多种合格表达;对于提交退款,步骤遗漏就应判定失败,即使最终回答语气自然。

流程刚性化并不意味着放弃智能。它意味着把模型能力放在合适位置:让模型理解用户意图、组织解释和处理复杂语言;让工作流约束身份、权限、金额、审批和副作用。

8.6 Agent 编排失效模式

Agent 编排常见失败包括:

失效模式 说明
计划错误 任务拆解遗漏关键步骤
工具错用 选择工具错误或参数错误
循环调用 重复执行无效步骤
状态丢失 忘记前文关键信息
结果未利用 工具返回正确结果,但回答忽略
异常恢复失败 工具失败后编造或卡住
多 Agent 传播错误 一个 Agent 的错误被其他 Agent 放大

代码 Agent 反复运行同一失败命令,就是循环调用和异常恢复失败。客服 Agent 调用退款工具后没有使用返回的扣费结果,就是结果未利用。

编排失效的危险之处在于,它常常不会表现为语言质量差。Agent 可以语气自然、解释完整,却在过程里漏掉身份核验、调用错误工具、忽略工具返回或重复执行高成本动作。用户看到的是一个“像样的回答”,系统内部发生的是错误流程。

因此,编排评测要特别关注决策点。每个高风险任务都应明确:哪些步骤必须发生,哪些步骤不得发生,哪些异常必须触发兜底,哪些动作需要用户确认。只要这些决策点定义清楚,Trace 评分就不再是泛泛地看“过程是否合理”,而是逐项验证业务约束是否被执行。

8.7 Trace 是 Agent 评测的一等对象

对于 Agent,最终回答只是结果。Trace 才能解释过程。

基础 Trace 应包含:

字段 说明
goal 当前任务目标
state 当前状态
action 模型生成、检索、工具调用、转人工等动作
observation 工具或环境返回
tool_call 工具名称、参数、结果
error 错误和异常
final_state 任务终态
cost Token、工具、沙箱等成本
latency 各步骤耗时

Trace 字段不是为了记录越多越好,而是为了支持评测、归因和复现。

8.7.1 Trace 评分的基础维度

Trace 进入评测后,不能只作为日志附件。它应支持步骤级评分。

维度 判断问题 客服 Agent 示例
必要性 每一步是否服务于任务目标 是否进行了必要的订单查询
顺序性 步骤顺序是否符合业务流程 是否先身份核验再查询订单
参数正确性 动作输入是否准确 退款工具是否使用正确商品 ID
观察利用 是否正确使用环境返回 工具返回不可退时是否停止承诺
异常恢复 失败后是否采取合理策略 工具超时后是否重试或转人工
风险控制 是否在高风险节点触发保护 高金额退款是否进入审批
成本效率 是否存在无效循环和过度调用 是否重复查询同一订单

这些维度可以形成 Trace Rubric。最终答案评分告诉团队“结果怎么样”,Trace 评分告诉团队“过程是否可信”。对于会产生业务动作的 Agent,过程可信本身就是质量要求。

8.8 客服 Agent 案例:参数金额错误

用户说:

我这单买了两个商品,只退耳机,耳机用了 20 元券,积分要扣吗?

Agent 的过程:

  1. 正确识别为部分退款。
  2. 调用退款工具。
  3. 参数中把整单金额填入商品退款金额。
  4. 工具返回预估结果。
  5. Agent 按错误结果回答用户。

最终回答看起来没有幻觉,也有工具依据。但工具参数错了。

评测应给出:

维度 结果
意图识别 通过
工具选择 通过
参数准确性 失败
工具结果使用 表面通过,但基于错误参数
业务终态 失败

这说明 Agent 评测必须拆过程。

8.9 代码 Agent 案例:循环成本

代码 Agent 在修复测试失败时,连续运行同一条失败命令,每次得到同样错误,却没有改变策略。最终它耗费大量时间和 token,仍未解决问题。

这类问题的最终状态是失败,但更重要的过程信号是:

  • 重复运行同一步骤。
  • 没有从错误输出中提取新假设。
  • 没有切换诊断路径。
  • 成本和延迟失控。

这说明执行型 Agent 评测要包含循环检测、异常恢复和成本控制。

8.10 交付物一:Tool / Memory / Workflow 组件评测清单

组件 评测项
Tool 工具选择、参数准确、Schema、权限、幂等、结果使用
Memory 写入正确、读取相关、状态保持、隔离、隐私、有效期
Workflow 必要步骤、步骤顺序、异常分支、终态、人工兜底
Planner 任务拆解、步骤必要性、风险识别
Executor 动作执行、错误处理、重试策略
Multi-Agent 角色边界、信息传递、错误传播

这张清单适合在 Agent 评测方案设计阶段使用。

8.11 交付物二:Agent Trace 基础字段表

字段 类型 说明
trace_id string 轨迹唯一标识
case_id string 关联评测样本
goal string 任务目标
step_id string 步骤编号
state_before object 步骤前状态
action_type enum LLM / retrieve / tool / human / system
action_input object 动作输入
action_output object 动作输出
observation object 环境或工具返回
state_after object 步骤后状态
error object 异常信息
cost object Token、工具、沙箱成本
latency_ms number 耗时
final_state object 任务终态

后续轨迹级评分、归因和回放都建立在这些字段上。

8.12 常见误区

8.12.1 只看工具调用率

工具调用率高不代表质量高。关键是是否该调用、参数是否正确、结果是否被正确使用。

8.12.2 让模型自由处理高风险流程

退款、隐私和账号问题需要流程约束,不能完全依赖自由规划。

8.12.3 记录 Trace 但不用于评测

Trace 不是日志归档。它要进入过程评分、根因归因和回归验证。

8.12.4 忽略成本和循环

Agent 能最终完成任务,不代表过程可接受。无效循环和过度工具调用会让系统不可用。

8.13 本章小结

Agent 评测必须覆盖 Tool Call、Memory、Workflow 和编排过程。

客服 Agent 的风险可能发生在工具选择、参数构造、状态保持、流程顺序、异常恢复和结果使用中。最终答案正确与否只是一个维度。

本章建立了组件级失效模式和 Trace 基础字段。后续章节会基于这些对象进一步展开样本设计、轨迹评分和平台化执行。

现在我们理解了被评对象,从下一章开始进入评测设计环节——如何从模糊的业务目标,一步步拆解到可执行的指标树。