Envoyez l’un des deux. Anthropic documente cette règle pour Claude Haiku 4.5, les développeurs rencontrent la même erreur 400 avec Claude Opus 4.6 et Sonnet 4.6, et avec Claude Opus 4.7 et les versions ultérieures, la règle devient : aucun des deux. Le coupable est souvent un client ou un framework qui renseigne le paramètre que vous n’avez jamais défini.
L’erreur
{
"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_..."
}Causes et solutions en bref
| Cause | Solution |
|---|---|
| Votre code, ou un framework utilisé en dessous, envoie les deux | Envoyez uniquement celui que vous voulez et supprimez l’autre clé. |
| Le second est une valeur par défaut « neutre », telle que top_p: 1 | Il est signalé comme échouant tout de même. Supprimez la clé au lieu de la normaliser. |
| Une ancienne version de LangChain JS ou de n8n | Mettez à niveau : @langchain/anthropic 1.3.24 ou ultérieur, n8n 1.114.1 ou ultérieur. |
| LiteLLM transmet les deux paramètres | Ajoutez additional_drop_params: ["top_p"] à ce modèle. |
| Vous êtes passé à Claude Opus 4.7 ou ultérieur, Sonnet 5 ou Fable 5 | Règle plus stricte : supprimez les deux ; toute valeur non par défaut de l’un ou l’autre est refusée. |
Quels modèles Claude l’appliquent (en septembre 2026)
Le guide de migration Haiku 4.5 d’Anthropic indique d’utiliser uniquement temperature ou top_p, et non les deux — la définition des deux renvoie une erreur 400 avec Claude Haiku 4.5, ce qui constitue une rupture pour le code provenant de Claude 3.x (https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide). Les notes de version de l’API Anthropic signalaient déjà la même règle lors du lancement de Claude Opus 4.1, le 5 août 2025, modèle depuis retiré (https://platform.claude.com/docs/en/release-notes/api). AWS l’indique pour Claude Sonnet 4.5 et Claude Haiku 4.5 sur Bedrock (https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages-request-response.html). Nous n’avons trouvé aucune page Anthropic énonçant la règle pour les modèles 4.6, mais des développeurs signalent exactement cette erreur 400 avec Claude Opus 4.6 (problème OpenHands #12846) et Claude Sonnet 4.6 (problème opencommit #566). Claude Opus 4.7 et les versions ultérieures sont couverts ci-dessous : dans ce cas, un seul paramètre est déjà de trop.
Envoyez-en un — et supprimez l’autre clé
Conservez temperature sauf raison particulière : la référence de l’API Anthropic décrit top_p comme recommandé uniquement pour les cas d’utilisation avancés (https://platform.claude.com/docs/en/api/messages). Supprimez la seconde clé au lieu de lui attribuer une valeur que vous pensez neutre — un développeur a signalé qu’un top_p de 1.0 associé à une temperature de 0.3 échouait toujours avec Claude Sonnet 4.5 (problème n8n #18304).
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)Corrigez-le dans le client qui ajoute le second paramètre
LangChain JS : ChatAnthropic 0.3.x envoyait une température par défaut en plus du top_p que vous aviez défini (problème n°9258, corrigé dans la branche 0.3 par la PR n°9362 en novembre 2025), et la PR n°10420, publiée dans @langchain/anthropic 1.3.24 le 17 mars 2026, l’empêche d’ajouter toute clé d’échantillonnage que vous laissez non définie (https://github.com/langchain-ai/langchainjs/pull/10420). n8n : le nœud Anthropic Chat Model transmettait les valeurs par défaut de LangChain (topP -1, température 0.7) ; corrigé dans n8n 1.114.1, publié le 2 octobre 2025 (https://github.com/n8n-io/n8n/pull/20286). LiteLLM : indiquez le paramètre à supprimer avec additional_drop_params, par appel ou par modèle (https://docs.litellm.ai/docs/completion/drop_params) — sauf sur sa route de relais Anthropic, où le rapport a été clôturé au motif que les requêtes relayées ne sont pas modifiées (https://github.com/BerriAI/litellm/issues/15097). Amazon Bedrock : définissez temperature ou topP dans inferenceConfig de Converse, ou temperature ou top_p dans le corps d’InvokeModel — jamais les deux (https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InferenceConfiguration.html).
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_pAvec Claude Opus 4.7 et les versions ultérieures, n’envoyez ni l’un ni l’autre
Les modèles plus récents vont plus loin. Définir temperature, top_p ou top_k sur une valeur non par défaut avec les modèles Claude Opus 4.7 et ultérieurs renvoie une erreur 400 (https://platform.claude.com/docs/en/models/opus-5-5/migration-guide) ; il en va de même pour Claude Sonnet 5 (https://platform.claude.com/docs/en/models/sonnet-5/migration-guide), puis pour Claude Fable 5 (https://platform.claude.com/docs/en/models/fable-5/migration-guide) et Fable 5.1 (https://platform.claude.com/docs/en/models/fable-5-1/migration-guide). Le message change — les développeurs voient « `temperature` is deprecated for this model. » — et la référence API d’Anthropic marque désormais les trois paramètres comme obsolètes : pour les modèles publiés après Claude Opus 4.6, elle accepte uniquement une temperature de 1.0 ou un top_p de 0.99 ou plus, pour la rétrocompatibilité, et rejette top_k quelle que soit sa valeur (https://platform.claude.com/docs/en/api/messages). Le SDK Python d’Anthropic les a supprimés de ses méthodes Messages en v1.0, publiée le 20 août 2026 (https://platform.claude.com/docs/en/release-notes/api).
Si vous appelez via Kunavo
Pour les sept modèles claude-* sur lesquels Anthropic a supprimé l’échantillonnage — claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7 et claude-sonnet-5 — Kunavo supprime temperature, top_p et top_k de la requête avant qu’elle ne quitte la passerelle, aussi bien sur /v1/chat/completions que sur /v1/messages. Vous ne verrez pas cette erreur avec ces sept modèles, mais les valeurs que vous avez envoyées n’ont aucun effet : la requête est transmise en amont comme si vous les aviez omises. Pour claude-opus-4-6, claude-sonnet-4-6 et claude-haiku-4-5, Kunavo ne supprime rien : le traducteur de chat copie toute valeur numérique de temperature, top_p ou top_k dans la requête Claude sans modification, et /v1/messages transmet votre corps tel quel ; envoyez donc un seul des deux. Si le service en amont rejette la paire, son erreur 400 vous est transmise avec le texte du message inchangé, n’est pas réessayée sur un autre canal et est enregistrée avec un coût nul. Un autre paramètre de requête que les modèles plus récents rejettent est traité dans le guide max_tokens contre max_completion_tokens.
Questions fréquentes
Dois-je utiliser temperature ou top_p avec Claude ?
Temperature, sauf si vous avez une raison précise. La référence API d’Anthropic recommande top_p uniquement pour les cas d’usage avancés, et avec Claude Opus 4.7 et les versions ultérieures, aucun des deux ne peut être défini sur une valeur non par défaut.
top_p = 1 est-il considéré comme non défini ?
Ne comptez pas dessus. Un développeur a signalé la même erreur 400 avec top_p à 1.0 en même temps qu’une température sur Claude Sonnet 4.5 (problème n°18304 de n8n). Supprimez la clé au lieu de la définir sur une valeur qui semble neutre.
Pourquoi n8n ou LangChain envoie-t-il top_p alors que je ne l’ai jamais défini ?
Les deux transmettaient des valeurs par défaut. Le nœud Anthropic Chat Model de n8n envoyait les valeurs par défaut de LangChain (topP -1, température 0.7) jusqu’à la version 1.114.1, et ChatAnthropic de LangChain JS 0.3.x envoyait une température par défaut en plus du top_p que vous aviez défini. Mettez à niveau : n8n 1.114.1 ou version ultérieure, @langchain/anthropic 1.3.24 ou version ultérieure.
Que signifie « `temperature` is deprecated for this model » ?
Il s’agit de la règle plus stricte applicable à Claude Opus 4.7 et aux versions ultérieures, à Sonnet 5 et à Fable 5 et 5.1 : ces modèles rejettent directement les valeurs d’échantillonnage non par défaut. Supprimez les paramètres. Via Kunavo, ceux que nous proposons les voient supprimés, et l’appel passe donc.
Une requête rejetée coûte-t-elle quelque chose sur Kunavo ?
Non. Une requête rejetée par le service en amont est enregistrée avec un coût nul.
Guides associés
- « Ce modèle ne prend pas en charge le préremplissage d’un message assistant » — quels modèles Claude ont supprimé le préremplissage et qu’est-ce qui le remplace ?
- « Unsupported parameter: 'max_tokens' is not supported with this model » — utilisez max_completion_tokens
- Coût de l’API IA n8n : une exécution, de nombreux appels de modèles, deux factures
- API Claude — le guide complet pour appeler Claude sur Kunavo
La sémantique détaillée des erreurs est disponible dans référence des erreurs ; obtenir une clé prend une minute via inscription et la guide d’authentification.