Cargando
Demos en vivo

Error: «This model does not support assistant message prefill»

This model does not support assistant message prefill. The conversation must end with a user message.

Este error 400 sale al migrar de Claude Sonnet 4.5 (o Haiku 4.5) a claude-sonnet-5-5: tu código acaba la conversación con un mensaje del asistente para «empujar» el formato de la respuesta, y los modelos nuevos ya no lo aceptan. La conversación tiene que acabar con un mensaje del usuario.

Comprobado el

Ejemplo: lo que dice la ficha del modelo del error

claude-sonnet-4-5 Anthropic

Fecha de apagado: 30 de noviembre de 2026

Sustituto oficial: claude-sonnet-5-5

Qué cambia en tu código

  • Cambia model por claude-sonnet-5-5 (o el sustituto de la tabla).
  • Sonnet 5.5 piensa por defecto si no envías thinking. Para responder sin pensar antes, como Sonnet 4.5, envía thinking: {"type": "between_tools"} con un esfuerzo low, medium o high. {"type": "disabled"} da error 400.
  • Pon output_config.effort explícito, y sube max_tokens si activas el pensamiento: lo incluye.
  • temperature, top_p y top_k con un valor que no sea el de por defecto dan error 400: quítalos.
  • El prefill (acabar la conversación con un mensaje del asistente) da error 400: usa salidas estructuradas o explica el formato en el prompt.
  • Lee la respuesta por tipo de bloque (type == "text"), no por posición: puede llegar un bloque thinking delante.

Código de ejemplo

Python
import anthropic
client = anthropic.Anthropic()  # lee ANTHROPIC_API_KEY del entorno

msg = client.messages.create(
    model="claude-sonnet-5-5",                       # antes: "claude-sonnet-4-5"
    max_tokens=4096,
    thinking={"type": "between_tools"},  # sin pensar antes de responder, como antes
    output_config={"effort": "medium"},
    # sin temperature, top_p ni top_k: dan error 400
    messages=[{"role": "user", "content": "Hola"}],
)
text = "".join(b.text for b in msg.content if b.type == "text")
Node.js
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic(); // lee ANTHROPIC_API_KEY del entorno

const msg = await client.messages.create({
  model: "claude-sonnet-5-5",                       // antes: "claude-sonnet-4-5"
  max_tokens: 4096,
  thinking: { type: "between_tools" },  // sin pensar antes de responder, como antes
  output_config: { effort: "medium" },
  // sin temperature, top_p ni top_k: dan error 400
  messages: [{ role: "user", content: "Hola" }],
});
const text = msg.content.filter((b) => b.type === "text").map((b) => b.text).join("");

Fuentes: Anthropic · Model deprecations · Claude Sonnet 5.5 migration guide

Más sobre este cambio →

Te avisamos antes de que se apague tu modelo

Un email 30 días antes y otro 7 días antes de la fecha oficial, con el sustituto y lo que cambia en el código. Gratis, sin cuenta y sin publicidad.

¿Qué modelos usa tu app?
Más modelos (43)

¿Usas más de un modelo? Pega tu código en el comprobador gratuito.

Abrir el comprobador

¿Tienes un repositorio entero? Revísalo de una vez desde la terminal, sin instalar nada:

npx -y github:ericc2005t/ai-model-sunset

El código, en GitHub →

Preguntas

¿Cómo consigo entonces el formato que quería?
Si el prefill era para obtener JSON o un formato fijo, usa salidas estructuradas (o una herramienta con campos fijos). Si era para el tono o el arranque de la frase, descríbelo en el prompt.
¿Hay más errores de este tipo al migrar?
Sí: temperature, top_p o top_k distintos del valor por defecto, thinking: {"type": "disabled"}, los presupuestos de pensamiento (budget_tokens) y forzar una herramienta concreta también dan 400 en Sonnet 5.5.

¿Prefieres que te lo arregle yo? Cambio de modelo, 79 €; migración completa, 290–490 €. Te respondo en 24 h con el precio cerrado.

Pide el arreglo: te respondo en 24 h

Sin llamadas y sin pagar nada aquí. Cuéntame qué usa tu app y qué falla: te respondo por escrito en 24 h con el precio cerrado y el plazo.

Qué necesitas