KODA Format:一种 Schema-First 数据格式,以降低 LLM 令牌使用(40%)
Source: Dev.to
Introduction
在使用大型语言模型(LLMs)构建应用程序时,最常被忽视的成本之一是结构化数据的表示方式。大多数系统使用 JSON,但 JSON 对于 LLM 输入来说效率低下。
Source: …
JSON 的问题
JSON 为每条记录重复字段名,浪费 token。
示例
[
{"id": 1, "title": "Bug", "state": "open"},
{"id": 2, "title": "Fix", "state": "closed"}
]
每个对象都会重复键 id、title 和 state。
如果你发送 1 000 条记录,这些键会被重复 1 000 次,导致:
- token 浪费
- 成本更高
- 有效上下文窗口变小
KODA: Knowledge‑Oriented Data Abstraction
KODA 是一种 schema‑first 数据格式,旨在减少向 LLM 发送结构化数据时的 token 使用量。它的工作方式如下:
- 首次定义结构(schema‑first)
- 位置编码数值
- 消除 JSON 中重复的键
优化对象
- 检索增强生成(RAG)流水线
- 工具调用系统
- 代理工作流
- 大量结构化 LLM 输入
KODA 语法示例
KODA/1
@META
schemas:issue
counts:issue=3
@SCHEMA
issue:id title state
@DATA:issue
1|Bug|open
2|Fix|closed
没有重复的键——只有模式定义和数值。
令牌减少结果
使用 GPT‑4o‑mini 分词器在真实数据集上测量。
| 案例 | JSON 令牌 | KODA 令牌 | 减少率 |
|---|---|---|---|
| 重复日志 | 3 202 | 1 233 | 61.5 % |
| GitHub 问题 | 4 137 | 2 576 | 37.7 % |
| 小型数据集 | 26 | 35 | ‑34.6 % |
KODA 在大型、重复的结构化数据上表现最佳。对于非常小的数据集,模式开销可能抵消其优势。
为什么令牌重要
- Tokens = 成本 (API 定价)
- Tokens = 延迟 (处理时间)
- Tokens = 上下文容量 (模型能够看到的数据量)
将令牌减少约 30–40 %:
- 降低 API 成本
- 增加可用上下文
- 提高整体系统效率
KODA 工作原理
- Schema → 定义一次
- Data → 按位置流式传输
这消除了结构冗余。
Python 示例
from koda import Schema, Field, encode
schema = Schema("user", [
Field("id"),
Field("name"),
Field("email", optional=True),
Field("active", default="true")
])
data = [
{"id": 1, "name": "Alice", "email": "alice@example.com"},
{"id": 2, "name": "Bob"}
]
koda_str = encode(data, schema)
print(koda_str)
格式比较
| 格式 | 令牌效率 | 可读性 | 最佳使用场景 |
|---|---|---|---|
| JSON | 低 | 高 | APIs |
| YAML | 中 | 中 | 配置文件 |
| TOON | 高 | 中 | LLM 结构化数据 |
| KODA | 高 | 低 | LLM 流程 |
何时使用 KODA
如果您符合以下情况,请使用 KODA:
- 向 LLM 发送大型结构化数据集
- 构建 RAG 流水线
- 使用工具调用或代理
- 在生产系统中优化 token 使用
请勿在以下情况下使用 KODA:
- 小型数据集(1–2 条记录)
- 不规则或深度嵌套的 JSON
- 人工编写的配置文件(建议使用 JSON)
常见问题
-
KODA 是 JSON 的替代品吗?
不是。KODA 是用于 LLM 流水线的传输格式,充当优化层。对于一般使用,JSON 仍是更好的选择。 -
KODA 能与任何 LLM 配合使用吗?
它专为 LLM 输入而设计;在大型结构化数据集上效果最佳。 -
哪些工作负载受益最大?
RAG 流水线、工具调用以及其他结构化 LLM 输入场景。
入门
- 仓库:
- 安装:
pip install koda
如果您向 LLM 发送结构化数据,可能会浪费 token。KODA 提供了一种简便的方法来降低这种开销。欢迎提供反馈和贡献。