上下文窗口(Context Window)
概述
上下文窗口是语言模型在生成回复时可参考的所有文本总量,包括输入和输出,相当于模型的"工作记忆"。Claude 最新模型支持最大 1M tokens 的上下文窗口,但更多上下文并非必然更优——随 token 增长会出现 上下文腐烂 现象。
关键内容
基本行为
标准 API 请求的上下文窗口遵循以下模式: - 渐进式令牌累积:每轮对话的用户消息和助手回复都会累积到窗口中,历史轮次完整保留 - 线性增长:上下文使用量随每轮呈线性增长 - 容量上限:最大可达 1M tokens(部分模型为 200k) - 输入-输出流程:每轮包含输入阶段(所有历史 + 当前消息)和输出阶段(生成回复成为未来输入的一部分)
各模型上下文窗口大小
| 模型 | 上下文窗口 |
|---|---|
| Claude-Mythos-Preview | 1M tokens |
| Claude-Opus-4-6 | 1M tokens |
| Claude-Sonnet-4-6 | 1M tokens |
| Claude-Sonnet-4-5 | 200k tokens |
| Claude-Sonnet-3-7 | 200k tokens |
| Claude-Haiku-4-5 | 200k tokens |
| Claude-Sonnet-4 | 200k tokens(已弃用) |
单次请求最多可包含 600 张图片或 PDF 页面(200k 窗口模型最多 100 张)。
长上下文检索基准
Claude 在以下长上下文检索基准测试中取得 SOTA 结果: - MRCR(https://arxiv.org/abs/2501.03276) - GraphWalks(https://arxiv.org/abs/2412.04360)
但这些提升取决于上下文的内容质量,而非仅仅是容量大小。
上下文腐烂(Context Rot)
随着 token 数量增长,模型的准确率和召回率会持续下降——这一现象被称为上下文腐烂。这使得筛选上下文内容与预留上下文空间同等重要。详见 上下文腐烂 和 Context-Engineering。
验证错误而非静默截断
从 Claude-Sonnet-3-7 开始,当提示词和输出令牌超出上下文窗口时,模型会返回验证错误而非静默截断。这带来了更可预测的行为,但要求对令牌进行更细致的管理。
管理策略
| 策略 | 适用场景 | 集成复杂度 | |
|---|---|---|---|
| 上下文压缩 | 长时对话和 Agent 工作流 | 低(服务端自动) | |
| 上下文编辑 | 专业需求(上下文编辑</td> <td>工具结果清除、上下文编辑</td> </tr> <tr> <td>[[上下文感知 | 需要模型自主管理令牌的场景 | 低(模型内置) |
令牌计数 API
使用 令牌计数 API 可在发送消息前估算令牌使用量,帮助规划并控制在上下文窗口限制内。
来源
- raw/articles/ai-engineering/anthropic-developer/Context windows.md — Anthropic 官方文档
- 08_claude_code_best_practices.md — Anthropic 官方 Claude Code 最佳实践指南(上下文窗口是最稀缺资源的论断)