🪜 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
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.
🔌 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.
medium antes de asumir que necesitas high.{
"model": "claude-fable-5",
"max_tokens": 4096,
"output_config": { "effort": "medium" },
"messages": [
{ "role": "user", "content": "<isto você troca — descreva a tarefa>" }
]
}
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.
🎯 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.
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.
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
highcomo predeterminado para coding difícil y tareas agénticas habituales. - ✓Subir a
xhighsolo cuando la tarea es de largo horizonte (>30min, millones de tokens de budget). - ✓Bajar a
medium/lowen subagents, rutinas y tareas simples que solo necesitan velocidad.
✗ Qué EVITAR
- ✗Suponer que
effortun nivel bajo da una respuesta «deficiente» — Fable 5 aún tiene un buen rendimiento enlow. - ✗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.
🛡️ 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.
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.
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.
🧾 Billing de un rechazo + cómo configurar el fallback
📐 Regla de facturación
- Rechazo antes de cualquier salida — no se cobra. El campo
usageaparece 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.
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.
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í.
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.
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.
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.
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.
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.
📊 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
high es el valor predeterminado, configurable mediante output_config.effort.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.stop_reason, no un error — HTTP 200, 4 categorías (cyber/bio/frontier_llm/reasoning_extraction), el rechazo antes del output no se cobra.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