首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >结构化工具调用 >结构化工具调用中的严格模式(Strict Mode)如何通过语法约束保证输出符合 Schema?

结构化工具调用中的严格模式(Strict Mode)如何通过语法约束保证输出符合 Schema?

词条归属:结构化工具调用

1. 将 Schema 编译为上下文无关文法

以 OpenAI 于 2024 年 8 月推出的 Structured Outputs 与 Anthropic 的严格工具使用(strict tool use)为代表,这类严格模式会把开发者提供的 JSON Schema 预编译为上下文无关文法(context-free grammar, CFG)。OpenAI 官方文档指出,之所以采用 CFG 而非有限状态机(FSM)方案,是因为 CFG 能表达更广泛的语言类别,可支持 FSM 难以表达的递归类型与深层嵌套结构;Anthropic 将同类实现称为语法约束采样(grammar-constrained sampling)。

2. 逐 token 掩码约束解码

在解码的每一步,推理引擎依据已生成的上文与文法规则判定哪些 token 合法,并据此对下一步采样进行掩码,把不合法 token 的概率压到 0。由此,一个带三个枚举值、且要求必填的字符串字段,在解码层面就不可能生成第四个枚举值,从机制上消除了"模型编造枚举值"这一类错误。

3. 适用场景与代价

严格模式在写入、金融交易等高利害调用中几乎是必选项,但其代价是解码速度略有下降,且在语法强制把模型推向高损失续写时,偶尔会带来质量回退。因此实践中常按调用的重要程度分级启用。

相关文章
# Function‑Call JSON 是最新标准吗?后续发展了哪些技术
2023 年,OpenAI 在 Chat Completions API 中引入 Function‑Call 机制,让大模型从"纯文本生成"跨入"可调用的结构化输出"阶段。此后两年,整个行业围绕"模型如何可靠地调用工具"这个问题,衍生出一条清晰的技术演进路线。
温昱
2026-09-07
1461
解密prompt系列46. LLM结构化输出代码示例和原理分析
最近闭源大模型们都陆续支持结构化输出,这一章我们先结合demo看下开源和闭源对结构化输出的支持,随后会介绍Constrained Decoding和Format Restricting Instructions 两种结构化输出约束方案,最后会给出结构化输出对比自然语言输出的一些观点。
风雨中的小七
2025-01-02
1.9K0
让大模型输出绝对安全的 JSON:Go 官方 SDK 结构化输出实践
在构建基于大语言模型(LLM)的 Go 语言应用时,开发者常常会遇到一个棘手的痛点:模型输出的不确定性。尽管在 Prompt 中反复强调“仅返回 JSON 格式,不含任何解释”,在面对海量并发或复杂业务场景时,模型仍会偶发地输出包含 Markdown 代码块标记(如 ```json)、冗余文字或损坏的 JSON 字符。这种不确定性对要求严密逻辑的后台系统而言是毁灭性的,会导致解析失败甚至服务异常。
技术圈
2026-07-06
2710
Function Calling 会被 MCP 取代吗?理清两者关系与使用细节
MCP 都出来了,Function Calling 是不是该退休了"——这俩根本不是一回事,怎么就开始互相替代了?后来我发现这个误解在社区里还挺普遍,但凡聊到 MCP,就有人把 Function Calling 当"即将被淘汰的旧技术"。这篇就把这件事一次讲清楚:Function Calling 是什么、有哪些使用细节、以及它和 MCP 到底是什么关系。文末有结论,不想看过程可以直接跳到最后。
晚安code
2026-08-15
2330
LLM 输出 JSON 格式频频出错?直到我五一假期发现这个方法
前段时间写了一个脚本,批量处理用户 Input,然后让 GPT 处理返回处理后对应的 JSON 格式内容。
Immerse
2025-05-09
2.8K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券