明天

Function Calling 与工具调用专题

工具调用高频面试题。重点在参数校验、错误回灌、并发与幂等——这些才是把 demo 变成可用系统的分水岭。

发布 1,260 字3 分钟研读
本页目录

Q1 工具描述(description)怎么写才算合格?

  • 描述是写给模型的接口文档,不是给人看的注释。要素:什么时候用、什么时候不要用、参数含义、返回什么。
  • 最容易漏的是边界:“查询订单”这类工具必须写清”仅支持最近 90 天”,否则模型会拿它去查历史数据然后拿到空结果。
  • 有区分度的回答会提到:把”失败时怎么办”写进描述,例如”若查不到订单,请改用 XXX 工具”。

追问:工具数量到 50 个以上怎么办?(考察是否想到工具检索 / 分组 / 分层暴露)

Q2 模型给的参数不合法,怎么处理?

不能一概报错返回。分层处理:

情况处理
可推断的缺失(如没说时间范围)用工具描述里的默认值补,并在结果里注明”已按默认 7 天查询”
格式错误(日期写错)把错误原因 + 正确格式示例回灌给模型让它重试,而不是抛异常
语义越界(查了没权限的数据)明确拒绝并给出原因,不要静默返回空结果
参数类型正确但值不存在返回”未找到”并附上可选的近似值

关键原则:错误信息是给模型看的输入,不是给运维看的日志。空结果和报错是两回事,混在一起模型就学不会纠正。

Q3 工具调用要不要幂等?怎么做?

  • 要。模型的重试和框架的重试会叠加,一次用户请求可能触发多次同样的写操作。
  • 常见做法:调用方生成幂等键(如 request_id + tool_name + 参数哈希),服务端按幂等键去重。
  • 更隐蔽的问题:流式场景里中断重连后模型可能重新发起同一个工具调用——这条路径最容易被漏掉。
  • 有区分度的回答会区分读工具和写工具,只对写工具做严格幂等。

Q4 多个工具可以并发调用,怎么保证正确?

  • 先判断依赖关系:无依赖的才能并发。模型往往不知道两个工具之间有依赖,需要你在编排层判断。
  • 并发写要处理顺序敏感:两个工具都改同一份状态时,结果取决于完成顺序 → 必须串行或加锁。
  • 注意结果拼接顺序:并发返回顺序不等于调用顺序,拼回上下文时要按调用 id 对齐,否则模型会把 A 的结果当成 B 的。
  • 部分失败的语义要定义清楚:是整体失败,还是允许部分成功?这决定了要不要回滚。

Q5 工具调用的循环(agent loop)什么时候停?

停不下来的循环是线上最常见的故障之一。可用的终止条件:

  1. 模型不再请求工具,直接给出答案。
  2. 达到最大轮次(必须有硬上限,且要能被配置)。
  3. 检测到重复调用:同样工具 + 同样参数连续出现 → 判定为卡死,中断并上报。
  4. 预算耗尽(token / 时间 / 金额)。

追问:第 3 条之外,还有什么”看起来在推进实际没进展”的信号?(考察是否想到观察状态是否被改变)

Q6 工具返回的内容太长怎么办?

  • 截断是最差的方案——模型会基于残缺信息给出自信的错误答案。
  • 更好的顺序:摘要化 → 分页 → 让模型显式请求下一段。
  • 结构化返回优于自然语言返回:让模型做选择,而不是让它从长文本里找。
  • 如果是列表类结果,返回总数 + 前 N 条 + “是否继续”的选项,比直接灌 500 条更有效。

Q7 怎么防止 Agent 执行危险操作?

  • 分级:读操作自动执行;写操作、涉及资金/删除的操作必须人工确认。
  • 白名单:参数校验在服务端做,不能只信模型的输出(模型可能被提示注入操纵)。
  • 确认要展示关键信息:人工确认时必须显示”将要做什么、影响什么”,只显示工具名没有意义。
  • 有区分度的回答会提到提示注入:工具返回的内容里可能藏着指令,不能直接当可信输入。

Q8 怎么评测工具调用的质量?

  • 分开看选对工具(工具选择准确率)和填对参数(参数正确率)——这两类错误的原因和修法完全不同。
  • 记录不该调用却调用了的比例:过度调用比调用失败更隐蔽,也更贵。
  • 用固定的用例集做回归,重点覆盖”多个相似工具并存”的选择场景。
  • 线上要采:工具调用轮次分布、失败率、平均轮次——轮次持续上涨通常意味着工具描述在退化。

本专题持续补充。

同专题Agent 大厂面试题

上下文工程专题

上下文工程(Context Engineering)面试题整理。从"什么该进上下文"问到压缩策略、位置排布、成本与失败模式,附一次完整的上下文预算分配实例。

#面试#上下文工程#Agent4 分钟1,490 字2026.09.29

RAG 专题

RAG 高频面试题整理。从"为什么不是微调"一路问到混合检索权重、重排位置、以及召回率上不去的排查路径。

#面试#RAG#记忆4 分钟1,512 字2026.09.29