token 预算是什么
token 预算指为上下文的每一段预先分配额度:系统提示、任务指令、少样本示例、检索内容、多轮历史,外加输出预留。分配的意义在于「超限时知道先动谁」——输出预留必须优先保障,其余按优先级降级。没有预算的提示会慢慢膨胀:每次优化都加一点,几个月后成本和延迟都上去了,却没人说得清是哪一段在长。
基本信息
| 适用平台 | 有上下文长度上限的模型与推理服务 |
|---|---|
| 计量单位 | token;中文与代码场景按字符估算误差较大,以实际计数为准 |
| 分配顺序 | 输出预留优先,其余按段位降级 |
| 度量要求 | 记录各段实际占比,反向校准分配方案 |
典型使用场景
- 长回答任务:为输出留足空间,避免被输入挤占导致截断
- RAG 应用:为检索片段定 top_k 与单片段长度上限,超限时按相关度裁剪
- 多轮对话:为历史分配固定额度,超出后改滚动摘要
- 批量任务:为单条样本设定上下文额度,控制整体成本
- 容量评估:按预算估算单请求成本与峰值并发下的表现
预算分配示例(总量按实际窗口设定)
预算分配示例(总量按实际窗口设定)
# 系统提示与约束: 1500 # 角色、边界、输出契约,尽量精简
# 任务指令与格式说明: 1000
# 少样本示例: 4000(可裁剪至 1000) # 优先削减段
# 检索内容: 18000(按相关度截断) # 保留来源标记
# 多轮历史: 3000(滚动摘要压缩) # 保留最近若干轮原文
# 输出预留: 4500 # 不挪用;不足时先削其他段
# 校验:各段之和 + 输出预留 <= 窗口上限,否则按顺序降级各段降级顺序
| 顺序 | 降级对象 | 主要影响 |
|---|---|---|
| 1 | 少样本示例条数 | 格式与风格稳定性下降 |
| 2 | 检索内容 top_k | 召回下降,可能漏关键事实 |
| 3 | 检索单片段长度 | 语义被切断,需标注截断位置 |
| 4 | 多轮历史压缩 | 早期约定被遗忘 |
| 5 | 任务指令细节 | 行为不可预期,需回归验证 |
输出预留算进预算,才能避免「输入刚好占满、回答被截断」这类线上问题。输出长度与输入长度是竞争关系,不是独立的两件事。
预算表要与实际消费对账:按段记录真实的 token 占比,一段时间后会发现某些段位长期用不满、某些段位反复超限,据此调整分配比一开始拍脑袋更准。