真实面经题目 · 原创解析

业务 Agent 的评测流程应该怎么设计?如果工具被多调用但不影响最终结果,应该用哪些指标描述冗余工具调用?

这题考业务 Agent 评测,不是简单统计工具调用次数。关键是判断某次工具调用是否带来新增信息、状态推进或风险降低,再用 trace、反事实回放和人工标注校准冗余工具调用指标。

出现于:字节跳动 · 后端开发

60 秒回答模板

我会把业务 Agent 评测拆成任务结果质量和执行轨迹质量两层。结果层看任务是否完成、答案是否正确、引用是否可靠、用户是否满意;轨迹层看规划步骤、工具选择、参数生成、工具结果消费、重试和停止条件。针对“tools 被多调用但不影响最终结果”,不能直接说结果对就不扣分,因为冗余调用会增加延迟、成本、限流风险和外部副作用。更合理的是记录完整 trace,判断每次调用相对已有上下文有没有新增事实、是否改变后续决策、是否被最终答案或后续工具消费、是否属于高风险校验。指标可以包括冗余调用率、无信息增益调用率、重复参数调用率、未消费工具结果率、单位任务工具成本、P95 延迟增量、反事实删减后质量变化,以及误杀必要校验调用的比例。最后把评估结果反馈到 planner、tool executor 和 prompt:合并等价查询、复用缓存结果、设置调用预算、对高成本工具做二次确认,但保留必要的安全校验。

考点 边际收益
难度 真实面经题
回答目标 展示你能把 Agent 评测做成基于 trace 的质量、成本和风险分析,而不是简单统计调用次数。

深入解析

01

先定义冗余工具调用

冗余不是“多调了一次工具”,而是这次调用没有为任务带来必要边际收益。重复搜索同一关键词、重复读取同一资源、参数等价查询、输出未被后续消费,都可能是冗余;但如果第二次调用用于验证高风险事实、刷新易变状态、补齐权限上下文,即使结果相同也不能简单判冗余。

02

评测必须依赖完整 trace

需要记录用户意图、Agent 计划、每次工具调用的名称、参数、时间、返回摘要、调用前后上下文 diff、后续是否引用该结果、最终答案质量和用户反馈。只有知道调用前 Agent 已经知道什么、调用后路径是否变化,才能判断信息增益,而不是靠工具名或次数做表面判断。

03

指标要同时看效率和质量

冗余工具调用指标可以分为重复参数调用率、输出等价率、结果未消费率、无决策影响率、单位任务工具成本、P95 延迟增量和外部 API 费用。还要看删减后的答案正确率、安全回归率和误杀率,避免为了省成本删除必要校验,导致事实错误或越权风险上升。

04

用反事实回放校准判断

更可靠的方式是对 trace 做反事实分析:移除某次工具调用后,让规则执行器或评测模型判断是否仍能完成同等质量结果。如果执行路径、引用证据和最终答案基本不变,这次调用更可能是冗余;如果删除后证据缺失、风险无法确认或回答不稳定,就应保留。

05

评测结果要进入优化闭环

评估不是为了给 Agent 扣分,而是为了改 planner 和 tool executor。可以要求调用工具前说明目的和预期增益,执行器对等价请求做去重或缓存,给高成本工具设置预算,对连续失败或无进展调用触发 stop condition,并把 badcase 回流到 prompt、工具描述和评测集。

易错点

  • 把工具调用次数多直接等同于冗余,忽略复杂任务需要探索、验证和补充证据。
  • 只比较工具名和参数,不看输出是否被消费、上下文是否变化、最终质量是否受影响。
  • 为了降低成本盲目删除校验调用,导致事实性错误、安全风险或权限风险上升。
  • 没有按工具成本和风险分层,低成本缓存查询和高成本外部 API 使用同一套阈值。

面试官追问

如果重复调用是为了验证高风险事实,如何避免被误判?

给工具调用加 purpose 或 riskType 字段,并在评测时识别校验型调用。高风险事实、权限校验、易变状态刷新可以有单独标签和预算,不能按普通重复查询处理。

没有人工标注数据时怎么冷启动?

先用规则抓高置信冗余样本,如相同工具同参数短时间重复、结果未被引用、连续失败重试无参数变化,再抽样人工复核,逐步沉淀冗余类型和评分规则。

并发工具调用如何判断冗余?

要按依赖图而不是线性顺序判断。并发调用如果服务于不同子目标或交叉验证,不一定冗余;如果多个调用结果高度重合且只消费其中一个,可以标记为并发候选冗余。

冗余评估结果能否直接线上拦截?

初期更适合离线分析和灰度提示。只有对高置信重复请求、预算超限、连续无进展等场景,才适合在 executor 层做硬拦截或要求 Agent 改策略。