Inicio / La API de Claude para quienes construyen
Roles que se sostienen, no un prerrellenado que rompe
El prerrellenado del turno assistant, una práctica que empezaba la respuesta de Claude en lugar del modelo, ahora es rechazado con un error 400 en los modelos actuales; una instrucción system estable o una salida forzada lo sustituyen.
Completar uno mismo el inicio de la respuesta de Claude, una práctica llamada prerrellenado del turno assistant, ya no funciona en los modelos actuales. Técnicamente, esta práctica añadía al array messages un último mensaje de rol assistant, un contenido parcial sin terminar, a la espera de que Claude continuara ese texto iniciado. El servidor ahora devuelve un error HTTP 400 en cuanto recibe un mensaje así, incluso antes de que empiece la generación.
Los modelos afectados por el rechazo
El rechazo afecta a Claude Opus 5, Claude Sonnet 5, Claude Fable 5.1, Claude Fable 5, así como a las generaciones Claude Opus 4.6, Claude Opus 4.7, Claude Opus 4.8 y Claude Sonnet 4.6. La guía oficial de migración es explícita en este punto: el prerrellenado de mensajes assistant devuelve un error 400 en Claude Opus 4.7 y los modelos siguientes, Claude Opus 5 incluido, y recomienda usar en su lugar salidas estructuradas, una instrucción system, o el campo output_config.format. El rechazo se produce al enviar la petición, lo que evita pagar por una generación que de todos modos no habría tenido lugar.
// Ancienne pratique, refusée par une erreur 400 sur les modèles courants
{
"model": "claude-sonnet-5",
"max_tokens": 200,
"messages": [
{ "role": "user", "content": "Réponds en JSON strict." },
{ "role": "assistant", "content": "{" }
]
}
Qué sustituye al prerrellenado
Una instrucción system estable produce el mismo resultado sin tocar el array messages. Se escribe una vez, fuera de ese array, y se aplica a toda la petición en lugar de a un único turno iniciado a mano.
// Instruction system stable, sans pré remplissage
{
"model": "claude-sonnet-5",
"system": "Réponds toujours en JSON strict, sans texte autour de l'objet.",
"max_tokens": 200,
"messages": [
{ "role": "user", "content": "Donne le statut du service." }
]
}
El campo output_config.format, la otra vía documentada, restringe directamente la forma de la salida en lugar de sugerirla mediante una instrucción textual; su detalle rebasa el alcance de esta lección. Solo queda una excepción, documentada por separado: la reclamación de un crédito de compensación sobre un rechazo acepta un mensaje assistant de eco, un caso particular de la gestión de los rechazos, no una reapertura general del prerrellenado. El array messages conserva además su propia regla, descrita en la estructura de la petición base: cada turno alterna en él su rol.
Tres formas de fijar el formato de una respuesta
| Técnica para orientar el formato de la respuesta | Rechazada con un error 400 en los modelos actuales | Documentada como sustituto oficial |
|---|---|---|
| Prerrellenado del turno assistant | Sí | No |
| Instrucción system estable | No | Sí |
| Campo output_config.format | No | Sí |
Un desarrollador añade un mensaje de rol assistant que contiene una llave de apertura, a continuación de un mensaje de usuario, en el array messages de una petición dirigida a Claude Sonnet 5. El servidor devuelve un código de error 400 antes de que empiece la generación.
Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.
Lo que esto establece: Esto establece que el prerrellenado del turno assistant, un mensaje assistant que empieza la respuesta en lugar de Claude, es rechazado con un error 400 en Claude Sonnet 5.
Lo que esto no establece: Esto no establece si una instrucción system que pidiera el mismo formato habría sido aceptada por el servidor, puesto que este segundo enfoque no se ha probado en esta situación.
Los tres calibrados falsos más frecuentes
- Demasiado amplio Esta situación prueba que Claude Sonnet 5 rechaza todo mensaje cuyo contenido empiece por una llave, sea cual sea su rol.
- Demasiado estrecho Esta situación no prueba nada puesto que solo una petición ha fallado con este formato preciso.
- Fuera de lugar Esta situación muestra que Claude Sonnet 5 tarda más en responder cuando el array messages contiene un mensaje assistant incompleto.
- El prerrellenado del turno assistant devuelve un error HTTP 400 en cuanto el último mensaje del rol assistant contiene un contenido parcial destinado a orientar lo que sigue.
- El rechazo afecta a Claude Opus 5, Claude Sonnet 5, Claude Fable 5.1, Claude Fable 5, y a las generaciones Claude Opus 4.6 a 4.8 así como a Claude Sonnet 4.6.
- La guía oficial de migración nombra tres sustitutos: las salidas estructuradas, una instrucción system, o el campo output_config.format.
- Una instrucción system se escribe una vez fuera del array messages y se aplica a toda la petición, sin depender de un turno assistant iniciado a mano.
- Solo queda una excepción documentada, fuera del alcance de esta práctica: la reclamación de un crédito de compensación sobre un rechazo acepta un mensaje assistant de eco.
Abre el código de tu proyecto y busca cualquier línea que añada un mensaje de rol assistant parcial al final del array messages antes del envío. Traslada la instrucción que llevaba a un campo system separado, y luego relee el resultado sin enviarlo.
Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.
- Anthropic, guía de migración a Claude Opus 5 consultée le 2026-09-02
- Anthropic, rechazos y compensación, la reclamación de un crédito de compensación consultée le 2026-09-02