把一个大语言模型接上工具(搜索、数据库、内部 API),它就能从「会聊天」进化成「能办事」。但工具调用并不是给得越多越好。实践中一个常见误区,是把手里所有 API 都塞给模型,期待它自己挑对的用。结果往往是:模型选错工具、传错参数,或者干脆在无关工具上浪费大量 token。
工具调用设计的第一步,是给模型划清能力边界。
一、工具要少而清晰
每个工具都应有明确的职责和名字。与其提供一个大而全的「万能接口」,不如拆成若干个语义单一的工具。工具描述要写清:它做什么、需要什么输入、返回什么、什么情况下不适用。描述本身就是提示词的一部分,写得含糊,模型就会乱猜。
二、参数要收敛、要有约束
自由文本参数最容易出错。能用枚举就不要用自由字符串,能限定范围就不要放开区间。对必填项和可选项要分清楚,并在描述里给出示例。参数校验最好在服务端再做一层,因为再聪明的模型也难免偶发幻觉。
三、权限与副作用要显式管理
读操作和写操作应当区分对待。查询类工具可以相对开放,而涉及资金、删除、对外发送等有副作用的操作,必须加确认环节或人工审批。让模型手握高权限写接口而不设拦截,是很多事故的根源。
四、可观测性是前提
当 Agent 进入生产,你需要能看到每一次工具调用的输入、输出、耗时和失败原因。没有这层可观测性,模型为什么选错、在哪一步卡住,都无从判断。日志和链路追踪应当从第一天就纳入设计。
五、给失败留后路
工具会超时、会报错、会返回空结果。Agent 需要明确的重试、降级和兜底策略:重试几次、超时多久、失败后是换工具还是直接告知用户。把这些规则写进系统提示词,远比指望模型临场发挥可靠。
结语
工具调用的本质,是把模型的语言能力约束在确定性的工程接口上。边界越清晰,模型越不容易越界;接口越可控,系统就越稳定。把工具当成给模型的一份「能力清单」,而不是一堆随手扔过去的接口,是让 Agent 真正可用的关键一步。
【参考来源】综合整理自公开发布的行业信息