【每日一题】Agent 的工具调用(Function Calling)链路怎么测?

题目:面试口述题。团队上线了一个基于大模型的 Agent,能调用查订单、改地址、发优惠券等工具。面试官问:「这条工具调用链路你怎么测?怎么判断它是不是真的可用?」请口述你的测试思路。

难度:高级
题型:面试口述题

:point_right:参考答案/答题要点:

  1. 先把「对不对」拆成三层判据:该不该调(触发时机、是否漏调、是否多余调用)、调哪个(工具/函数选择是否正确)、参数对不对(字段名、类型、必填缺失、取值范围、越权或跨用户取数)。三层各自的失败原因和修法不一样,混成一句「效果不好」是减分项。
  2. 不只判终态,要判轨迹(trajectory):中间步骤序列、调用次数与轮次上限、是否重复调用同一工具、是否死循环或提前放弃。结果碰对了但过程错,属于典型假绿。
  3. 工具返回的采信:返回是否被正确解析;模型有没有在返回缺字段时自己「补」出内容(幻觉);多个工具结果冲突时以谁为准;返回里带指令文本时的注入风险。
  4. 环境与依赖要可控:真实工具换成 mock / 沙箱替身,主动注入成功、失败、超时、慢响应、脏数据、权限不足、部分成功等返回,看它兜底;有写操作的工具必须校验幂等和回滚,测试环境不能真的下单、发消息、扣款。
  5. 多轮上下文:参数来自上文时的指代消解、上下文超长被截断后是否瞎补参数、跨会话/跨用户的数据隔离。
  6. 指标量化:工具选择准确率、参数级逐字段比对(Precision/Recall/F1)、端到端任务成功率、平均调用次数与 token 成本、超时率与失败率;成本要和效果一起报。
  7. 结果稳定性:同一条 case 多次采样(pass@k / pass^k),固定温度与随机种子;用 LLM 当裁判时裁判与被测不同源,并定期用黄金标准集做人工一致性校验,防止评测本身抖动。
  8. 上线与回归:评测集来自真实线上日志 + badcase 回流并版本化,每次模型/Prompt/工具定义变更都跑基线对比,灰度期做线上指标 A/B 观察,出问题的 case 能定位到是模型、Prompt 还是工具实现的问题。

一句话收口:把「不确定的输出」变成「可判定、可复现、可回溯」的验证过程,这才是 Agent 测试的核心。