PTENES
Saltar al contenido
MÓDULO 1.6

⚙️ Esfuerzo y enrutamiento de seguridad

Los 5 niveles de esfuerzo de Fable 5 (y cuándo usar cada uno), cómo funciona el rechazo por seguridad entre bastidores — stop_reason, no un error; y las 3 formas de configurar un fallback a Opus 4.8, con cifras reales de costos para decidir sin adivinar.

6
Temas
~40
Minutos
1.1
Requisito previo
Práctico
Tipo
Progreso: 0% 0 de 6
1

🪜 Los 5 niveles de esfuerzo

🧠 Imagínalo así: effort no es un botón de «tonto/listo»: es un control de cuánto razonamiento dedica el modelo a un problema antes de responder. Cinco niveles, del más rápido al ilimitado.

Claude Fable 5 ofrece cinco niveles de esfuerzo configurables por llamada: low, medium, high, xhigh e max. Cada nivel es una señal de comportamiento —no un límite estricto de tokens— que le indica al modelo cuánto vale la pena deliberar antes de actuar o responder.

Esto es diferente de simplemente truncar la respuesta: en low, Fable 5 todavía piensa lo suficiente para resolver problemas realmente difíciles; solo piensa menos de lo que pensaría sobre el mismo problema en high o xhigh. El nivel adecuado depende del tipo de tarea, no de «cuánto confías en el modelo».

Nivel Descripción oficial Caso de uso típico
low Más eficiente, ahorros significativos Tareas simples que necesitan velocidad y costo mínimo, p. ej., subagents
medium Equilibrio, ahorro moderado Tareas agénticas que necesitan equilibrar velocidad/costo/rendimiento
high (predeterminado) Alta capacidad: equivale a no establecer el parámetro Razonamiento complejo, programación difícil, tareas agénticas
xhigh Capacidad extendida para trabajos de largo horizonte Tareas agénticas/de coding largas (>30min), con presupuestos de millones de tokens
max Capacidad máxima absoluta, sin límite de gasto de tokens Razonamiento más profundo, análisis más completo

Fuente: doc oficial effort — platform.claude.com/docs/en/build-with-claude/effort

más capacidad permitida · más tokens de razonamiento → lowrápido · costo mínimo mediumequilibrio PATRÓN high razonamiento complejo xhighhorizonte largo maxsin límite de tokens

La escala de 5 niveles: cada nivel aumenta la capacidad permitida (línea cian discontinua): high es el nivel destacado porque es lo que recibes sin configurar nada.

En una frase: 5 niveles (low→max), configurables por llamada, donde high es lo que ya tienes hoy si no cambias nada.

2

🔌 Cómo configurar mediante API

El nivel de esfuerzo se incorpora al cuerpo de la llamada mediante output_config, un objeto que acepta un solo campo effort con una de las cinco cadenas. Omitir el campo completo equivale a usar "high" — literalmente, es el valor predeterminado.

Esto significa que cambiar de nivel no exige cambiar de modelo, endpoint ni SDK: es un parámetro más en la misma llamada que ya haces hoy. Puedes variar el nivel según el tipo de llamada dentro del mismo agente; por ejemplo, el orquestador en high y subagents en low.

Objetivo: probar una llamada de rutina en medium antes de asumir que necesitas high.
payload de la Messages API con output_config
{
  "model": "claude-fable-5",
  "max_tokens": 4096,
  "output_config": { "effort": "medium" },
  "messages": [
    { "role": "user", "content": "<isto você troca — descreva a tarefa>" }
  ]
}
Cómo comprobar: ejecuta esta call y compara el campo usage (tokens de salida) y el tiempo de respuesta frente a la misma tarea con "effort": "high". En medium, espera menos tokens de razonamiento y respuestas más rápidas; si la calidad baja para tu tarea, sube un nivel.

💡 Consejo práctico

El mismo campo output_config funciona igual en la Claude API, en Claude Platform on AWS (Bedrock) y en Vertex AI — no hay un parámetro diferente según el proveedor de nube. Esto facilita probar distintos niveles sin reescribir la capa de integración.

En una frase: output_config: {"effort": "..."} en el cuerpo de la llamada — sin parámetro, ya estás en high.

3

🎯 Recomendación oficial para Fable 5

🧭 La escala práctica

Para Fable 5, la pauta recomendada no es «usar siempre el máximo para garantizar la calidad», sino calibrar según el tipo de tarea:

  • •high como predeterminado: cubre la mayoría del trabajo agéntico y de coding difícil, y es lo que ya recibes sin tocar nada.
  • •xhigh para trabajar sensible a las capacidades — sesiones largas (>30min), presupuestos de millones de tokens, donde el límite de razonamiento importa más que la velocidad.
  • •medium/low para la rutina: subagents, tareas sencillas y repetitivas, donde la velocidad y el costo pesan más que la profundidad del razonamiento.

La documentación de Anthropic es explícita sobre lo que hace el parámetro no es: un recortador de presupuesto fijo. Es una señal de comportamiento que el modelo interpreta caso por caso.

EN (oficial)
doc oficial · effort
Effort is a behavioral signal, not a strict token budget. At lower effort
levels, Claude will still think on sufficiently difficult problems, but
it will think less than it would at higher effort levels for the same
problem.
PT-BR (traducción)
traducción libre
Esforço é um sinal comportamental, não um orçamento rígido de tokens.
Em níveis de esforço mais baixos, o Claude ainda vai pensar em problemas
suficientemente difíceis, mas vai pensar menos do que pensaria em níveis
mais altos para o mesmo problema.

Fuente: platform.claude.com/docs/en/build-with-claude/effort

Salvedad importante: poco esfuerzo en Fable 5 no es un «downgrade tonto». Es un modelo de primera línea que opera con menos deliberación; en la práctica, sigue dando resultados sólidos para tareas acordes con su complejidad real. Quienes vienen de Opus 4.8 tienden a sobreestimar el nivel necesario por costumbre.

✓ Qué HACER

  • ✓Dejar high como predeterminado para coding difícil y tareas agénticas habituales.
  • ✓Subir a xhigh solo cuando la tarea es de largo horizonte (>30min, millones de tokens de budget).
  • ✓Bajar a medium/low en subagents, rutinas y tareas simples que solo necesitan velocidad.

✗ Qué EVITAR

  • ✗Suponer que effort un nivel bajo da una respuesta «deficiente» — Fable 5 aún tiene un buen rendimiento en low.
  • ✗Dejar todo en max "por si acaso", sin medir si el beneficio compensa el costo.
  • ✗Nunca compares el mismo prompt en 2 niveles diferentes antes de fijar el estándar de tu app.

En una frase: high por defecto, xhigh para trabajos donde la capacidad es importante, medium/low para la rutina, y un nivel de esfuerzo bajo no es sinónimo de débil.

4

🛡️ El mecanismo de refusal

⚠️ Atención: esto no es un error

Cuando Fable 5 rechaza una solicitud por seguridad, la respuesta HTTP es 200 — éxito — con stop_reason: "refusal" en el cuerpo. No es una excepción, no es un 4xx/5xx, y tu manejo de errores genérico no lo detectará por sí solo. Tienes que comprobar stop_reason explícitamente.

Cuando esto sucede, stop_details.category viene completado con una de cuatro categorías posibles. Ninguna de ellas significa «tu solicitud era maliciosa»: los textos oficiales dejan explícito que el trabajo benigno también puede activar la categoría.

category Qué significa (texto oficial)
cyber "The request could enable cyber harm, such as malware or exploit development. Benign cybersecurity work can also trigger this category."
La solicitud podría facilitar daños cibernéticos (malware/exploit); el trabajo legítimo de ciberseguridad también puede activar el filtro.
bio "The request could enable biological harm, such as dangerous lab methods. Beneficial life sciences work can also trigger this category."
La solicitud podría facilitar daños biológicos; el trabajo beneficioso en ciencias de la vida también puede activar el filtro.
frontier_llm "The request could assist the development of competing AI models, which is restricted under Anthropic's commercial terms. Benign machine learning work can also trigger this category."
La solicitud podría ayudar a desarrollar modelos de IA de la competencia (restringido por las condiciones comerciales); el trabajo benigno de ML también puede activar el filtro.
reasoning_extraction "The request asks the model to reproduce its internal reasoning in the response text. To get reasoning in a structured form instead, use adaptive thinking."
La solicitud pide al modelo que reproduzca su razonamiento interno como texto; usa adaptive thinking para obtenerlo de forma estructurada.

Fuente: doc oficial refusals-and-fallback — platform.claude.com/docs/en/build-with-claude/refusals-and-fallback

La categoría reasoning_extraction merece especial atención porque es la más fácil de activar sin querer: basta con que una skill o un system prompt antiguo le pida al modelo que "muestre el razonamiento" en la respuesta. La propia Anthropic recomienda auditar este tipo de instrucciones al migrar a Fable 5.

EN (oficial)
doc oficial · prompting-claude-fable-5
Don't instruct Claude to reproduce its reasoning in the response. Prompts,
skills, or harness instructions that tell the model to echo, transcribe,
or explain its internal reasoning as response text can trigger the
reasoning_extraction refusal category on Claude Fable 5, causing elevated
fallbacks to Claude Opus 4.8. Audit existing skills and system prompts for
reflection or show-your-thinking instructions when migrating. If your
application needs reasoning visibility, read the structured thinking
blocks from adaptive thinking instead.
PT-BR (traducción)
traducción libre
Não instrua o Claude a reproduzir seu raciocínio na resposta. Prompts,
skills ou instruções de harness que pedem pro modelo ecoar, transcrever ou
explicar seu raciocínio interno como texto de resposta podem disparar a
categoria de recusa reasoning_extraction no Claude Fable 5, causando mais
fallbacks pro Claude Opus 4.8. Audite skills e system prompts existentes
em busca de instruções de reflexão ou de "mostre seu raciocínio" ao
migrar. Se sua aplicação precisa de visibilidade do raciocínio, leia os
blocos de thinking estruturado do adaptive thinking em vez disso.

Cómo comprobar: pega el aviso (EN o PT-BR, da igual: lo leerás tú, no el modelo) como recordatorio en tu proceso de migración, audita las skills/system prompts de tu proyecto en busca de instrucciones como "explica tu razonamiento" o "muestra cómo llegaste a esta respuesta" y elimínalas. La señal de éxito: menos rechazos reasoning_extraction en los registros.

En una frase: la negativa por seguridad es HTTP 200 con stop_reason: "refusal" + 1 de 4 categorías — nunca una excepción de red.

5

🧾 Billing de un rechazo + cómo configurar el fallback

📐 Regla de facturación

  • Rechazo antes de cualquier salida — no se cobra. El campo usage aparece en la respuesta, pero no genera cargos ni consume el rate limit.
  • Rechazo a mitad del stream — cobra el input y el output ya generado hasta el punto del rechazo (pagas por lo que ya se generó, no por la solicitud completa).

Para evitar que el usuario final se encuentre con un rechazo, Anthropic ofrece tres formas de enrutar automáticamente a Claude Opus 4.8 cuando Fable 5 se niega — cada uno con un nivel diferente de esfuerzo de implementación.

1

Fallback del lado del servidor (server-side)

Claude API / Claude Platform on AWS, mediante encabezado beta

Resuelto en una única solicitud — envías la llamada normal con el encabezado beta activado y, si Fable 5 la rechaza, la propia plataforma la vuelve a emitir a Opus 4.8 antes de devolverte la respuesta. Cero lógica adicional en tu código.

2

Middleware del SDK

BetaRefusalFallbackMiddleware — TS/Python/Go/Java/C#

Un middleware oficial del SDK intercepta el stop_reason: "refusal" en tu propio proceso y vuelve a hacer la llamada a Opus 4.8 automáticamente — útil cuando ya orquestas las llamadas en tu backend y quieres mantener el control ahí.

3

Reintento manual con fallback credit

Ruby/PHP/HTTP crudo: lenguajes sin middleware oficial

Tú mismo lo verificas stop_reason en la respuesta y, si "refusal", inicia una nueva llamada a Opus 4.8 usando el crédito de fallback — la forma más manual, pero la única disponible fuera del ecosistema de SDK oficiales.

Solicitud del usuario Clasifi- cador ok la respuesta sigue con normalidad refusal stop_reason: "refusal" HTTP 200 · cyber/bio/frontier_llm/reasoning_extraction fallback Claude Opus 4.8

El cian marca el desvío: solicitud → clasificador (enfocado en glow) → si se rechaza, la categoría sirve de puente a Opus 4.8; si se aprueba, sigue el flujo normal de Fable 5.

Objetivo: usar Claude Code para decidir cuál de las 3 rutas de respaldo tiene sentido para tu stack, en vez de elegir al azar.
EN
prompt: qué fallback usar
Look at how we call the Claude API in this codebase (SDK, language,
whether we stream responses) and tell me which of the three Fable 5
refusal-fallback options fits best: (1) server-side fallback via the
beta header, (2) SDK middleware (BetaRefusalFallbackMiddleware), or
(3) manual retry with a fallback credit. Point to the exact file/line
where I'd wire it in, and flag if we're on a language (Ruby/PHP/raw
HTTP) that only supports the manual-retry path.
PT-BR (traducción)
traducción libre
Olhe como chamamos a API da Claude neste código (SDK, linguagem, se as
respostas são via streaming) e me diga qual das três opções de fallback
de recusa do Fable 5 se encaixa melhor: (1) fallback no servidor via
beta header, (2) middleware do SDK (BetaRefusalFallbackMiddleware), ou
(3) retry manual com fallback credit. Aponte o arquivo/linha exatos onde
eu conectaria isso, e avise se estamos numa linguagem (Ruby/PHP/HTTP cru)
que só suporta o caminho de retry manual.
Cómo comprobar: pega el prompt (en el idioma que prefieras; se usará en Claude Code, no en Fable 5) en un proyecto real con llamadas a la Claude API. Deberías recibir el nombre de la ruta recomendada y el archivo/línea exactos, no una respuesta genérica que enumere las 3 opciones sin decidir.

En una frase: la negativa antes de la salida no se cobra; para el fallback automático, elige entre server-side, middleware del SDK o retry manual según tu stack.

6

📊 Comparación de costos

Fable 5 cuesta exactamente el doble del Opus 4.8 por token, tanto de entrada como de salida. A primera vista, siempre parece más caro. Pero el precio por token y el costo total de la tarea son cosas distintas — y ahí está la idea práctica de este tema.

Modelo Input Escritura de caché 5m Escritura de caché 1h Cache hit Output
Fable 5 / Mythos 5 $10/MTok $12.50/MTok $20/MTok $1/MTok $50/MTok
Opus 4.8 $5/MTok — — — $25/MTok
Sonnet 5 (hasta el 31/ago/2026) $1/MTok — — — $5/MTok
Haiku 4.5 $0.50/MTok — — — $2.50/MTok

Fuente: platform.claude.com/docs/en/about-claude/pricing · MTok = millón de tokens. Batch API (50% off) deja Fable 5 en $5/$25 por MTok: el mismo precio nominal que Opus 4.8 síncrono.

🧮 Ejemplo ilustrativo (cifras hipotéticas de tokens: no es un benchmark oficial)

Tarea hipotética de coding: 300k tokens de entrada + 40k de salida para terminar.

  • Fable 5 @ low, acierta a la primera (1 ronda): 0.3 × $10 + 0.04 × $50 = $3 + $2 = $5
  • Opus 4.8 @ xhigh, necesita 3 rondas para llegar al mismo resultado (volviendo a leer el contexto en cada iteración: 900k de entrada + 120k de salida acumulados): 0.9 × $5 + 0.12 × $25 = $4.5 + $3 = $7.5

Aunque cueste el doble por token, Fable 5 sale más barato en total en ese escenario — porque «acertar a la primera en sistemas complejos» (capacidad que la propia Anthropic destaca de Fable 5 frente a Opus 4.8) elimina rondas enteras de iteración, no solo reduce el precio de la ronda.

✓ Qué HACER

  • ✓Medir el costo total de la tarea (entrada + salida hasta el resultado final), no solo el $/MTok.
  • ✓Usar Batch API (50% off) para trabajos asíncronos que no necesitan una respuesta inmediata.
  • ✓Aprovechar la caché (5min = 1.25x, 1h = 2x, hit = 0.1x) cuando se repite el mismo contexto extenso entre llamadas.

✗ Qué EVITAR

  • ✗Concluir que Opus 4.8 siempre es más barato solo porque cuesta la mitad por token.
  • ✗Ignorar cuántas rondas o iteraciones necesita la tarea para terminar de verdad.
  • ✗Olvidar el multiplicador inference_geo:"us" (1.1x) al presupuestar por región.

💡 Contexto adicional: Fable 5 tiene una ventana de 1M tokens por defecto y hasta 128k tokens de salida por solicitud, sin prima de precio por contexto largo — otra variable que entra en el cálculo del "costo total" y que no se ve con solo mirar el $/MTok de la tabla.

En una frase: Fable 5 con esfuerzo bajo puede costar menos en total que Opus 4.8 en xhigh/max, aunque cueste el doble por token, porque comete menos errores.

🧾 Resumen del Módulo

✓
5 niveles de esfuerzo — de low a max, high es el valor predeterminado, configurable mediante output_config.effort.
✓
Recomendación práctica — high para la mayoría, xhigh solo en tareas largas, medium/low para la rutina, y un nivel de esfuerzo bajo todavía rinde bien.
✓
Refusal es stop_reason, no un error — HTTP 200, 4 categorías (cyber/bio/frontier_llm/reasoning_extraction), el rechazo antes del output no se cobra.
✓
Fallback a Opus 4.8 — 3 formas (server-side/middleware/retry manual) — y la más barata no siempre es la de menor precio por token.

Próximo módulo:

1.7 — Extra: subagents, memoria y send_to_user.

Fuentes de este módulo: platform.claude.com/docs/en/build-with-claude/effort · platform.claude.com/docs/en/build-with-claude/refusals-and-fallback · platform.claude.com/docs/en/about-claude/pricing · platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5