ブログに戻る

トラブルシューティングガイド

temperature、top_p、top_kでClaude APIが400エラー: 修正方法

ClaudeリクエストがAPIバージョン2026-10-21で400を返すようになった?temperature、top_p、top_kを削除するか、古いバージョンに固定しよう。手順はこちら。

投稿者: CheapTokens Team公開日 読了時間 5 分

ターミナル風カード: Claude APIでtemperature、top_p、top_kに対するエラー400
このページの内容
  1. 失敗するリクエストの例
  2. 修正方法: 3つのパラメータを削除する
  3. 削除すると回答は変わるのか?
  4. 400が表示されたときのクイックチェックリスト
  5. ClaudeとOpenAI形式APIで1つのコードパス

昨日は動いていたClaudeリクエストをAPIバージョン2026-10-21(anthropic-versionヘッダー、またはそれ向けにビルドされたSDKリリース)に移したら、400が返ってくる。リクエストのボディを見てほしい。temperature、top_p、top_kが含まれていれば、それが原因だ。この3つのフィールドを削除すればリクエストは通る。

Anthropicのバージョン2026-10-21向け移行ガイド(https://platform.claude.com/docs/en/api/migration-2026-10-21,、2026年10月24日確認)によると、MessagesまたはMessage Batchesリクエストでこの3つのいずれかを送信すると400エラーが返る。パラメータのデフォルト値であっても発生する。リクエスト内で400ステータスとこれらのフィールド名を探してほしい。

失敗するリクエストの例#

チケットを要約するようClaudeに依頼し、低いtemperatureで回答を安定させる小さなスクリプトがあるとする:

python
import anthropic

client = anthropic.Anthropic()

reply = client.messages.create(
    model="<your Claude model>",
    max_tokens=500,
    temperature=0.2,  # <- this line now causes the 400
    messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)

プレーンHTTPでも同じ話だ。バージョンヘッダーを自分で設定する場合、新しい挙動に移行させるのはこの行だ:

bash
curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2026-10-21" \
  -H "content-type: application/json" \
  -d '{"model": "<your Claude model>", "max_tokens": 500, "top_p": 0.9,
       "messages": [{"role": "user", "content": "Hello"}]}'

修正方法: 3つのパラメータを削除する#

すべてのMessagesおよびMessage Batchesリクエストからtemperature、top_p、top_kを削除する。これらがなければ、モデルはデフォルト(temperature 1.0)でサンプリングする。これは、これらを省略した2023-06-01のリクエストとまったく同じだ。

python
reply = client.messages.create(
    model="<your Claude model>",
    max_tokens=500,
    messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)
ビフォーアフター: temperature付きのリクエストは400を返し、それを削除した同じリクエストは通る
temperature削除前と削除後の同じリクエスト

最新のメジャーSDKバージョンとant CLI(2.0.0)にはこれらのパラメータがそもそも存在しないため、アップグレード後はコードから削除する必要がある。400は、anthropic-version: 2026-10-21で送信され、まだ3つのフィールドのいずれかを持つリクエストから発生する。.NETのIChatClientアダプターはより穏やかな方法を取る。ChatOptions.Temperature、TopK、TopPを無視するようになった。言語ごとの正確なSDKバージョン番号は、ガイドの「Upgrade steps」タブにある。

SDKを使わずにAPIを呼び出す場合、バージョンはanthropic-versionヘッダーであり、新しいルールを有効にする値は2026-10-21だ。

削除すると回答は変わるのか?#

モデルによる。ガイドはここで具体的に述べている。

  • Claude 4.7以降はすでにデフォルトのサンプリング値のみを受け付ける。何も変わらない。以前もデフォルトでサンプリングしており、今もそうだ。
  • 他の値を受け付けるモデル、たとえばClaude Sonnet 4.6: より一貫した出力を得るためにtemperatureを下げていた場合、その効果は消え、それを置き換える設定はない。

特定のリクエストが本当に非デフォルト値に依存している場合、ガイドには2つの選択肢がある。パラメータの送信をやめてデフォルトのサンプリングを受け入れるか、その1つのリクエストをanthropic-version: 2023-06-01に固定したままにするかだ。

回答が厳密に一貫している必要があるなら、一貫性をプロンプトに持たせる。固定の出力形式、望む回答の短い例、そしてフォーマット外のものを拒否するコード内のチェックだ。1つの数値より手間はかかるが、サンプリングのつまみに依存しない。

400が表示されたときのクイックチェックリスト#

  1. プロジェクト内でtemperature、top_p、top_kを検索する。ラッパーや共有設定ファイルも含める。
  2. バッチジョブを確認する。このルールは2026-10-21で作成されたMessage Batch内の各リクエストに適用されるため、バッチ内のすべてのリクエストのパラメータを見る。
  3. 何が変わったか確認する。SDKのメジャーバージョン、CLIバージョン、またはanthropic-versionヘッダー。
  4. フィールドを削除するか、非デフォルト値が必要な場合はそのリクエストを2023-06-01に固定する。
  5. 大きなバッチを再起動する前に、1つのリクエストを実行する。

ClaudeとOpenAI形式APIで1つのコードパス#

よくある構成: リクエストを構築し、Anthropic MessagesまたはOpenAI形式のChat Completionsエンドポイントのいずれかに送信する単一のヘルパー。最も簡単な修正はパラメータを分割することだ。temperatureはOpenAI形式の分岐にのみ残し、Messagesの分岐には追加しない。

Chat Completions形式では、この設定は通常のリクエストフィールドだ。CheapTokensでは、OpenAI互換アドレスhttps://api.cheaptokens.dev/v1を通じて機能する。以下はDeepSeek-V4-Flash(380Kコンテキスト、回答あたり最大32,768出力トークン)へのリクエストで、CheapTokensドキュメントの完全なモデルIDを使用している:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "temperature": 0.2,
    "max_tokens": 300,
    "messages": [{"role": "user", "content": "Summarise this ticket in two lines: ..."}]
  }'

このようなリクエストは、入力1,000トークン、出力300トークンで、現在の価格では$0.000045かかる。DeepSeek-V4-Flashは時間帯を問わず1つの価格で、ピーク時間はなく、1つの残高ですべてのモデルをカバーする。390Kコンテキストウィンドウで同じコードパスを使うなら、GLM-5.3-Flash(zai-org/GLM-5.3-Flash、最大8,192出力トークン)もある。すべてのモデルの現在の価格は価格ページにある。

この設定の挙動を確認するには、システムプロンプトとtemperature: それぞれの役割と設定方法を読んでほしい。PythonからClaude形式のMessagesを呼び出すには、Anthropic Python SDKとCheapTokensを参照。ベースアドレスとキーの設定はCheapTokensドキュメントにある。