真实面经题目 · 原创解析
业务 Agent 的评测流程应该怎么设计?如果工具被多调用但不影响最终结果,应该用哪些指标描述冗余工具调用?
这题考业务 Agent 评测,不是简单统计工具调用次数。关键是判断某次工具调用是否带来新增信息、状态推进或风险降低,再用 trace、反事实回放和人工标注校准冗余工具调用指标。
真实面经题目 · 原创解析
这题考业务 Agent 评测,不是简单统计工具调用次数。关键是判断某次工具调用是否带来新增信息、状态推进或风险降低,再用 trace、反事实回放和人工标注校准冗余工具调用指标。
我会把业务 Agent 评测拆成任务结果质量和执行轨迹质量两层。结果层看任务是否完成、答案是否正确、引用是否可靠、用户是否满意;轨迹层看规划步骤、工具选择、参数生成、工具结果消费、重试和停止条件。针对“tools 被多调用但不影响最终结果”,不能直接说结果对就不扣分,因为冗余调用会增加延迟、成本、限流风险和外部副作用。更合理的是记录完整 trace,判断每次调用相对已有上下文有没有新增事实、是否改变后续决策、是否被最终答案或后续工具消费、是否属于高风险校验。指标可以包括冗余调用率、无信息增益调用率、重复参数调用率、未消费工具结果率、单位任务工具成本、P95 延迟增量、反事实删减后质量变化,以及误杀必要校验调用的比例。最后把评估结果反馈到 planner、tool executor 和 prompt:合并等价查询、复用缓存结果、设置调用预算、对高成本工具做二次确认,但保留必要的安全校验。
冗余不是“多调了一次工具”,而是这次调用没有为任务带来必要边际收益。重复搜索同一关键词、重复读取同一资源、参数等价查询、输出未被后续消费,都可能是冗余;但如果第二次调用用于验证高风险事实、刷新易变状态、补齐权限上下文,即使结果相同也不能简单判冗余。
需要记录用户意图、Agent 计划、每次工具调用的名称、参数、时间、返回摘要、调用前后上下文 diff、后续是否引用该结果、最终答案质量和用户反馈。只有知道调用前 Agent 已经知道什么、调用后路径是否变化,才能判断信息增益,而不是靠工具名或次数做表面判断。
冗余工具调用指标可以分为重复参数调用率、输出等价率、结果未消费率、无决策影响率、单位任务工具成本、P95 延迟增量和外部 API 费用。还要看删减后的答案正确率、安全回归率和误杀率,避免为了省成本删除必要校验,导致事实错误或越权风险上升。
更可靠的方式是对 trace 做反事实分析:移除某次工具调用后,让规则执行器或评测模型判断是否仍能完成同等质量结果。如果执行路径、引用证据和最终答案基本不变,这次调用更可能是冗余;如果删除后证据缺失、风险无法确认或回答不稳定,就应保留。
评估不是为了给 Agent 扣分,而是为了改 planner 和 tool executor。可以要求调用工具前说明目的和预期增益,执行器对等价请求做去重或缓存,给高成本工具设置预算,对连续失败或无进展调用触发 stop condition,并把 badcase 回流到 prompt、工具描述和评测集。
给工具调用加 purpose 或 riskType 字段,并在评测时识别校验型调用。高风险事实、权限校验、易变状态刷新可以有单独标签和预算,不能按普通重复查询处理。
先用规则抓高置信冗余样本,如相同工具同参数短时间重复、结果未被引用、连续失败重试无参数变化,再抽样人工复核,逐步沉淀冗余类型和评分规则。
要按依赖图而不是线性顺序判断。并发调用如果服务于不同子目标或交叉验证,不一定冗余;如果多个调用结果高度重合且只消费其中一个,可以标记为并发候选冗余。
初期更适合离线分析和灰度提示。只有对高置信重复请求、预算超限、连续无进展等场景,才适合在 executor 层做硬拦截或要求 Agent 改策略。