Tema

Tamanho do texto

Fonte

Entrelinha

MÓDULO 3.3

🔧 Alavancas do 5.1 para quem usa a API

Módulo opcional para quem programa contra a API. O Fable 5.1 trouxe leitura de cache a um quarto de centavo por mil tokens, troca de esforço sem resetar o cache, orçamento de tarefa e fallbacks. A ordem de aplicação continua a mesma: cache, esforço, orçamento, modelo.

6
Tópicos
50
Minutos
Avançado
Nível
Prática
Tipo
0 de 60%
1

🧭 A ordem das alavancas e o que mudou no 5.1

1 1. Cache prefixo estávelleitura barata 2 2. Esforço low → maxpor rota 3 3. Orçamento task_budgetadvisório 4 4. Lote e fallback batch 50%refusal fallback 5 5. Modelo por últimomedindo Ordem de aplicação das alavancas de custo na API
O que olhar: Cada passo é medido antes do próximo. Trocar de modelo por último, porque reseta o cache e muda o teto.
AlavancaNovidade no Fable 5.1Efeito
Cache de promptLeitura de cache a $0,25 por milhão de tokensPrefixo repetido custa 1/40 do preço de entrada
EsforçoTroca 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 tarefaDisponível (beta), mínimo 20.000 tokensModelo se organiza dentro do teto: -18% por -2,7 pontos; -47% por -4,4
FallbacksRoteamento server-side por categoria de recusaEm recusa de segurança, outro modelo responde sem código extra
LoteIgual: 50% do preçoPara tudo que não precisa de resposta imediata
2

🗄️ 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>" }
  ]
}
Como verificar: Na resposta, olhe usage.cache_read_input_tokens. Na primeira chamada é zero (escrita). Da segunda em diante, com o mesmo prefixo, deve ser grande. Se continuar zero, há um invalidador silencioso: data no prompt, JSON sem ordenação fixa, lista de ferramentas que muda.

✓ 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.

3

🔀 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>" }
  ]
}
Como verificar: Compare usage.cache_read_input_tokens antes e depois da mensagem de esforço: não deve cair. E a resposta ao pedido 2 deve vir mais curta e rápida.

⚠️ 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.

4

🎯 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 verificar: Some usage.output_tokens ao longo do laço. Compare com o mesmo laço sem orçamento. Nas medições publicadas: orçamento folgado deu -18% de custo por -2,7 pontos; o mais apertado, -47% por -4,4 pontos.

Como escolher o número

1

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.

2

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.

3

Verifique aderência

É advisório

O modelo tende a respeitar, mas não é garantido. Orçamentos muito apertados podem gerar comportamento parecido com recusa.

5

📦 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
Como verificar: Os resultados chegam em qualquer ordem: nunca use a posição, sempre o custom_id. O custo aparece pela metade do preço de lista.

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.
Como verificar: Envie um pedido que costume ser declinado e observe: com fallbacks, a resposta vem de outro modelo em vez de um stop_reason "refusal". Sem fallbacks, você precisa tratar a recusa no seu código.

⚠️ 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.

6

📐 Medir na API: o mínimo que funciona

Os quatro pedaços

1

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.

2

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.

3

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.

4

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)
Como verificar: Some por tarefa, não por chamada. Uma tarefa que precisou de três chamadas custa a soma das três. Compare configurações por essa soma e pela taxa de acerto, sempre juntas.

✓ 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?

📋 Resumo do módulo

Ordem - cache, esforço, orçamento, lote e fallback, modelo por último.
Cache - prefixo estável, sem data; leitura a $0,25 por milhão no 5.1; verifique cache_read_input_tokens.
Esforço por mensagem - mensagem de sistema vazia com novo esforço, sem resetar o cache (beta).
Orçamento de tarefa - mínimo 20.000; defina uma vez a partir do p90; -18% por -2,7 pontos folgado, -47% por -4,4 apertado.
Lote e fallback - batch a 50% por custom_id; fallbacks "default" para recusas do 5.1.
Medir - 20 a 30 pedidos, julgamento barato, executor que grava usage, custo por tarefa somando tentativas.