Envía solo uno de los dos. Anthropic documenta la regla para Claude Haiku 4.5, los desarrolladores encuentran el mismo error 400 en Claude Opus 4.6 y Sonnet 4.6, y en Claude Opus 4.7 y posteriores la regla se endurece: no se permite ninguno. A menudo el culpable es un cliente o framework que rellena el parámetro que nunca estableciste.
El error
{
"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_..."
}Causas y soluciones de un vistazo
| Causa | Solución |
|---|---|
| Tu código, o un framework que utiliza, envía ambos | Envía solo el que quieres usar y elimina la otra clave. |
| El segundo es un valor predeterminado «neutro», como top_p: 1 | Se ha informado del mismo fallo. Elimina la clave en lugar de normalizarla. |
| Una versión antigua de LangChain JS o de n8n | Actualización: @langchain/anthropic 1.3.24 o posterior, n8n 1.114.1 o posterior. |
| LiteLLM pasa ambos parámetros | Añade additional_drop_params: ["top_p"] a ese modelo. |
| Has pasado a Claude Opus 4.7 o posterior, Sonnet 5 o Fable 5 | Regla más estricta aquí: elimina ambos; cualquier valor no predeterminado de cualquiera de los dos se rechaza. |
Qué modelos Claude la aplican (a septiembre de 2026)
Guía de migración de Anthropic para Haiku 4.5: usa solo temperature o top_p, no ambos; establecer ambos devuelve un 400 en Claude Haiku 4.5, un cambio incompatible para el código procedente de Claude 3.x (https://platform.claude.com/docs/en/models/haiku-4-5/migration-guide). Las notas de la versión de la API de Anthropic señalaron la misma regla en el lanzamiento de Claude Opus 4.1, el 5 de agosto de 2025, un modelo retirado desde entonces (https://platform.claude.com/docs/en/release-notes/api). AWS la especifica para Claude Sonnet 4.5 y Claude Haiku 4.5 en Bedrock (https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages-request-response.html). No encontramos ninguna página de Anthropic que indique la regla para los modelos 4.6, pero los desarrolladores informan de este mismo 400 con Claude Opus 4.6 (incidencia n.º 12846 de OpenHands) y Claude Sonnet 4.6 (incidencia n.º 566 de opencommit). Claude Opus 4.7 y posteriores están cubiertos más abajo: ahí, uno ya es demasiado.
Envía uno y elimina la otra clave
Conserva temperature salvo que tengas un motivo para no hacerlo: la referencia de la API de Anthropic describe top_p como recomendado solo para casos de uso avanzados (https://platform.claude.com/docs/en/api/messages). Elimina la segunda clave en lugar de establecerla en un valor que consideres neutro; un desarrollador informó de que un top_p de 1.0 junto a una temperature de 0.3 seguía fallando en Claude Sonnet 4.5 (incidencia n.º 18304 de n8n).
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)Corrígelo en el cliente que añade el segundo parámetro
LangChain JS: ChatAnthropic 0.3.x enviaba una temperature predeterminada junto al top_p que establecías (incidencia n.º 9258, corregida en la línea 0.3 mediante el PR n.º 9362 en noviembre de 2025), y el PR n.º 10420, publicado en @langchain/anthropic 1.3.24 el 17 de marzo de 2026, evita que añada cualquier clave de muestreo que dejes sin establecer (https://github.com/langchain-ai/langchainjs/pull/10420). n8n: el nodo Anthropic Chat Model pasaba los valores predeterminados de LangChain (topP -1, temperature 0.7); corregido en n8n 1.114.1, publicado el 2 de octubre de 2025 (https://github.com/n8n-io/n8n/pull/20286). LiteLLM: indica el parámetro que quieres eliminar con additional_drop_params, por llamada o por modelo (https://docs.litellm.ai/docs/completion/drop_params), excepto en su ruta de paso directo de Anthropic, donde el informe se cerró porque las solicitudes de paso directo no se modifican (https://github.com/BerriAI/litellm/issues/15097). Amazon Bedrock: establece temperature o topP en Converse inferenceConfig, o temperature o top_p en el cuerpo de InvokeModel; nunca ambos (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_pEn Claude Opus 4.7 y posteriores, no envíes ninguno
Los modelos más recientes van más allá. Establecer temperature, top_p o top_k en cualquier valor no predeterminado en los modelos Claude Opus 4.7 y posteriores devuelve un 400 (https://platform.claude.com/docs/en/models/opus-5-5/migration-guide); lo mismo ocurre con Claude Sonnet 5 (https://platform.claude.com/docs/en/models/sonnet-5/migration-guide) y se aplica también a Claude Fable 5 (https://platform.claude.com/docs/en/models/fable-5/migration-guide) y Fable 5.1 (https://platform.claude.com/docs/en/models/fable-5-1/migration-guide). El mensaje cambia: los desarrolladores ven “`temperature` is deprecated for this model.”; la referencia de la API de Anthropic ahora marca los tres parámetros como obsoletos: en los modelos publicados después de Claude Opus 4.6 acepta únicamente una temperature de 1.0 o un top_p de 0.99 o superior, por compatibilidad retroactiva, y rechaza top_k con cualquier valor (https://platform.claude.com/docs/en/api/messages). El SDK de Python de Anthropic los eliminó de sus métodos Messages en la v1.0, publicada el 20 de agosto de 2026 (https://platform.claude.com/docs/en/release-notes/api).
Si llamas a través de Kunavo
En los siete modelos claude-* en los que Anthropic eliminó el muestreo — claude-fable-5-1, claude-fable-5, claude-opus-5-5, claude-opus-5, claude-opus-4-8, claude-opus-4-7 y claude-sonnet-5 — Kunavo elimina temperature, top_p y top_k de la solicitud antes de que salga de la puerta de enlace, tanto en /v1/chat/completions como en /v1/messages. No verás este error con esos siete, pero los valores que enviaste no tienen efecto: la solicitud se envía al proveedor como si los hubieras omitido. En claude-opus-4-6, claude-sonnet-4-6 y claude-haiku-4-5 Kunavo no elimina nada: el traductor de chat copia cualquier valor numérico de temperature, top_p o top_k en la solicitud de Claude sin cambios, y /v1/messages reenvía el cuerpo tal como lo enviaste, así que allí debes enviar uno de los dos. Si el proveedor rechaza el par, su 400 te llega con el texto del mensaje del proveedor sin cambios, no se reintenta por otro canal y se registra con coste cero. Otro parámetro de solicitud que los modelos más recientes rechazan se trata en la guía sobre max_tokens frente a max_completion_tokens.
Preguntas frecuentes
¿Debo usar temperature o top_p con Claude?
Temperature, salvo que tengas un motivo específico. La referencia de la API de Anthropic recomienda top_p solo para casos de uso avanzados y, en Claude Opus 4.7 y posteriores, ninguno de los dos puede establecerse en un valor no predeterminado.
¿top_p = 1 cuenta como no establecerlo?
No cuentes con ello. Un desarrollador informó del mismo 400 con top_p en 1.0 junto a una temperature en Claude Sonnet 4.5 (incidencia n.º 18304 de n8n). Elimina la clave en lugar de establecerla en un valor que parezca neutro.
¿Por qué n8n o LangChain envían top_p si nunca lo establecí?
Ambos pasaban los valores predeterminados. El nodo Anthropic Chat Model de n8n enviaba los valores predeterminados de LangChain (topP -1, temperature 0.7) hasta la versión 1.114.1, y ChatAnthropic de LangChain JS 0.3.x enviaba una temperature predeterminada junto al top_p que establecías. Actualiza: n8n 1.114.1 o posterior, @langchain/anthropic 1.3.24 o posterior.
¿Qué significa “`temperature` is deprecated for this model”?
Es la regla más estricta en Claude Opus 4.7 y posteriores, Sonnet 5 y Fable 5 y 5.1: esos modelos rechazan directamente los valores de muestreo no predeterminados. Elimina los parámetros. A través de Kunavo, los modelos que servimos los tienen eliminados, por lo que la llamada se procesa.
¿Cuesta algo una solicitud rechazada en Kunavo?
No. Una solicitud que el proveedor rechaza se registra con coste cero.
Guías relacionadas
- «Este modelo no admite el prellenado de mensajes del asistente»: qué modelos Claude dejaron de admitir el prellenado y qué lo sustituye
- «Unsupported parameter: 'max_tokens' is not supported with this model»: usa max_completion_tokens
- Coste de la API de IA de n8n: una ejecución, muchas llamadas al modelo, dos facturas
- API de Claude: guía completa para llamar a Claude en Kunavo
Encontrarás más detalles sobre el significado de los errores en referencia de errores; obtener una clave lleva un minuto mediante registro y la guía de autenticación.