如何保证模型提供正确参数并可靠地调用工具?

考查重点:参数约束、执行反馈与失败处理

未标记

本题目录

参考答案

核心回答

可靠的工具调用需要覆盖工具定义、参数检查、业务校验、执行结果反馈。模型输出一个符合 JSON 格式的调用,并不代表参数在业务上正确,也不代表工具已经执行成功。

以客户端工具为例,模型通常提出工具名称和参数,由应用执行工具,再把结果返回给模型。Claude 的工具调用文档展示了这一往返过程。

先把工具接口定义清楚

工具描述应说明用途、适用条件和参数含义。必填项、类型和枚举值应放进结构化约束,而不是只写在提示词里。下面是订单查询工具的输入约束示例:

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "用户提供的订单编号;信息缺失时先询问"
    }
  },
  "required": ["order_id"],
  "additionalProperties": false
}

上面只列出了输入 Schema,调用模型时还需按所用 API 的格式封装。MCP 中的工具也通过 inputSchema 描述输入,但应用仍需处理模型接口与工具执行之间的衔接。MCP 架构与工具发现

参数合法之后,还要检查业务条件

对于上面的订单工具,可以按以下顺序处理:

  1. 检查结构。 order_id 是否存在、类型是否正确,是否包含不接受的额外字段。
  2. 检查身份与权限。 当前用户是否能访问该订单。用户身份应来自可信的登录上下文,不让模型自行声明用户身份。
  3. 检查业务状态。 查询结果是否有效;涉及修改时,当前状态是否允许该动作。
  4. 执行并返回明确结果。 成功时返回真实数据,失败时返回可区分的原因。

即使模型使用了正确的字段名,也可能选错订单,因此业务校验不能省略。

失败后如何继续

  • 缺少订单编号:向用户补问,不由模型猜一个编号。
  • 参数格式有误:返回具体字段错误,允许有限次数的修正。
  • 暂时性网络故障:按工具的重试策略处理,并设置超时和次数上限。
  • 无权限或业务条件不满足:返回明确失败原因,不能把它当成网络故障反复重试。

对修改类工具,还需要考虑幂等性。例如一次状态更新超时后,先确认执行结果,再决定是否重试,避免同一动作被执行多次。

回答示例

例如:“我们不会只依赖模型生成参数。工具层检查 Schema,业务层校验权限和状态,执行层处理超时及幂等,最后把实际结果反馈给模型。调用成功必须以执行结果为准。”

参考资料

资料核对:2026-09-10。订单工具为示例。

相关面经

9

字节跳动

Agent 开发工程师
一面
查看原面经 →
Agent在执行过程中,肯定不可避免地要去调用一些工具,这些工具都有固定地入参,需要模型结合上下文去提供,然后在这个过程中,如何去保障工具调用的可靠性?

去哪儿

前端开发工程师
一面
查看原面经 →
Agent工具调用失败常见原因?如何优化工具调用成功率?

阿里巴巴

AI 应用算法工程师
实习
查看原面经 →
如何提升工具调用正确率?

阿里巴巴

Agent 应用开发工程师
查看原面经 →
为什么Agent经常出现幻觉或乱调工具?怎么缓解?
八股 大模型经常捏造工具调用参数,怎么处理?

美图

大模型算法工程师
一面、二面、三面、四面
查看原面经 →
你认为未来会有什么新技术,还会有强化学习这种路线吗,agent调用工具时工具需要很多参数,幻觉现象很严重,未来可能会有什么解决方案
展开剩余 4 篇面经

腾讯

后端开发工程师(AI)
实习
查看原面经 →
大模型怎么调用mcp中的工具,如果大模型的命令和工具参数不匹配,怎么办?

快手

面经合集
查看原面经 →
延伸问题
如果想要减少工具调用幻觉你有什么好方法。

阿里巴巴

Agent 开发工程师
实习
查看原面经 →
Function Calling的可靠性如何保障?

阿里巴巴

Agent 开发工程师
一面
查看原面经 →
如何提升 agent的function call的能力

相关题目

4

相关关键词:工具调用、Tool Calling、Function Calling