🧭 A ordem das alavancas e o que mudou no 5.1
| Alavanca | Novidade no Fable 5.1 | Efeito |
|---|---|---|
| Cache de prompt | Leitura de cache a $0,25 por milhão de tokens | Prefixo repetido custa 1/40 do preço de entrada |
| Esforço | Troca de esforço por mensagem sem resetar o cache (beta) | Baixa o esforço no meio da conversa sem perder o prefixo cacheado |
| Orçamento de tarefa | Disponível (beta), mínimo 20.000 tokens | Modelo se organiza dentro do teto: -18% por -2,7 pontos; -47% por -4,4 |
| Fallbacks | Roteamento server-side por categoria de recusa | Em recusa de segurança, outro modelo responde sem código extra |
| Lote | Igual: 50% do preço | Para tudo que não precisa de resposta imediata |
🗄️ Cache de prompt: o ganho grátis
O cache funciona por prefixo: qualquer byte que mude no início invalida tudo que vem depois. A ordem de renderização é ferramentas, depois prompt de sistema, depois mensagens. Coloque o que é estável primeiro e o que varia (data, identificador do pedido, a pergunta) depois do último ponto de cache.
Copie e rode
Forma do pedido com ponto de cache no prompt de sistema (corpo da requisição, independente de linguagem)
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"system": [
{
"type": "text",
"text": "<seu prompt de sistema longo e ESTÁVEL: sem data, sem id de pedido>",
"cache_control": { "type": "ephemeral" }
}
],
"messages": [
{ "role": "user", "content": "<a pergunta que varia>" }
]
}
✓ Mantém o cache
- ✓Prompt de sistema congelado, sem hora ou data.
- ✓Lista de ferramentas na mesma ordem sempre.
- ✓Documentos fixos antes do ponto de cache; pergunta depois.
- ✓Instrução nova no meio da conversa como mensagem de sistema no array, não editando o topo.
✗ Quebra o cache sem avisar
- ✗"Hoje é {data}" no prompt de sistema.
- ✗JSON com chaves em ordem aleatória.
- ✗Conjunto de ferramentas que varia por pedido.
- ✗Editar o prompt de sistema do topo para trocar o esforço.
💡 Prefixo mínimo
Prefixos curtos demais não são cacheados (o mínimo varia por modelo, de algumas centenas a alguns milhares de tokens). Se seu prompt de sistema é pequeno, junte a ele os documentos de referência estáveis para passar do mínimo.
🔀 Esforço por mensagem sem resetar o cache
No Fable 5.1, no Mythos 5.1 e no Opus 5, você pode acrescentar ao array de mensagens uma mensagem de sistema com conteúdo vazio carregando só o novo esforço. O prefixo anterior continua cacheado.
Copie e rode
Baixar o esforço a partir de um ponto da conversa (beta; cabeçalho de beta necessário)
// cabeçalho HTTP: anthropic-beta: mid-conversation-output-config-2026-07-01
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"output_config": { "effort": "high" },
"system": [ { "type": "text", "text": "<prompt estável>", "cache_control": { "type": "ephemeral" } } ],
"messages": [
{ "role": "user", "content": "<pedido difícil 1>" },
{ "role": "assistant", "content": "<resposta 1>" },
{ "role": "system", "content": [], "output_config": { "effort": "low" } },
{ "role": "user", "content": "<pedido rotineiro 2>" }
]
}
⚠️ Regras de colocação
A mensagem de esforço (conteúdo vazio) pode ficar em qualquer posição. Uma mensagem de sistema com TEXTO no meio da conversa tem regras: deve vir depois de uma mensagem de usuário e ser a última ou ser seguida por um turno do assistente; não pode ser a primeira. Sonnet 5 não suporta mensagens de sistema no meio.
🎯 Orçamento de tarefa
O limite de saída (max_tokens) corta o modelo sem aviso. O orçamento de tarefa é diferente: o servidor injeta um contador que o modelo enxerga, e ele passa a se organizar para terminar dentro do teto. É advisório, não uma parede.
Copie e rode
Pedido com orçamento de tarefa (beta; use streaming por causa do max_tokens grande)
// cabeçalho HTTP: anthropic-beta: task-budgets-2026-03-13
{
"model": "claude-fable-5-1",
"max_tokens": 128000,
"stream": true,
"output_config": {
"effort": "high",
"task_budget": { "type": "tokens", "total": 64000 }
},
"messages": [ { "role": "user", "content": "<tarefa longa com critério de pronto>" } ],
"tools": [ ... ]
}
Como escolher o número
Meça o p90 do seu laço
Sem orçamento
Rode a tarefa algumas vezes e veja quantos tokens a nona de cada dez consome. Esse é o ponto de partida.
Defina e aperte
Uma vez, no primeiro pedido
Mudar o orçamento no meio invalida o cache. Defina antes de começar. Depois aperte em rodadas separadas.
Verifique aderência
É advisório
O modelo tende a respeitar, mas não é garantido. Orçamentos muito apertados podem gerar comportamento parecido com recusa.
📦 Lote pela metade e fallbacks
Duas alavancas de operação. A primeira é para tudo que não precisa de resposta agora: classificação noturna, geração de relatórios, extração de milhares de documentos. A segunda é para o Fable 5.1 especificamente, que pode declinar um pedido por classificador de segurança.
Copie e rode
Forma de um lote (batch): muitos pedidos, metade do preço, resultado em qualquer ordem
// POST /v1/messages/batches
{
"requests": [
{ "custom_id": "doc-001", "params": { "model": "claude-fable-5-1", "max_tokens": 2000,
"messages": [ { "role": "user", "content": "<pedido 1>" } ] } },
{ "custom_id": "doc-002", "params": { "model": "claude-fable-5-1", "max_tokens": 2000,
"messages": [ { "role": "user", "content": "<pedido 2>" } ] } }
]
}
// depois: consultar processing_status até "ended" e ler os resultados POR custom_id
Copie e rode
Fallback server-side por categoria de recusa (beta) — recomendado por padrão no Fable 5.1
// cabeçalho HTTP: anthropic-beta: server-side-fallback-2026-07-01
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"fallbacks": "default",
"messages": [ { "role": "user", "content": "<pedido>" } ]
}
// Sempre checar stop_reason antes de ler content:
// "refusal" traz stop_details.category (ex.: "cyber", "bio") e explicação.
⚠️ Outras regras do 5.1 que afetam código antigo
Forçar uso de ferramenta (tool_choice "any" ou "tool") devolve erro 400: use "auto" com instrução no prompt, ou saída estruturada. Preenchimento prévio da resposta do assistente também devolve 400. Blocos de raciocínio são presos ao modelo que os produziu e histórico editado invalida raciocínio anterior: mantenha o histórico só acrescentando.
📐 Medir na API: o mínimo que funciona
Os quatro pedaços
Entradas congeladas
20 a 30 pedidos reais
Tirados dos seus logs ou escritos por você. Inclua os difíceis. Toda configuração roda exatamente o mesmo conjunto.
Julgamento barato
O mais simples que sirva
Gabarito para comparar, rubrica curta que você pontua, ou checador automático (teste passa, JSON válido, campos presentes). Juiz por modelo só se nada mais servir, e ele também custa.
Executor
Um roteiro por configuração
Roda o conjunto, grava cada saída e o campo usage da resposta (entrada, saída, cache lido, cache escrito), e imprime acerto e custo por tarefa.
Aprovação de custo
Antes de rodar
Estime: entradas × configurações × custo por tarefa. Uma varredura de esforço em três níveis com repetição é várias rodadas. Saiba quanto vai gastar antes.
Copie e rode
Cálculo de custo por tarefa a partir do campo usage (fórmula, qualquer linguagem)
custo = usage.input_tokens × preço_entrada
+ usage.cache_creation_input_tokens × preço_entrada × 1,25
+ usage.cache_read_input_tokens × preço_leitura_cache (Fable 5.1: $0,25 / 1M)
+ usage.output_tokens × preço_saída
custo_por_tarefa = soma dos custos de todas as chamadas até a tarefa passar no julgamento
(incluindo tentativas que falharam)
✓ Decisão bem feita
- ✓Acerto e custo por tarefa lidos juntos.
- ✓Cache medido a partir da segunda chamada (a primeira é escrita, custa 1,25x).
- ✓Uma alavanca por diff; reverter é limpo.
- ✓Repetição quando a diferença é de uma ou duas tarefas.
✗ Decisão mal feita
- ✗Olhar só o custo e ignorar que a acurácia caiu.
- ✗Medir cache na primeira chamada e concluir que "ficou mais caro".
- ✗Mudar três coisas e atribuir o ganho a uma.
- ✗Concluir por uma rodada com resultado apertado.
🧪 Teste rápido do módulo
Três perguntas. Clique numa opção para ver a resposta.
1. Qual alavanca deve ser aplicada primeiro na API, segundo a guia oficial?
2. Você colocou "Hoje é 06/09/2026" no prompt de sistema. O que acontece com o cache?
3. No Fable 5.1, como baixar o esforço no meio da conversa sem perder o cache?