工具调用提示:函数描述、参数设计与选择引导
一句话定义
工具调用的质量上限在提示层就被决定——工具清单的描述精度、参数约束的明确度、"何时用/何时不用"的选择引导,共同构成模型选对工具、填对参数的全部依据。
为什么重要
模型看不到工具的实现代码,它对工具的全部认知就是你在上下文里写的描述。描述含糊 → 选错工具;参数说明含糊 → 编造参数值。生产 Agent 的"工具乱调用"问题,七成修在提示层而不是代码层。本知识点与 工具结果的上下文呈现:喂回什么、怎么喂(结果入口)合起来构成工具交互的完整提示工艺。
前置知识
- ReAct:推理与行动交织的提示模式:工具调用的交互循环与 Action 格式;
- 结构化输出:JSON/YAML 与 Schema 约束:参数本质是出向 Schema——同样的 Schema 设计纪律。
直观类比
给新员工一张工具间的操作卡:每台机器写清"干什么用、按钮在哪、什么时候不许碰"(清单三要素),并在最上面写一句"不确定就问主管,别瞎按"(反问授权)——机器说明书越含糊,事故越多。
图示
工具清单条目模板:
名称:create_refund
用途:为符合条件的订单创建退款单
参数:order_id(必填, 8位大写A+数字, 来源:上下文中的订单实体)
reason(必填, 枚举: 7天无理由|质量问题|其他, 来源:用户原话)
使用条件:仅当已确认订单存在且符合政策
禁忌:不要在未查询订单前调用;不要为他人订单调用核心概念
- 工具清单(Tool Manifest):每个工具三要素——用途一句话、参数 Schema、使用条件与禁忌。
- 参数约束:类型、枚举、必填/可选、格式示例(如日期格式、ID 位数)。
- 选择引导:工具间的优先级与互斥关系("能查库就不要猜""A 与 B 同时适用时先 A")。
- 参数来源声明:每个参数的值从哪来(用户原话 / 上文实体 / 需向用户确认)——这是防"编参数"的关键条款。
- 无工具可用时的出路:明示"没有合适工具时回复'无法完成',禁止编造工具或参数"。
原理与机制
模型填参数的行为是条件生成:它需要从上下文中找到参数值。参数错误的三大来源与对策:
- 值不在场:上下文没有该值,模型就会编 → 每个参数声明来源,允许的来源只有"用户原话/上下文实体/反问用户"三种;
- 格式歧义:日期
2026-10-02还是10/02?ID 全半角?→ Schema 里给格式示例与正则; - 工具语义重叠:两个工具都能"查订单",模型随机选 → 在描述里写清分工边界与优先级。
另一个高频问题:该问不问。缺参数时模型倾向瞎填——必须在提示中显式授权反问:"缺必填参数时向用户追问,禁止用默认值填充"。这是 拒答、越权与边界控制 边界控制在工具域的应用。
公式或模型
本节不适用——工具选择正确率用评估集统计(构造"应选 A 不应选 B"的对照样本,见 评估集构建:黄金样本与失败分类)。
实例或案例
案例:消灭"编参数"事故。 症状:模型把用户随口说的"帮我退了上周那个单"直接填成猜测的订单号调用退款,创建了错误退款。操作步骤:① 给 order_id 加来源声明(只允许上下文实体);② 加反问授权条款;③ 加禁忌(未查询确认前禁止 create 类调用);④ 构造"信息不足"测试样本验证追问行为。改造后清单节选:
使用规则:
R1 create_refund 前必须先用 query_order 确认订单存在且符合退款政策。
R2 order_id 只能取自查询结果;上下文没有时向用户询问,禁止猜测。
R3 缺任一必填参数时追问用户,一次问全,禁止使用默认值。
R4 没有合适工具时回复"该操作暂不支持",禁止编造工具名。排错清单:
- 症状:总选错相近工具 → 描述里写分工与优先级,并加对照示例("查进度用 A,改状态用 B");
- 症状:参数格式随机 → Schema 加格式示例与正则,配合 校验-重试回路:让输出自修复 校验重试;
- 症状:一次调用塞了五次工具 → 明示"每轮最多一个 Action"(见 ReAct:推理与行动交织的提示模式)。
常见误区
- 描述写给开发者的语法、不是写给模型的语义:模型需要"什么时候用"而不是"内部怎么实现";用一句业务用途 + 使用条件描述;
- 工具越多越好:清单膨胀会显著提高选择错误率,按场景拆分工具集(不同会话注入不同子集);
- 缺省值兜底:给参数设"聪明的默认值"是把错误静默化——宁可追问。
自测题
- 模型"编造参数值"的机制性原因是什么?
答:参数值不在上下文中,而提示没有禁止编造、没有授权反问;条件生成只能就近找值或虚构。
- 两个工具功能相近导致选择随机,如何修复?
答:在描述中写清分工边界、使用条件与优先级,并配对照示例样本验证。
- 为什么"缺参数时反问"必须显式授权?
答:模型默认倾向完成任务;不授权反问它就会用猜测或默认值填空,把错误静默化。
与其他知识点的关系
工具结果的上下文呈现:喂回什么、怎么喂 承接调用结果的呈现;参数校验失败进入 校验-重试回路:让输出自修复 的重试回路;"该问不问/无工具不编"是 拒答、越权与边界控制 边界控制在工具域的落地;工具选择的回归样本归入 评估集构建:黄金样本与失败分类。
延伸阅读
- 论文:ReAct(Yao et al., 2022)——行动格式与工具选择的教学范式。
来源
- ReAct: Synergizing Reasoning and Acting in Language Models (Yao et al.
- 2022)