Volver a las guías
Solución de problemas·23 de septiembre de 2026·6 min de lectura

«`temperature` y `top_p` no pueden especificarse simultáneamente para este modelo»; envía uno y, en los modelos Claude más recientes, ninguno

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.

Última revisión: .

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

Respuesta de la API de Anthropic (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_..."
}

Causas y soluciones de un vistazo

CausaSolución
Tu código, o un framework que utiliza, envía ambosEnvía solo el que quieres usar y elimina la otra clave.
El segundo es un valor predeterminado «neutro», como top_p: 1Se ha informado del mismo fallo. Elimina la clave en lugar de normalizarla.
Una versión antigua de LangChain JS o de n8nActualización: @langchain/anthropic 1.3.24 o posterior, n8n 1.114.1 o posterior.
LiteLLM pasa ambos parámetrosAñade additional_drop_params: ["top_p"] a ese modelo.
Has pasado a Claude Opus 4.7 o posterior, Sonnet 5 o Fable 5Regla 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).

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)

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).

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

En 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

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.