ガイド一覧へ戻る
トラブルシューティング·2026年9月23日·読了6分

「`temperature` and `top_p` cannot both be specified for this model」 — どちらか一方を送信し、新しいClaudeモデルではどちらも送信しない

2つのうち1つだけを送信してください。AnthropicはClaude Haiku 4.5についてこのルールを文書化しており、開発者はClaude Opus 4.6とSonnet 4.6でも同じ400エラーに遭遇しています。Claude Opus 4.7以降では、ルールがさらに厳格になり、どちらも送信できません。多くの場合の原因は、設定していないパラメーターをクライアントやフレームワークが補完していることです。

最終確認日:。

2つのうち1つだけを送信してください。AnthropicはClaude Haiku 4.5についてこのルールを文書化しており、開発者はClaude Opus 4.6とSonnet 4.6でも同じ400エラーに遭遇しています。Claude Opus 4.7以降では、ルールがさらに厳格になり、どちらも送信できません。多くの場合の原因は、設定していないパラメーターをクライアントやフレームワークが補完していることです。

エラー

Anthropic APIレスポンス(HTTP 400)
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "`temperature` and `top_p` cannot both be specified for this model. Please use only one."
  },
  "request_id": "req_..."
}

原因と対処法の概要

原因対処法
あなたのコード、またはその下で動作するフレームワークが両方を送信しています意図したほうだけを送信し、もう一方のキーを削除してください。
もう一方がtop_p: 1などの「中立的な」デフォルト値になっています同じように失敗すると報告されています。正規化するのではなく、キーを削除してください。
古いLangChain JSまたはn8nのビルドアップグレードしてください:@langchain/anthropic 1.3.24以降、n8n 1.114.1以降。
LiteLLMが両方をそのまま渡しているそのモデルにadditional_drop_params: ["top_p"]を追加してください。
Claude Opus 4.7以降、Sonnet 5、またはFable 5に移行したこの場合はルールがより厳格です。両方を削除してください — どちらか一方でもデフォルト以外の値は拒否されます。

このルールを適用するClaudeモデル(2026年9月時点)

AnthropicのHaiku 4.5移行ガイド:temperatureまたはtop_pの一方だけを使用し、両方は使用しないでください — 両方を設定するとClaude Haiku 4.5で400が返されます。これはClaude 3.x向けのコードに対する破壊的変更です(https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide)。AnthropicのAPIリリースノートでは、2025年8月5日のClaude Opus 4.1のリリース時にも同じルールが示されており、このモデルは現在廃止されています(https://platform.claude.com/docs/en/release-notes/api)。AWSはBedrock上のClaude Sonnet 4.5とClaude Haiku 4.5についてこのルールを明記しています(https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages-request-response.html)。4.6モデルについてこのルールを明記したAnthropicのページは見つかりませんでしたが、開発者はClaude Opus 4.6(OpenHands issue #12846)とClaude Sonnet 4.6(opencommit issue #566)でこの正確な400エラーを報告しています。Claude Opus 4.7以降については以下で説明します。そこでは、1つでも多すぎます。

1つだけ送信し、もう一方のキーを削除する

特別な理由がない限りtemperatureを使用してください。AnthropicのAPIリファレンスでは、top_pは高度なユースケースにのみ推奨されています(https://platform.claude.com/docs/en/api/messages)。2つ目のキーを中立だと思う値に設定するのではなく、削除してください。開発者は、Claude Sonnet 4.5でtemperature 0.3と同時にtop_p 1.0を設定しても失敗したと報告しています(n8n issue #18304)。

one_knob.py
from openai import OpenAI

client = OpenAI(base_url="https://api.kunavo.com/v1", api_key="sk-kn-...")

def one_sampling_knob(params: dict) -> dict:
    """Where the rule applies, send temperature or top_p, not both. Keep temperature."""
    if params.get("temperature") is not None:
        params.pop("top_p", None)
    return params

sampling = one_sampling_knob({"temperature": 0.3, "top_p": 0.9})  # {"temperature": 0.3}

resp = client.chat.completions.create(
    model="claude-haiku-4-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "Classify this support ticket: ..."}],
    **sampling,
)
print(resp.choices[0].message.content)

2つ目を追加しているクライアント側で修正する

LangChain JS:ChatAnthropic 0.3.xは、設定したtop_pとともにデフォルトのtemperatureを送信していました(issue #9258、2025年11月のPR #9362で0.3系に修正)。2026年3月17日に@langchain/anthropic 1.3.24でリリースされたPR #10420では、設定していないサンプリングキーが追加されなくなりました(https://github.com/langchain-ai/langchainjs/pull/10420)。n8n:Anthropic Chat ModelノードはLangChainのデフォルト値(topP -1、temperature 0.7)を渡していました。n8n 1.114.1で修正され、2025年10月2日にリリースされました(https://github.com/n8n-io/n8n/pull/20286)。LiteLLM:additional_drop_paramsで削除するパラメーターを、呼び出しごとまたはモデルごとに指定してください(https://docs.litellm.ai/docs/completion/drop_params) — ただしAnthropicのパススルールートでは、パススルーリクエストは変更されないという理由で報告が終了しています(https://github.com/BerriAI/litellm/issues/15097)。Amazon Bedrock:ConverseのinferenceConfigではtemperatureまたはtopPを、InvokeModelのbodyではtemperatureまたはtop_pを設定してください — 両方は決して設定しないでください(https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InferenceConfiguration.html)。

litellm-config.yaml
model_list:
  - model_name: claude-haiku-4-5
    litellm_params:
      model: openai/claude-haiku-4-5        # Kunavo speaks the OpenAI chat shape
      api_base: https://api.kunavo.com/v1
      api_key: sk-kn-...
      additional_drop_params: ["top_p"]     # keep temperature, never send top_p

Claude Opus 4.7以降では、どちらも送信しない

新しいモデルではさらに厳格です。Claude Opus 4.7以降でtemperature、top_p、top_kのいずれかにデフォルト以外の値を設定すると400が返されます(https://platform.claude.com/docs/en/models/opus-5-5/migration-guide)。Claude Sonnet 5(https://platform.claude.com/docs/en/models/sonnet-5/migration-guide)、Claude Fable 5(https://platform.claude.com/docs/en/models/fable-5/migration-guide)、Fable 5.1(https://platform.claude.com/docs/en/models/fable-5-1/migration-guide)でも同様です。メッセージは変わり、開発者には「`temperature` is deprecated for this model.」と表示されます。AnthropicのAPIリファレンスでは現在、3つすべてのパラメーターに非推奨の印が付いています。Claude Opus 4.6より後にリリースされたモデルでは、後方互換性のためtemperature 1.0またはtop_p 0.99以上のみ受け付け、top_kはどの値でも拒否します(https://platform.claude.com/docs/en/api/messages)。Anthropic Python SDKでは、2026年8月20日にリリースされたv1.0でMessagesメソッドからこれらが削除されました(https://platform.claude.com/docs/en/release-notes/api)。

Kunavo経由で呼び出している場合

Anthropicがサンプリングを削除した7つのclaude-*モデル — claude-fable-5-1、claude-fable-5、claude-opus-5-5、claude-opus-5、claude-opus-4-8、claude-opus-4-7、claude-sonnet-5 — では、Kunavoがゲートウェイを出る前にリクエストからtemperature、top_p、top_kを削除します。/v1/chat/completionsと/v1/messagesのどちらでも同様です。これら7つではこのエラーは表示されませんが、送信した値は効果がありません。リクエストは、値を指定しなかった場合と同じ状態で上流へ送信されます。claude-opus-4-6、claude-sonnet-4-6、claude-haiku-4-5ではKunavoは何も削除しません。チャットトランスレーターは数値のtemperature、top_p、top_kをそのままClaudeリクエストにコピーし、/v1/messagesは送信されたbodyをそのまま転送します。そのため、ここでは2つのうち1つだけを送信してください。上流が両方を拒否した場合、その400は上流のメッセージ本文を変更せずに届き、別のチャネルで再試行されず、コスト0として記録されます。 新しいモデルが拒否するもう1つのリクエストパラメーターについては、 max_tokensとmax_completion_tokensのガイド.

よくある質問

Claudeではtemperatureとtop_pのどちらを使うべきですか?

特別な理由がない限りtemperatureを使用してください。AnthropicのAPIリファレンスではtop_pは高度なユースケースにのみ推奨されており、Claude Opus 4.7以降ではどちらもデフォルト以外の値に設定できません。

top_p = 1は未設定として扱われますか?

そうとは限りません。開発者は、Claude Sonnet 4.5でtemperatureと同時にtop_pを1.0に設定した場合にも同じ400が返されたと報告しています(n8n issue #18304)。中立に見える値を設定するのではなく、キーを削除してください。

n8nやLangChainが設定していないtop_pを送信するのはなぜですか?

どちらもデフォルト値を渡していました。n8nのAnthropic Chat Modelノードは1.114.1までLangChainのデフォルト値(topP -1、temperature 0.7)を送信し、LangChain JS 0.3.xのChatAnthropicは設定したtop_pとともにデフォルトのtemperatureを送信していました。アップグレードしてください:n8n 1.114.1以降、@langchain/anthropic 1.3.24以降。

「`temperature` is deprecated for this model」とはどういう意味ですか?

これはClaude Opus 4.7以降、Sonnet 5、Fable 5および5.1で適用されるより厳格なルールです。これらのモデルはデフォルト以外のサンプリング値を完全に拒否します。パラメーターを削除してください。Kunavo経由では、提供しているモデルについてこれらが削除されるため、呼び出しは成功します。

拒否されたリクエストにKunavoで料金はかかりますか?

いいえ。上流が拒否したリクエストはコスト0として記録されます。

関連ガイド

エラーの詳しい意味はエラーリファレンスをご覧ください。キーは新規登録と認証ガイドから1分で取得できます。