同样一句「帮我查明天北京的天气」,为什么有的智能体一次就查准,有的却反复出错?差别往往不在模型聪不聪明,而在那一次工具调用有没有把参数填对。所谓工具调用的参数,就是 Agent 在调用某个工具时,按照工具要求逐项填进去的具体取值,相当于办业务时填的那张表。
参数就是每次填进表格里的内容
一个工具能被调用,前提是它声明了自己需要哪些信息:查天气需要城市名,可能还需要日期;发邮件需要收件人、主题和正文。Agent 每次决定用工具时,都要从上下文里取出这些值,按名字一一对应地填进去。填进去的这组数据,就是参数。
参数填错是新手最常见的翻车点:城市名写成了拼音、日期格式不对、把可选项当必填项漏掉,都会让工具直接报错。Kimi 这类助手在调用前会把关键参数复述一遍让你确认,智谱清言的智能体也常在界面上展示参数内容,本质都是给人一个核对的机会。
生活类比:寄快递要填的运单
寄快递时,运单上要写收件人、地址、电话,少一项或者写错一个字,包裹就送不到。工具参数也是一样:说明书规定了这张单子有哪些栏位,每次调用的区别只是你往栏位里填的内容不同。
不过运单的比方有到不了的地方。快递单写错了要重新填一整张;而 Agent 发现参数错误后,通常只需要在下一轮修正出错的那个字段再试。参数还有类型之分——文本、数字、布尔值,填错类型会被直接拒收,这一点运单上倒是没有。
类比撑不到的地方
填参这件事有三个细节值得留意:
- 参数名必须和说明书里声明的完全一致,写「city」还是「城市」不是风格问题,是能不能跑通的问题。
- 可选参数不填会走默认值,但默认值未必符合预期,关键调用建议显式写明。
- 参数值来自上下文,如果上下文里根本没有这个信息,模型可能编一个凑数,这也是幻觉的一种来源。
填参的四个核对项,错法不同后果也不同:
| 核对项 | 该怎么填 | 填错的后果 |
|---|---|---|
| 参数名 | 照抄说明书,一个字母都别改 | 写「city」还是「城市」直接跑不通 |
| 参数类型 | 文本就是文本,数字就是数字 | 类型不对会被直接拒收 |
| 必填项 | 一个都不能少 | 漏一项,工具当场报错 |
| 可选参数 | 关键调用显式写明 | 默认值未必符合预期 |
参数和上下文的关系也值得一说:模型填参用的值,全部来自对话里出现过的信息或上一步的返回。上下文里写「下周三」,它就得自己换算成具体日期;上下文里压根没提收件人,它要么反问,要么硬填。所以让 Agent 干活前,把关键信息一次说全,比事后修补参数省事得多。这也是为什么同样的任务,交代得越具体执行越顺——不是模型变聪明了,是填表的材料齐了。
速查表:
- 参数名:照抄说明书,一个字母都别改。
- 参数类型:文本就是文本,数字就是数字,别混。
- 必填项:一个都不能少;可选项:想清楚再省略。
照着这三行核对,大部分参数报错都能当场定位。
参数表长什么样,是工具自己声明的,这份声明就是函数的 schema;而调用之后工具返回什么、又如何回到上下文,可以接着读观察结果。往前一步,什么时候决定调用工具,则要回到任务规划。
一句话带走:参数填写的功夫不在手快,而在对照——对照说明书、对照上下文里真实存在的值。养成先核对再提交的习惯,Agent 的报错会少一大半。
关于工具调用的参数的三个常问问题
- 参数和提示词有什么区别?:提示词是给人读的指令,参数是给程序读的结构化数据。前者灵活随意,后者必须严格符合格式约定。
- 模型会不会把参数填错?:会。尤其是上下文信息不足或字段很相似的时候。看到报错先检查参数,往往比换个说法重问一遍更有效。
- 可选项是不是永远都可以不填?:不是永远。有些可选项影响输出范围,省略前先弄清默认行为,必要时显式指定。


