Ajustando o Parâmetro effort para Custo e Velocidade
O parâmetro effort define quanta profundidade de raciocínio o Claude aplica a uma requisição, permitindo que você troque qualidade por custo e velocidade em uma base por chamada.
Busque em todas as páginas da documentação
O parâmetro effort define quanta profundidade de raciocínio o Claude aplica a uma requisição, permitindo que você troque qualidade por custo e velocidade em uma base por chamada.
Toda requisição tem um orçamento implícito de custo e latência.
O parâmetro effort, passado em output_config, oferece uma alavanca direta sobre esse orçamento.
Menor effort favorece velocidade e custo, maior effort favorece completude.
Isso é distinto da configuração thinking, que controla se o raciocínio é adaptativo e visível.
As duas configurações se compõem, então um sistema de produção bem ajustado geralmente define ambas deliberadamente em vez de deixar qualquer uma no padrão.
Cartão de receita de referência rápida - pronto para copiar e colar.
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
output_config={"effort": "medium"},
messages=[{"role": "user", "content": "Resuma este thread de suporte ao cliente."}],
)
print(response.content[-1].text)Quando usar isso:
effort low mantém o custo previsível.high ou max effort vale o custo.effort para o mesmo prompt.effort dinamicamente com base no tipo de requisição em vez de uma única configuração fixa.effort.import anthropic
client = anthropic.Anthropic()
EFFORT_BY_TASK_TYPE = {
"classify": "low",
"summarize": "medium",
"code_review": "high",
"incident_root_cause": "max",
}
def run_task(task_type: str, prompt: str) -> str:
effort = EFFORT_BY_TASK_TYPE.get(task_type, "medium")
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1536,
thinking={"type": "adaptive"},
output_config={"effort": effort},
messages=[{"role": "user", "content": prompt}],
)
for block in response.content:
if block.type == "text":
return block.text
return ""
if __name__ == "__main__":
ticket = "Usuário relata 502s intermitentes no checkout, começou após o deploy da noite passada."
result = run_task("incident_root_cause", ticket)
print(result)O que isso demonstra:
effort, evitando uma única configuração codificada em toda a aplicação.thinking={"type": "adaptive"} com um teto de effort explícito, as duas configurações se compondo de forma limpa."medium" para tipos de tarefa não reconhecidos em vez de falhar.text, ignorando qualquer bloco thinking para os propósitos deste local de chamada.effort max especificamente para o tipo de tarefa de maior risco, análise de causa raiz de incidentes.output_config={"effort": "<level>"} define um teto para quanta computação de raciocínio o Claude aplica antes de responder.low, medium, high, max, do mais rápido e barato ao mais completo e caro.effort se aplica independentemente de o bloco thinking ser visível; ele governa o orçamento de raciocínio subjacente, não apenas sua exibição.effort geralmente aumenta tanto o número de tokens de saída (quando o thinking é visível) quanto a latência, pois o Claude faz mais trabalho interno por requisição.effort se compõe com thinking: o thinking adaptativo decide se o raciocínio acontece ou não para um determinado prompt; o effort limita o quão profundo ele vai quando acontece.| Nível | Velocidade | Custo | Melhor ajuste |
|---|---|---|---|
low | Mais rápido | Mais baixo | Classificação, extração, consultas curtas |
medium | Equilibrado | Moderado | Respostas gerais de assistente, sumarização |
high | Mais lento | Mais alto | Revisão de código, planejamento multi-etapas |
max | Mais lento | Mais alto | Análise crítica de segurança, depuração profunda |
# Padrão: falhar ruidosamente em um valor de effort inválido em vez de usar o padrão silenciosamente.
VALID_EFFORTS = {"low", "medium", "high", "max"}
def build_output_config(effort: str) -> dict:
if effort not in VALID_EFFORTS:
raise ValueError(f"Nível de effort desconhecido: {effort!r}")
return {"effort": effort}Validar a string de effort antes que ela chegue à chamada da API captura erros de digitação ("med" em vez de "medium") no local da chamada em vez de como um erro de requisição opaco.
effort max em todos os lugares "para garantir." Isso infla o custo e a latência em toda a sua aplicação; a maioria das requisições não precisa disso. Correção: mapeie o effort para o tipo de tarefa deliberadamente, reserve max para chamadas genuinamente de alto risco.effort controla se um bloco de thinking aparece. O effort controla a profundidade e o custo, não a visibilidade; essa é a função da configuração thinking. Correção: defina explicitamente thinking e output_config.effort quando precisar de auto-calibração e um teto de custo.effort mais alto. high e max podem desacelerar significativamente um endpoint voltado para o usuário. Correção: compare a latência p50 e p95 em cada nível de effort candidato com seu tráfego real antes de escolher um.effort para uma carga de trabalho mista. Um único endpoint que atende tanto a requisições triviais quanto complexas desperdiça orçamento nas fáceis ou atende inadequadamente às difíceis. Correção: roteie o effort por requisição usando um classificador upstream barato ou uma dica explícita fornecida pelo chamador.effort em poucos prompts de teste. O impacto da qualidade do effort é mais visível em tarefas genuinamente difíceis; testar apenas em prompts fáceis esconde a diferença. Correção: crie um conjunto de avaliação que inclua seus casos mais difíceis do mundo real antes de decidir sobre um padrão.effort inválida e descobri-la apenas no momento da requisição. Um erro de digitação como "med" para "medium" aparece como um erro de API no meio de um caminho de requisição. Correção: valide contra o conjunto conhecido de níveis antes de construir a requisição.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Nível de effort fixo único para toda a aplicação | A carga de trabalho é uniforme em dificuldade | Requisições variam amplamente em complexidade ou riscos |
| Effort por requisição passado pelo chamador | Diferentes superfícies de produto têm diferentes necessidades de custo/qualidade | Você não pode confiar na entrada do chamador ou precisa de controle de custo centralizado |
| Effort roteado por um classificador upstream | Alto volume de requisições com dificuldade mista e necessidade de ajuste automático | O tráfego é baixo o suficiente para que o mapeamento manual seja mais simples e barato de manter |
low, medium, high e max, passados como string em output_config={"effort": "<level>"}.
Nem sempre. Ele aumenta o orçamento de raciocínio que o Claude pode usar, o que tende a ajudar em tarefas genuinamente difíceis, mas agrega pouco valor em tarefas simples, enquanto ainda custa mais.
Não. thinking controla se e como o raciocínio adaptativo acontece e é mostrado; effort controla o quão profundo esse raciocínio pode ir e seu teto de custo. Eles são independentes e tipicamente usados juntos.
medium é um ponto de partida razoável para respostas de assistente de propósito geral, depois ajuste para cima ou para baixo por tipo de tarefa com base na qualidade e custo medidos.
effort = EFFORT_BY_TASK_TYPE.get(task_type, "medium")
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
output_config={"effort": effort},
messages=[{"role": "user", "content": prompt}],
)Sim. Níveis de effort mais altos geralmente levam mais tempo para serem concluídos, pois o Claude realiza mais trabalho de raciocínio antes de produzir a resposta final.
Não necessariamente. Você pode manter thinking={"type": "adaptive"} com effort baixo; o Claude ainda decidirá por prompt se algum raciocínio é necessário, apenas limitado a uma profundidade menor.
Sim, conceitualmente, pois a capacidade de raciocínio base de cada modelo difere (Fable 5, Opus 4.8, Sonnet 5, Haiku 4.5), o mesmo nível de effort não produz profundidade ou custo idênticos entre os modelos.
A requisição falha com um erro de API. Valide o valor contra o conjunto conhecido (low, medium, high, max) em seu próprio código antes de enviá-lo, para que as falhas apareçam no local da chamada em vez de no meio de um caminho de requisição.
Não necessariamente. O effort high é frequentemente suficiente para revisão de código rotineira; reserve max para diffs particularmente de alto risco ou complexos onde o custo extra é justificado pelo risco de um problema não detectado.
Na maioria das aplicações, mantenha o effort como uma decisão do lado do servidor ligada ao tipo de tarefa ou à lógica de roteamento interna, em vez de expô-lo diretamente aos usuários finais, para manter o custo previsível.
thinking e effort.effort se emparelha.effort junto com thinking e imagens.effort em produção.Versões da Stack: Escrito contra a linha de modelos Claude atual em ~junho de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (o padrão) e Claude Haiku 4.5 - e o SDK oficial
anthropicpara Python (última versão 0.x). Nomes de modelos, versões de SDK e preços mudam rapidamente - verifique os detalhes atuais em platform.claude.com/docs antes de confiar neles.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026