前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库工具调用 自由文本参数 格式约束
AIAI Agent工具调用

工具参数中的自由文本字段(如查询语句)应如何限定格式降低误用?

用pattern正则、长度边界和描述中的语法示例收窄自由文本的合法形态;这些约束只能降低误用,服务端仍需按同一规则校验。

前端进阶之旅 · 一题精讲更新于 2026.09.05
AI Agent#工具调用
先看核心答案
理解线索

自由文本字段schema收窄策略

  1. pattern约束正则限定字符集合、结构与长度
  2. 长度边界minLength防空,maxLength防超长解析
  3. 描述示例说明语法并给一条可解析样例

目标是可解析而非完全一致,自由文本总存在表达变体。

核心回答

先记住这个答案

在工具input_schema的字符串字段上声明pattern与minLength/maxLength,并在description中写明预期语法和正反例。模型会据此生成较规范参数,但pattern只管格式不管语义,调用前必须在服务端二次校验。失败时返回可修正示例,让模型改写而非直接报错。

  • 用pattern和长度边界收窄合法输入
  • description中给正反例比只写一句有效
  • 正则只管格式,语义仍需服务端校验

格式约束的双层机制:描述引导与正则声明

工具schema对自由文本的约束核心,是把“任意字符串”收敛成下游解析器能处理的格式子集。pattern正则限定字符集合与结构,但过强会让模型频繁生成不合规参数。更可靠的是同时在description中给出语法和一两句具体示例,让模型看到真实合法形态。minLength防空值,maxLength防超长解析。

对查询语句这类开放字段,正则只限字符集,真正决定格式的是模型对描述的解读。把描述写成“支持空格分隔关键词,可用lang:python限定语言,未知关键词将报错”,等于给模型一个推断边界。模型输出是概率采样,正则不会在推理中执行,所以约束分两层:描述引导生成,正则作服务端校验声明,二者必须配合。

代码搜索工具的query字段约束工程

代码搜索工具的query字段约束:minLength为3,maxLength为200,pattern限制英数字、下划线、连字符与空格,description写明支持lang:python。用户问“超时设置”时,模型可能生成timeout,也可能生成中文串超时设置被拒。服务端硬校验拦住后者。

失败时把tool_result返回,附可接受示例“请用英文,试写timeout”,模型通常下一轮修正。maxLength挡住超长输入。允许一次重试,若再次失败则结束并记录样本,避免无限循环。

约束易失效的条件与应对

失效情形常见三种:模型遵循度弱时乱传;用户语言与字符集不匹配导致生成被拒;正则写得太紧误杀本可修正的合法表达。边界在于schema的约束强度不能超过下游解析器的宽容度,否则许多合法请求被无谓拦截。

对策是放宽pattern字符范围,服务端先做归一化(全角转半角、去多余空白),无法解析再让模型澄清。失败反馈应给出可复用修正模板,不能只说“格式错误”。判断操作性:一条失败调用能否在两次消息内被修正,若不能则需重设计字段或描述。

回答前,多想一步

容易答错的地方

只用pattern就能解决问题
正则只能匹配字符形态,句子级语法和意图乃至模型对正则的推断偏差仍会导致不合规参数。必须配合描述中的示例和长度边界,并在服务端再次解析确认,不能把schema正则当作唯一校验。
description写得越详细越好
过长的描述会让模型抓不住重点,反而增加生成错误。应把关键语法放最前,示例紧跟其后,控制在一两句内。比起长段落,少数具体正反例对模型引导作用更明显。
试着用自己的话回答

面试官还会怎么问?

为什么自由文本不用enum枚举?

enum适用于有限且稳定的取值集合,查询语句是开放集合无法枚举。用enum会迫使模型补一个不存在的词或直接拒绝调用。应依靠pattern、长度和描述引导,必要时附加“若不符合预期请向用户询问”指令。

校验失败后应如何反馈给模型?

返回结构化错误并附一条可接受示例,例如“参数含不支持的字符,请改用这种写法:...”。让模型有参照就能修正,错误信息不能暴露内部堆栈,只说约束要求。

pattern约束应该放在客户端还是模型输入?

模型侧无法执行正则,它是通过schema文本间接理解。因此pattern要在schema中声明,并在服务端做硬校验,两者缺一不可。客户端校验只省往返,服务端才是最终防线。

从一道题,走向一组知识

把知识连起来

工具调用

在工具 schema 中用 enum 约束枚举参数为什么比依赖描述文案更可靠?

同属「工具调用」专题,接着看 工具参数 enum 约束 schema 在具体场景中的处理方式。

工具调用

工具参数设置默认值时有哪些容易被忽视的语义陷阱?

同属「工具调用」专题,接着看 工具 schema 默认值 参数设计 在具体场景中的处理方式。

参考资料

  • Tool use with Claude - Claude Platform Docs

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 格式约束的双层机制:描述引导与正则声明
  3. 代码搜索工具的query字段约束工程
  4. 约束易失效的条件与应对
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑