理解上下文窗口

“上下文窗口”是指语言模型在生成新文本时能够回顾和参考的文本总量,加上它生成的新文本。这与语言模型训练时使用的大型数据语料库不同,而是代表模型的”工作记忆”。更大的上下文窗口允许模型理解和响应更复杂和冗长的提示,而较小的上下文窗口可能限制模型处理较长提示或在扩展对话中保持连贯性的能力。 下图说明了API请求的标准上下文窗口行为1 上下文窗口图表 1对于聊天界面,如claude.ai,上下文窗口也可以设置为滚动的”先进先出”系统。
  • 渐进式令牌累积: 随着对话通过轮次推进,每个用户消息和助手响应都会在上下文窗口内累积。之前的轮次被完全保留。
  • 线性增长模式: 上下文使用量随着每个轮次线性增长,之前的轮次被完全保留。
  • 200K令牌容量: 总可用上下文窗口(200,000个令牌)代表存储对话历史和从Claude生成新输出的最大容量。
  • 输入-输出流: 每个轮次包括:
    • 输入阶段: 包含所有之前的对话历史加上当前用户消息
    • 输出阶段: 生成成为未来输入一部分的文本响应

带有扩展思考的上下文窗口

当使用扩展思考时,所有输入和输出令牌,包括用于思考的令牌,都计入上下文窗口限制,在多轮情况下有一些细微差别。 思考预算令牌是您的max_tokens参数的子集,按输出令牌计费,并计入速率限制。 然而,之前的思考块会被Claude API自动从上下文窗口计算中剥离,不是模型在后续轮次中”看到”的对话历史的一部分,为实际对话内容保留令牌容量。 下图演示了启用扩展思考时的专门令牌管理: 带有扩展思考的上下文窗口图表
  • 剥离扩展思考: 扩展思考块(显示为深灰色)在每个轮次的输出阶段生成,但不会作为输入令牌传递到后续轮次。您不需要自己剥离思考块。如果您将它们传回,Claude API会自动为您执行此操作。
  • 技术实现细节:
    • 当您将之前的思考块作为对话历史的一部分传回时,API会自动排除它们。
    • 扩展思考令牌仅在生成时按输出令牌计费一次。
    • 有效的上下文窗口计算变为:context_window = (input_tokens - previous_thinking_tokens) + current_turn_tokens
    • 思考令牌包括thinking块和redacted_thinking块。
这种架构是令牌高效的,允许广泛推理而不浪费令牌,因为思考块的长度可能很大。
您可以在我们的扩展思考指南中阅读更多关于上下文窗口和扩展思考的内容。

带有扩展思考和工具使用的上下文窗口

下图说明了结合扩展思考与工具使用时的上下文窗口令牌管理: 带有扩展思考和工具使用的上下文窗口图表
1

第一轮架构

  • 输入组件: 工具配置和用户消息
  • 输出组件: 扩展思考 + 文本响应 + 工具使用请求
  • 令牌计算: 所有输入和输出组件都计入上下文窗口,所有输出组件都按输出令牌计费。
2

工具结果处理(第2轮)

  • 输入组件: 第一轮中的每个块以及tool_result。扩展思考块必须与相应的工具结果一起返回。这是您必须返回思考块的唯一情况。
  • 输出组件: 工具结果传回Claude后,Claude将仅响应文本(在下一个user消息之前不会有额外的扩展思考)。
  • 令牌计算: 所有输入和输出组件都计入上下文窗口,所有输出组件都按输出令牌计费。
3

第三步

  • 输入组件: 所有输入和前一轮的输出都会传递,除了思考块,现在Claude已完成整个工具使用周期,可以丢弃思考块。如果您传回思考块,API会自动为您剥离,或者您可以在此阶段自由地自己剥离它。这也是您添加下一个User轮次的地方。
  • 输出组件: 由于在工具使用周期之外有新的User轮次,Claude将生成新的扩展思考块并从那里继续。
  • 令牌计算: 之前的思考令牌会自动从上下文窗口计算中剥离。所有其他之前的块仍然计为令牌窗口的一部分,当前Assistant轮次中的思考块计为上下文窗口的一部分。
  • 使用扩展思考进行工具使用的注意事项:
    • 发布工具结果时,必须包含伴随该特定工具请求的整个未修改思考块(包括签名/编辑部分)。
    • 带有工具使用的扩展思考的有效上下文窗口计算变为:context_window = input_tokens + current_turn_tokens
    • 系统使用加密签名来验证思考块的真实性。在工具使用期间未能保留思考块可能会破坏Claude的推理连续性。因此,如果您修改思考块,API将返回错误。
Claude 4模型支持交错思考,这使Claude能够在工具调用之间思考,并在接收工具结果后进行更复杂的推理。Claude Sonnet 3.7不支持交错思考,因此在没有非tool_result用户轮次的情况下,扩展思考和工具调用之间没有交错。有关将工具与扩展思考一起使用的更多信息,请参阅我们的扩展思考指南

1M令牌上下文窗口

Claude Sonnet 4和4.5支持100万令牌上下文窗口。这个扩展的上下文窗口允许您处理更大的文档,维持更长的对话,并处理更广泛的代码库。
1M令牌上下文窗口目前对使用层级 4的组织和具有自定义速率限制的组织处于测试阶段。1M令牌上下文窗口仅适用于Claude Sonnet 4和Sonnet 4.5。
要使用1M令牌上下文窗口,请在您的API请求中包含context-1m-2025-08-07 测试版标头
from anthropic import Anthropic

client = Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Process this large document..."}
    ],
    betas=["context-1m-2025-08-07"]
)
重要注意事项:
  • 测试版状态:这是一个可能发生变化的测试版功能。功能和定价可能在未来版本中修改或删除。
  • 使用层级要求:1M令牌上下文窗口适用于使用层级 4的组织和具有自定义速率限制的组织。较低层级的组织必须升级到使用层级4才能访问此功能。
  • 可用性:1M令牌上下文窗口目前在Claude API、Amazon BedrockGoogle Cloud的Vertex AI上可用。
  • 定价:超过200K令牌的请求会自动按高级费率收费(输入2倍,输出1.5倍定价)。详情请参阅定价文档
  • 速率限制:长上下文请求有专门的速率限制。详情请参阅速率限制文档
  • 多模态注意事项:处理大量图像或PDF时,请注意文件的令牌使用量可能有所不同。当将大型提示与大量图像配对时,您可能会遇到请求大小限制

Claude Sonnet 4.5和Haiku 4.5中的上下文感知

Claude Sonnet 4.5和Claude Haiku 4.5具有上下文感知功能,使这些模型能够在整个对话过程中跟踪其剩余的上下文窗口(即”令牌预算”)。这使Claude能够通过了解它有多少工作空间来更有效地执行任务和管理上下文。Claude经过原生训练,能够精确使用这个上下文来坚持任务直到最后,而不必猜测剩余多少令牌。对于模型来说,缺乏上下文感知就像在没有时钟的情况下参加烹饪节目比赛。Claude 4.5模型通过明确告知模型其剩余上下文来改变这一点,因此它可以最大限度地利用可用令牌。 工作原理: 在对话开始时,Claude接收关于其总上下文窗口的信息:
<budget:token_budget>200000</budget:token_budget>
预算设置为200K令牌(标准)、500K令牌(Claude.ai企业版)或1M令牌(测试版,适用于符合条件的组织)。 每次工具调用后,Claude接收剩余容量的更新:
<system_warning>Token usage: 35000/200000; 165000 remaining</system_warning>
这种感知帮助Claude确定还有多少容量可用于工作,并能够更有效地执行长期运行的任务。图像令牌包含在这些预算中。 好处: 上下文感知对以下情况特别有价值:
  • 需要持续专注的长期运行代理会话
  • 状态转换很重要的多上下文窗口工作流
  • 需要仔细令牌管理的复杂任务
有关利用上下文感知的提示指导,请参阅我们的Claude 4最佳实践指南

较新Claude模型的上下文窗口管理

在较新的Claude模型中(从Claude Sonnet 3.7开始),如果提示令牌和输出令牌的总和超过模型的上下文窗口,系统将返回验证错误,而不是静默截断上下文。这种变化提供了更可预测的行为,但需要更仔细的令牌管理。 要规划您的令牌使用并确保您保持在上下文窗口限制内,您可以使用令牌计数API来估计您的消息在发送给Claude之前将使用多少令牌。 请参阅我们的模型比较表,了解按模型列出的上下文窗口大小列表。

下一步