yoi/docs/research/openai_chat_max_tokens.md

3.3 KiB
Raw Blame History

OpenAI Chat Completions API — 出力トークン数制御パラメータ仕様


1. max_tokensmax_completion_tokens の関係

パラメータ 状態 対応モデル
max_tokens Deprecated GPT-3.5, GPT-4 系など旧モデルでは動作する
max_completion_tokens 現行・推奨 全モデル(旧モデルにも後方互換あり)
  • max_tokens は o1 系以降では 受け付けられない(エラーまたは無視)。
  • 変更の背景: 旧来の max_tokens は「返却トークン = 生成トークン = 課金トークン」を前提にしていた。o1 系で推論トークンreasoning tokensが導入されたことでこの前提が崩れ、新パラメータが設計された。
  • max_completion_tokens は旧モデルでも機能するため、新規実装では max_completion_tokens を使うべき

2. 必須か任意か

  • 任意optional
  • 指定しない場合はモデルのコンテキスト上限まで生成する(デフォルト: null)。

3. 型と範囲

  • : integer | null
  • 範囲: 1 以上、モデルのコンテキストウィンドウの残りトークン数以下。上限値はモデルごとに異なり、ドキュメント上に固定の最大値は明示されていない。
  • null を渡すと制限なし(モデル上限に従う)。

4. Reasoning モデルでの reasoning tokens のカウント

  • max_completion_tokens の上限には reasoning tokens推論トークンを含む
    • reasoning tokens: モデルが内部で生成するが API レスポンスには含まれない隠しトークン。
    • 課金対象は reasoning tokens + visible output tokens の合計。
    • レスポンスの usage.completion_tokens_details.reasoning_tokens で内訳を確認できる。
  • したがって、max_completion_tokens = 5000 と設定しても、推論に多くのトークンを使った場合、目に見える出力は 5000 より少なくなる。

5. Ollama の OpenAI compat API での扱い(補助情報)

  • Ollama の /v1/chat/completions は現時点で max_tokens のみを公式サポートしている(内部的に num_predict にマッピング)。
  • max_completion_tokens サポートは Issue #7125 / PR #14464 で議論中だが、2026-04-28 時点では公式ドキュメント上に記載なし。
  • Ollama に対しては max_tokens を使うのが安全な選択。ただし将来的に max_completion_tokens に移行される見込み。

6. ドキュメント URL