Usted llama a claude-fable-5, la respuesta parece normal y luego revisa response.model: claude-opus-4-8. Su solicitud activó un clasificador de seguridad, Fable 5 se negó a responder y otro modelo intervino. No es un error: es parte del diseño de Fable 5, y su integración debe manejarlo explícitamente.
En nuestra explicación sobre las salvaguardas de seguridad de Fable 5 cubrimos la arquitectura. Aquí vamos a la implementación: cómo detectar un desvío, cómo usar el parámetro beta fallbacks, cómo registrar costos y cómo probar rechazos antes de producción.
Por qué Fable 5 desvía algunas solicitudes
Claude Fable 5 incluye clasificadores de seguridad delante del modelo. Esos clasificadores revisan solicitudes entrantes en tres dominios:
- Ciberseguridad
- Biología y química
- Destilación de modelos
Cuando un clasificador se activa, Fable 5 rechaza la solicitud. En las interfaces de usuario de Claude, la solicitud puede ser manejada por Claude Opus 4.8 y se informa al usuario. En la API, usted decide cómo recuperarse. Ahí entra fallbacks.
Los clasificadores no son estáticos. Después de la suspensión de junio, Anthropic volvió a entrenar el clasificador contra una técnica de jailbreak reportada; la versión actualizada bloquea más del 99% de los intentos. Fable 5 fue redesplegado el 1 de julio de 2026 con ese clasificador actualizado. Si pausó su integración durante la interrupción, el centro de información Fable 5 está de vuelta resume la línea de tiempo y los cambios.
Un detalle importante: los clasificadores están delante del modelo, no dentro de él. Claude Mythos 5 es el mismo modelo sin clasificadores, con acceso restringido a participantes del Proyecto Glasswing. Más del 95% de las sesiones de Fable no usan fallback; en esas sesiones, el rendimiento de Fable 5 es efectivamente idéntico al de Mythos 5. Puede ver el desglose en Fable 5 vs Mythos 5.
Qué cambia para su aplicación
Fable 5 y Opus 4.8 no son intercambiables desde el punto de vista de ingeniería.
Fable 5 ejecuta una ventana de contexto de 1M de tokens, salida máxima de 128K, y precios de $10 por millón de tokens de entrada y $50 por millón de tokens de salida. Opus 4.8 tiene su propio precio y comportamiento. La descripción general de modelos mantiene las especificaciones actuales.
Un prompt ajustado para Fable 5 puede producir en Opus 4.8:
- Longitudes distintas
- Formatos distintos
- Diferentes patrones de tool calling
- Diferente costo
- Diferente comportamiento en evaluaciones
Use esta regla práctica:
- Chat, asistentes y agentes generales: normalmente puede aceptar la respuesta de Opus 4.8.
- Evaluaciones y pipelines deterministas: no acepte un fallback silencioso; contamina los resultados.
- Extracción estructurada: valide el esquema y registre el modelo que respondió.
-
Costos y cumplimiento: guarde
response.modelyusageen logs. - Dominios cercanos a seguridad o ciencias de la vida: trate el fallback como una ruta normal de código, no como una excepción rara.
Detectar un fallback en código
La señal confiable es response.model.
Si envía una solicitud a claude-fable-5 y recibe una respuesta con model = "claude-opus-4-8", la solicitud fue redirigida.
También debe revisar:
-
stop_reason: indica si la solicitud fue rechazada. -
usage: permite atribuir tokens y costos al modelo correcto.
Ejemplo básico en Python:
response = client.messages.create(
model="claude-fable-5",
max_tokens=16000,
messages=[
{
"role": "user",
"content": prompt,
}
],
)
if response.stop_reason == "refusal":
# Rechazo sin fallback configurado.
# No asuma que response.content contiene una respuesta útil.
handle_refusal(response)
elif not response.model.startswith("claude-fable-5"):
logger.info(
"fallback served_by=%s input_tokens=%d output_tokens=%d",
response.model,
response.usage.input_tokens,
response.usage.output_tokens,
)
handle_fallback_response(response)
else:
handle_fable_response(response)
Si está conectando la API desde cero, primero siga la guía sobre cómo usar la API de Claude Fable 5 y luego agregue esta verificación.
Usar el parámetro fallbacks
Sin fallbacks, una solicitud rechazada se detiene. Usted recibe el rechazo y debe decidir si reintentar del lado del cliente.
Con fallbacks, la API vuelve a ejecutar la misma solicitud en un modelo alternativo dentro de la misma llamada. En el lanzamiento, el único destino de fallback compatible es claude-opus-4-8.
El parámetro está en beta en la API de Claude y en la Plataforma Claude en AWS, documentado en la página de rechazos y fallbacks de Anthropic.
Ejemplo:
response = client.beta.messages.create(
model="claude-fable-5",
max_tokens=16000,
betas=["server-side-fallback-2026-06-01"],
fallbacks=[
{
"model": "claude-opus-4-8",
}
],
messages=[
{
"role": "user",
"content": prompt,
}
],
)
print(response.model)
# claude-fable-5 si respondió Fable 5
# claude-opus-4-8 si la solicitud fue redirigida
La facturación funciona así:
- Si Fable 5 rechaza antes de generar salida, ese intento no se factura.
- Si Opus 4.8 responde como fallback, paga las tarifas normales de Opus 4.8.
- No se le factura dos veces por la misma respuesta.
Aun con fallbacks, mantenga la rama de rechazo:
if response.stop_reason == "refusal":
handle_refusal(response)
Esto importa porque el modelo de fallback también puede negarse.
Limitaciones actuales:
-
fallbackses rechazado en la API de Lotes. - No está disponible en Amazon Bedrock, Google Vertex AI ni Microsoft Foundry.
- En esas plataformas, debe implementar el reintento del lado del cliente.
Implementar una política de manejo
La parte técnica es simple: detectar, registrar y decidir. La parte de producto es definir qué hacer cuando ocurre el fallback.
Opción 1: aceptar la respuesta de Opus
Recomendada para:
- Chatbots
- Asistentes
- Agentes generales
- Generación de texto no determinista
Implementación:
if response.model == "claude-opus-4-8":
logger.info("fallback_accepted", extra={"model": response.model})
return response.content
El usuario recibe respuesta en un solo round trip.
Opción 2: reintentar con una solicitud modificada
Recomendada para pipelines donde importa más la consistencia que la latencia.
No reenvíe el mismo prompt a Fable 5. Si el clasificador lo rechazó una vez, probablemente lo rechazará otra vez.
Opciones más útiles:
- Reformular el prompt para alejarlo del disparador.
- Enviar todo el trabajo directamente a Opus 4.8.
- Poner el caso en cola para revisión humana.
Ejemplo de estructura:
if response.stop_reason == "refusal":
revised_prompt = rewrite_prompt_for_safety(prompt)
retry = client.messages.create(
model="claude-fable-5",
max_tokens=16000,
messages=[
{
"role": "user",
"content": revised_prompt,
}
],
)
return retry
Opción 3: mostrar el modelo al usuario
Recomendada cuando:
- El cliente paga específicamente por Fable 5.
- El cumplimiento exige trazabilidad.
- El usuario debe decidir si aceptar una respuesta de otro modelo.
Ejemplo de UI:
Esta respuesta fue generada por claude-opus-4-8 porque claude-fable-5 rechazó la solicitud original.
Registrar métricas mínimas
Como mínimo, registre estos campos por llamada:
{
"requested_model": "claude-fable-5",
"served_model": "claude-opus-4-8",
"stop_reason": "end_turn",
"input_tokens": 1240,
"output_tokens": 380,
"fallback": true
}
Luego calcule:
fallback_rate = fallback_count / total_requests
refusal_rate = refusal_count / total_requests
Interpretación práctica:
- Una tasa cercana a cero coincide con la línea base esperada.
- Una tasa de algunos puntos porcentuales puede indicar prompts demasiado cercanos a dominios disparadores.
- Una tasa alta requiere revisión de prompts, rutas de usuario o política de modelo.
Probar rutas de rechazo antes de producción
Los rechazos son raros por diseño. Eso significa que el código puede funcionar en una demo y fallar semanas después en producción.
Debe probar tres escenarios:
- Prompt benigno que debe quedarse en
claude-fable-5. - Prompt de caso extremo que puede activar fallback.
- Prompt que puede terminar en
stop_reason: "refusal".
Apidog lo hace práctico:
- Defina el endpoint de Claude Messages.
- Guarde la clave API en una variable de entorno.
- Cree una colección con prompts benignos y casos extremos.
- Agregue aserciones sobre
model. - Agregue aserciones sobre
stop_reason. - Ejecute la colección en CI o con horario.
Ejemplo de aserciones:
pm.test("La respuesta incluye el modelo servido", function () {
pm.expect(pm.response.json()).to.have.property("model");
});
pm.test("No hay rechazo inesperado", function () {
const body = pm.response.json();
pm.expect(body.stop_reason).to.not.eql("refusal");
});
pm.test("El modelo servido es conocido", function () {
const body = pm.response.json();
pm.expect([
"claude-fable-5",
"claude-opus-4-8"
]).to.include(body.model);
});
Cuando Anthropic reentrena el clasificador, como antes del redespliegue del 1 de julio, su suite le dirá rápidamente si sus casos extremos siguen comportándose como espera su código.
Preguntas frecuentes
¿El parámetro fallbacks tiene costo adicional?
No. Si Fable 5 rechaza antes de producir salida, ese intento no se factura. Si el modelo de fallback responde, paga las tarifas normales por token de ese modelo. No se le factura dos veces por la misma respuesta.
¿Los prompts relacionados con seguridad siempre activan fallback?
No. Los clasificadores apuntan a solicitudes dañinas en ciberseguridad, biología y química, y destilación de modelos. No bloquean esos temas por sí mismos. La mayor parte del trabajo de ingeniería de seguridad pasa sin fallback.
¿Debo registrar siempre response.model?
Sí. Es la forma más simple de saber qué modelo produjo la salida, atribuir costos y depurar cambios de comportamiento.
Me cambié de Fable 5 durante la suspensión de junio. ¿Es seguro volver?
Sí. Con el redespliegue del 1 de julio, el clasificador reentrenado está activo y la superficie de la API no cambió. La guía sobre cómo volver a la API de Fable 5 explica cómo reactivarla. Al volver, agregue fallbacks y pruebas de rechazo.
Conclusión
Los desvíos de Fable 5 son una decisión de diseño, no un incidente. Impleméntelos como una ruta normal:
- Revise
response.modelen cada llamada. - Mantenga una rama para
stop_reason == "refusal". - Use
fallbackssalvo que tenga una razón para no hacerlo. - Registre tokens, modelo solicitado y modelo servido.
- Defina si acepta Opus 4.8, reintenta o informa al usuario.
- Pruebe prompts benignos y casos extremos en CI.
Cree esa suite en Apidog, afirme sobre model y stop_reason, y ejecútela antes de que un usuario real encuentre el borde. Descargue Apidog y puede tener la ruta de rechazo validada antes de su próxima implementación.


Top comments (0)