上下文窗口的真相:标称和实测差多少
很多站点标称 1M 上下文,实际在 200K 就报错。这篇说清窗口是怎么算的,以及怎么自己测。
更新 2026-10-28约 1 分钟
窗口是怎么算的
上下文窗口 = 输入 + 输出。
很多模型标称 200K,但输出上限只有 8K,所以你实际能塞的输入是 192K,不是 200K。
为什么标称和实测不一样
| 原因 | 说明 |
|---|---|
| 站点缩水 | 中转站为了省成本,把窗口改小 |
| 输出预留 | 你要留 max_tokens 的空间 |
| tokenizer 差异 | 中文 token 效率低,同样字数占更多 token |
| 系统提示词 | 系统提示 + 工具定义都算在窗口里 |
怎么自己测
发一段逐渐增长的内容,看在哪一步报错:
第 1 次:100K token → 正常
第 2 次:200K token → 正常
第 3 次:400K token → 报 context_length_exceeded
那个报错的点,就是真实窗口。
实用建议
- 留 20% 余量,不要贴着上限用
- 长文档场景优先选 输出上限也大的模型
- 同一个模型在不同站点,窗口可能不一样