在生产级 Agent 系统中,大语言模型对工具的调用并非天然可靠。
模型可能因幻觉、参数误填、格式错误或逻辑跳跃,导致工具执行失败、系统崩溃,甚至引发安全风险。
为构建高可靠性的工具调用机制,需建立一套覆盖“定义—推理—执行—修复”全链路的工程化保障体系。该体系可分为四个层级,层层递进,形成闭环。
一、结构化定义层:以强约束奠定可靠性基础
工具调用的可靠性始于对函数接口的精确定义。模型仅能依据提供的函数描述生成参数,若定义模糊,输出必不稳定。
-
强类型约束:使用 JSON Schema 明确定义每个工具的输入参数结构,包括:
-
字段类型(
string、integer、boolean等) -
是否为必填项(
required) -
枚举值范围(
enum) -
字符串格式(如
date-time、email) -
数值范围(
minimum、maximum)
示例:机票预订工具中,
departure_date必须为 ISO 8601 格式的日期字符串,禁止使用“明天”“下周”等自然语言表达。 -
-
语义描述优化:函数描述是模型理解意图的核心依据,应像优化 Prompt 一样精心设计:
- 明确触发条件:
“仅当用户明确提及‘改签’或‘变更日期’时,才调用 update_flight” - 区分相似功能:
“若用户要求‘取消订单’且未提供订单号,则提示补充;若提供订单号但状态为‘已出发’,则拒绝调用 cancel_order” - 避免歧义:使用“必须”“禁止”“仅限”等确定性词汇,而非“可以”“建议”
- 明确触发条件: