工具调用怎么设计才稳定?参数校验、超时、重试与幂等
直接回答:稳定工具调用的关键不是“让模型生成更漂亮的JSON”,而是把模型当作不可信的参数建议器:所有参数都在服务端校验,网络错误有限重试,写操作带幂等键,高风险动作要求确认。MCP也把Tools定义为模型可调用的能力,但应用层仍需要权限与交互控制。[1][2]

第一层:Schema尽量严格
字段类型、必填项、枚举、长度、范围都明确。能用枚举就不要让模型自由写字符串;时间、货币、ID等敏感字段必须二次校验。
第二层:服务端再校验一次
即使模型输出通过JSON Schema,也要验证业务规则,例如订单金额不能为负、用户必须有权限、收件人必须存在。
第三层:重试要按错误类型分流
| 错误 | 策略 |
|---|---|
| 网络超时/5xx | 指数退避,有限次数重试 |
| 429 | 按Retry-After或限流策略等待 |
| 400/参数错误 | 不要盲目重试,先修参数 |
| 权限错误 | 停止并提示用户授权 |
| 业务冲突 | 转人工或重新读取最新状态 |
第四层:写操作必须幂等
创建订单、发通知、扣款等动作都带业务唯一键。即使请求因为超时被重复提交,也只产生一次真实副作用。
第五层:可观测和审批
日志要记录task_id、tool、参数摘要、结果、耗时、重试次数和最终状态;敏感参数做脱敏。删除/付款/发布等动作在执行前显示人类可读的确认摘要。
注意:“模型说调用成功”不等于成功。最终状态必须来自工具/API真实返回值,并在必要时做读后校验。
资料核验日期:2026-08-09。产品功能、套餐、API、平台规则与地区可用性会变化,正式使用前请再次查看官方页面。
参考来源
- Model Context Protocol:Understanding MCP servers(official,核验于 2026-08-09)
- Model Context Protocol:2026-07-28 Specification(official,核验于 2026-08-09)
更新记录
- 2026-08-09:完成官方/一手来源核验、结构化撰写与发布边界检查。
© 版权声明
文章版权归作者所有,未经允许请勿转载。