Claude Opus 5.5 已在 SeedRouter 上线

上下文窗口与最大输出 token:GPT-6、Claude、DeepSeek 和 Kimi 的上限

上下文窗口和最大输出 token 分别是什么意思,GPT-6、Claude、DeepSeek V4.1 Flash 与 Kimi K3 各自的上限,以及回复提前中断时怎么解决。

以 Markdown 阅读

上下文窗口是模型在一次请求中能容纳的 token 总数:包括你的提示、对话历史、图片,以及模型写出的回复。最大输出 token 上限是模型在这次回复中最多能写多少,在推理模型上,它还包含思考所花的 token。回复必须装进上下文窗口,所以提示越长,留给输出的空间就越少。

上下文窗口和最大输出 token 有什么区别?

上下文窗口是共享空间。一次请求中你发送的全部内容和模型写出的全部内容,都必须装得下。

最大输出 token 是单独针对回复的一个更小的上限。每个模型都有自己的最高值,每个 API 也都有一个参数,让你为单次请求设置更低的上限。

由此有两个结果:

  • 输入和输出争用同一个窗口。 DeepSeek 的 API 参考写得很直白:“输入 token 与生成 token 的总长度受模型上下文长度的限制。”
  • 推理算作输出。 在 GPT-6、Claude、DeepSeek V4.1 Flash 和 Kimi K3 上,模型思考所花的 token 计入输出上限,并按输出计费。即使可见的回答很短,回复也可能提前中断。

各模型的上限是多少?

模型模型 ID上下文窗口最大输出输出参数不传时的默认值
GPT-6 Astra、Sol、Lunagpt-6-astra, gpt-6-sol, gpt-6-luna1.05M tokens(输入 922K)128Kmax_output_tokens(Responses)、max_completion_tokens(Chat Completions)模型最大值
Claude Opus 5.5、Fable 5.1、Fable 5claude-opus-5-5, claude-fable-5-1, claude-fable-51M tokens128Kmax_tokens无:该字段必填
DeepSeek V4.1 Flashdeepseek-v4.1-flash1M tokens393,216max_tokens不开思考 8K,开思考 64K,max 强度下 128K
Kimi K3kimi-k31,048,576 tokens1,048,576max_completion_tokens131,072

大多数回复被截断,问题都出在最后一列。DeepSeek V4.1 Flash 能写 393,216 个 token,但如果不设置 max_tokens,它会在 8K 处停止,开启思考时是 64K。Kimi K3 最多能写 1,048,576 个 token,但默认只有 131,072。

完整参数列表见各模型的 API 参考:GPT-6 Astra、Claude Opus 5.5、DeepSeek V4.1 Flash 和 Kimi K3。

用 max_tokens、max_completion_tokens 还是 max_output_tokens?

它们都用来限制回复长度。该传哪一个,取决于 API 格式和模型:

API 格式参数说明
OpenAI Responses(/v1/responses)max_output_tokensOpenAI:“一次响应可生成的 token 数上限,包括可见输出 token 和推理 token。”
OpenAI Chat Completions(/v1/chat/completions)max_completion_tokensOpenAI 把 max_tokens 标为“已弃用,改用 max_completion_tokens”,且“与 o 系列模型不兼容”。GPT-6 请用 max_completion_tokens。
Anthropic Messages(/v1/messages)max_tokens每次请求都必填。
DeepSeek Chat Completionsmax_tokens1 到 393216。
Kimi Chat Completionsmax_completion_tokensmax_tokens 是同一上限的已弃用名称。

如果 API 返回 "max_tokens is not supported with this model",换成这张表里的参数即可。

为什么模型没写完就停了?

它触到了输出上限。每个 API 都会在响应里报告这一点,而不是作为错误返回:

API字段达到输出上限时的值
OpenAI Responsesincomplete_details.reason"max_output_tokens"
OpenAI Chat Completionschoices[].finish_reason"length"
Anthropic Messagesstop_reason"max_tokens"
DeepSeekchoices[].finish_reason"length"

Anthropic 还有第二种停止原因 model_context_window_exceeded,用于回复填满了整个上下文窗口的情况。DeepSeek 的 length 同时涵盖两种情况:回复超过了 max_tokens,或对话超过了上下文长度。

解决办法:

  1. 调高输出上限,最高到上表中该模型的最大值。
  2. 降低推理强度。 思考越少,留给回答的预算越多,费用也越低。
  3. 续写而不是重试。 把已生成的部分回复发回去,让模型接着写。Anthropic 的停止原因指南针对 max_tokens 描述了这种做法。

"context window exceeded" 是什么意思?

你的请求装不进模型的窗口。具体在哪里失败,取决于 API:

  • Claude。 如果仅输入就超过了窗口,API 返回 400 invalid_request_error("prompt is too long")。如果只是输入加上 max_tokens 超过窗口,Anthropic 的文档表示,Claude 4.5 及更新的模型(包括本文中的模型)会接受请求,并在空间用尽时以 stop_reason: "model_context_window_exceeded" 停止。
  • DeepSeek。 对话超过上下文长度时,回复以 finish_reason: "length" 结束。

三种解决办法,按顺序:

  1. 删掉或概括对话中较早的轮次。如果仅输入就太长,这是唯一的办法。
  2. 调低输出上限,让输入加输出装得下。
  3. 换用窗口更大的模型。上表中的四个模型家族都能读入约 1M tokens。

编程 Agent 如何处理这些上限?

编程 Agent 会替你设置输出上限,而它们的默认值可能低于模型允许的值。

Claude Code 使用 CLAUDE_CODE_MAX_OUTPUT_TOKENS。它的文档说,该值“对于无法识别的模型 ID(例如网关专用的名称)默认是 32000,并会把高于模型上限的值降到上限”。在 Claude Code 中运行 DeepSeek V4.1 Flash 或 Kimi K3 时,如果需要更长的回复,请设置这个变量。同一份文档也提醒,更高的值会“减少触发自动压缩之前可用的有效上下文窗口”。

Codex 从 config.toml 读取 model_context_window,其说明是“当前模型可用的上下文窗口 token 数”。对 Codex 不认识的模型要设置它,做法见我们的 Kimi K3 配置教程和 DeepSeek V4.1 Flash 配置教程。遇到不认识的模型名时,Codex 还会输出:"Model metadata for <model> not found. Defaulting to fallback metadata; this can degrade performance and cause issues."(找不到该模型的元数据,改用默认元数据,可能降低性能并引发问题。)会话仍会继续运行。

常见问题

上下文窗口包含输出 token 吗?

包含。输入、历史、图片和回复共用一个上下文窗口。最大输出上限是在这个窗口内单独针对回复的上限。

推理 token 计入最大输出 token 吗?

计入,本文的四个模型家族都是如此。思考 token 计入输出上限,并按输出 token 计费。

哪个模型能写最长的回复?

Kimi K3 的 max_completion_tokens 最高可设为 1,048,576,DeepSeek V4.1 Flash 的 max_tokens 最高可设为 393,216。GPT-6 和 Claude 每次请求最多 128K。

最大输出上限设得越大,费用越高吗?

不会。你为模型实际写出的 token 付费,而不是为你设置的上限付费。只有模型需要那么多空间时,更高的上限才有意义。

在哪里查看这些模型的实时价格?

在各模型页面:GPT-6 Astra、Claude Opus 5.5、DeepSeek V4.1 Flash 和 Kimi K3。

相关指南