结构化输出怎样省 Token:先守住 Schema 与业务校验,再谈缩短

本文探讨LLM结构化输出中Token优化的核心原则:优先保障JSON Schema合规性与业务校验能力,而非盲目缩字段名;强调语法、Schema、业务三层检查缺一不可;指出冗余应从固定文案、重复说明和无关字段中清除,而非破坏语义可读性;并提出科学设计Token对比实验的方法,包括契约回归、供应商Schema子集验证及避免bool/int类型误判等关键实践。

结构化输出怎样省 Token:先守住 Schema 与业务校验,再谈缩短封面

把字段名缩成一个字母,输出确实可能更短,但调用方更容易接错字段,故障排查也更难。结构化输出的目标应是减少无用内容,同时保住可解析、可验证和可解释的契约。没有固定模型、分词器和样本,就不应该先宣布节省60%。

三层检查各有作用

JSON语法只说明解析器能读懂;Schema检查必填字段、类型和约束;业务检查决定证据是否存在、动作是否被允许。语法正确的“批准付款”仍可能是越权动作。任何一层都不能包办后两层。

结构化输出怎样省 Token:先守住 Schema 与业务校验,再谈缩短结构示意

图中字段样例和类型清单是示意,不能当成可执行的完整Schema。JSON Schema的properties本身不强制字段出现,必填项需要required;默认也允许额外属性,需要按契约决定additionalProperties。官方对象文档

缩短前先删除真正的冗余

把重复的风格说明、与本任务无关的可选字段、每次都相同的固定展示文案移到应用层,通常比把evidence_ids改成e更容易维护。嵌套结构是否合并,要看消费者是否需要那些边界;不能为了长度破坏对象关系。

下面用标准库写一个特定契约的检查器,不冒充通用JSON Schema实现。它拒绝额外字段、类型错误和未登记证据。只允许摘要,不开放审批动作。

import json

known_evidence = {"doc-a"}
def validate(raw):
    x = json.loads(raw)
    if type(x) is not dict or set(x) != {"summary", "evidence_ids"}:
        raise ValueError("wrong fields")
    if type(x["summary"]) is not str or not x["summary"].strip():
        raise ValueError("missing summary")
    ids = x["evidence_ids"]
    if type(ids) is not list or not ids or any(type(v) is not str for v in ids):
        raise ValueError("invalid evidence list")
    if not set(ids) <= known_evidence:
        raise ValueError("unknown evidence")
    return x

assert validate('{"summary":"sample","evidence_ids":["doc-a"]}')["summary"] == "sample"
for bad in ['{}', '{"summary":"x","evidence_ids":["absent"]}',
            '{"summary":"x","evidence_ids":["doc-a"],"approve":true}']:
    try:
        validate(bad)
    except ValueError:
        pass
    else:
        raise AssertionError("invalid contract accepted")
print("three contract failure paths rejected")

代码中的布尔值不应被误当作整型,因此需要数字字段时要特别检查Python的bool/int关系。本例只有字符串与字符串列表,仍要对每个列表元素验证。服务端结构化输出功能支持哪些Schema子集,应按实际供应商文档核对;本例没有调用它。

一个可比较的Token实验怎么设计

固定项记录项
相同输入样本与模型快照输入/输出Token与总费用
相同业务字段和判定规则解析、Schema、业务错误各自数量
相同重试策略第一次成功率与含重试成本
相同输出含义丢字段、截断、错误引用样本

JSON字节数不是Token数,Token数也不是完整成本;缓存、推理和重试价格可能不同。模型快照停用后还要重做契约回归,不能默认换型号后字段可靠性保持不变。供应商停用清单

先用有名称的字段把业务边界讲清楚,再测哪些说明可以去掉。节省的数字应该来自实验结果,不能来自标题里预先写好的目标。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值