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。

相關指南