新一代提示词工程 · 知识全景图面向有工程基础、提示词工程尚未系统化的工程师
显示设置

格式选型与词元效率

Format Choice and Token Efficiency

PE-S-04内容已写满G01确定性输出第 9 层

确定性输出token 效率格式选型

一句话结论

格式选型按三条判据落地:下游是否机器解析、模型对该格式是否熟悉、以及格式变更会不会毁掉缓存前缀;省下的 token 一旦变成解析失败,就应退回次省的那种格式。

本页结构(可跳转)

H 同一份信息 四种承载形态 条宽 = 相对 token 量 以缩进 JSON 为基线 1.0 J 缩进 JSON 1.0 Y YAML 0.70 M Markdown 表 0.55 N 三个选型判据 ① 下游是否要流式解析 ② 是否含大量重复结构 ③ 解析失败的代价 长列表看 ① · 单对象看 ③ S TSV 0.35
选型图:同一份信息在四种格式下的相对体积(条宽即相对 token 量),与三个选型判据。 (本站自制)

01为什么需要它

同一份信息换一种承载格式,输出 token 数可以相差两三成:JSON 的引号、括号与逐条重复的字段名最贵,CSV 与 TSV 最省却要处理转义,YAML 靠缩进表达层级而模型对缩进的容错并不好。

适用边界

本节点只处理同一份信息在多种承载格式之间的取舍,不覆盖约束解码、API 侧 schema 保证与修复回路本身;当下游解析器固定、该格式已通过回归评测时,继续更换格式的收益通常小于重测与回归的成本。

02机制说明

格式选型的机制可以拆成三件事。

03何时该用 / 何时不该用

按场景对照:先看条件,再看该怎么做。
类别场景 / 条件(总结)具体做法(细节)
该用下游要机器解析时先用 schema 或严格结构化输出把结构合法性固定下来,再在同一契约内比较各候选格式的 token 开销。
该用长列表与批量任务优先逐行一条记录的形态或表头加分隔符的表格,让字段名只出现一次,避免逐条重复字段名。
不该用只盯着 token 数选型省下的 token 若变成解析失败率与重试次数,总成本反而更高。
不该用把格式一次定死换模型、换解析器或调整缓存前缀后,模型熟悉度与解析容错都会变,必须重测。

04实验台

  1. shellbash

    查看代码
    # 同一批 50 条记录,分别序列化成紧凑 JSON / 逐行 JSON / TSV,逐一量 token
    python3 - <<'PY'
    import json
    try:
        import tiktoken
        enc = tiktoken.get_encoding("o200k_base")
        n = lambda s: len(enc.encode(s))
    except ImportError:
        n = len  # 未装 tiktoken 时退化为字符数,只看相对差距
    rows = [{"id": i, "name": f"item-{i}", "qty": i % 7, "note": "n/a"} for i in range(50)]
    compact = json.dumps(rows, ensure_ascii=False, separators=(",", ":"))
    lines = "\n".join(json.dumps(r, ensure_ascii=False, separators=(",", ":")) for r in rows)
    tsv = "id\tname\tqty\tnote\n" + "\n".join(f"{r['id']}\t{r['name']}\t{r['qty']}\t{r['note']}" for r in rows)
    for k, v in [("compact-json", compact), ("lines-json", lines), ("tsv", tsv)]:
        print(k, n(v))
    PY

    预期观察:紧凑 JSON 与 TSV 的 token 数差距通常落在两成到五成的区间;逐行 JSON 因每行重复字段名而比紧凑 JSON 贵,换来的是可逐条流式解析与部分成功。换一批自己的真实数据重跑,差距会随字段名长度与值的分布变化。

  2. filemarkdown

    查看代码
    选型记录表:每个候选格式一行,逐列填实测值
      格式 | 实测 token(同一批数据) | 下游解析器 | 解析失败率 | 长输出的格式走样率 | 是否破坏缓存前缀
    判据:token 最省的一行只有在该格式的失败率与走样率都可接受时才可选用;
    若最省格式的失败率明显更高,就退回次省格式,并把差额记进成本预算。

    预期观察:读者能拿出「token 数 × 解析失败率」并排的记录再下结论,而不是只报一个更小的 token 数;结论可被他人按同一张表复核。

05证据

主张删掉重复指令与示例、简化工具描述能同时改善任务表现与 token 效率(官方内部编码 agent 评测:分数升约 10–15%,token 降 41–66%,成本降 33–67%),一般化规则是每条指令只写一次——这说明冗余标记是真实且可量化的成本。

分级official

来源S-0012 https://developers.openai.com/api/docs/guides/latest-model

原文

展开原文关键句
Removing repeated instructions and examples and simplifying tool descriptions can improve task performance and token efficiency. ... State each instruction once.

主张下游要机器解析时,结构合法性由 json_schema 加 strict 的模式契约承担(additionalProperties 显式置 false),而不是靠自然语言叮嘱模型「请输出合法 JSON」。

分级official

来源S-0014 https://developers.openai.com/api/docs/guides/structured-outputs

原文

展开原文关键句
response_format: { type: "json_schema", json_schema: { name: "math_reasoning", strict: true, schema: { ... "additionalProperties": false } } }

主张格式与约束本身要付性能代价:格式限制会显著降低推理能力,且约束越严退化越大 ⇒ 更省 token 的强格式并不自动等于更好,选型必须把质量一起计入。

分级paper

来源S-0053 https://arxiv.org/abs/2408.02442

原文

展开原文关键句
we observe a significant decline in LLMs reasoning abilities under format restrictions. ... stricter format constraints generally lead to greater performance degradation in reasoning tasks.

06术语

术语约束解码 Constrained Decoding

界定在采样阶段按文法或 schema 屏蔽不合法的 token 路径,使输出在结构上必然合法;可由推理引擎或库实现,也可由 API 侧保证。

相关节点—

术语结构化输出 Structured Output

界定以 JSON Schema 等模式约束模型输出结构的机制;API 侧的严格模式通常要求全部字段必填且禁止额外属性。

相关节点—

术语三档严格度 Three Tiers of Strictness

界定按约束强度区分的三档做法:自然语言格式要求、模式提示(仅提示结构)、约束解码或 API 级 schema 保证。

相关节点—

07失效模式

08在本站知识结构中的位置

所属分组
G01确定性输出
依赖深度
第 9 层(同层节点彼此无先后约束)
前置PE-S-03→PE-S-04 本节点→后继PE-S-05

在 交互全景图 中定位本节点。