Escalonamento, ambiguidade e human-in-the-loop
Objetivos de aprendizagem
- Listar os gatilhos corretos de escalação: pedido explícito do cliente, lacuna/exceção de política e incapacidade de progredir.
- Explicar por que sentimento e confiança auto-reportada são proxies não confiáveis de complexidade real.
- Aplicar o padrão correto para múltiplos matches de cliente: pedir identificadores adicionais, nunca escolher por heurística.
- Reconhecer que métricas agregadas mascaram segmentos ruins — estratificar por tipo de documento e campo.
- Projetar roteamento de revisão humana com confiança field-level calibrada em validation set rotulado.
Gatilhos corretos de escalação
Escalar tudo destrói a resolução autônoma; escalar nada gera decisões fora de alçada. Os gatilhos que a prova considera corretos:
- Pedido explícito por um humano — honre imediatamente, sem tentar "investigar primeiro". Se o cliente está frustrado mas o problema é simples, o padrão intermediário é reconhecer a frustração e oferecer resolver, escalando se o cliente reiterar a preferência.
- Lacuna ou exceção de política — quando a política é ambígua ou silenciosa sobre o pedido específico (ex.: cliente pede price match com concorrente e a política só cobre ajustes do próprio site). Note: o gatilho é a lacuna de política, não "caso complexo".
- Incapacidade de progredir — o agente esgotou o que pode fazer (ferramentas falharam, informação inacessível) e não consegue avançar de forma significativa.
A técnica de implementação é adicionar critérios explícitos de escalação com exemplos few-shot ao system prompt, demonstrando quando escalar versus resolver autonomamente — antes de qualquer infraestrutura adicional (classificadores, ML, etc.).
Proxies não confiáveis
| Proxy tentador | Por que falha |
|---|---|
| Sentimento do cliente (escalar quando negativo) | Frustração não se correlaciona com complexidade do caso: clientes irritados têm problemas triviais e clientes calmos têm casos que exigem exceção de política. |
| Confiança auto-reportada do modelo (score 1–10 no prompt) | É mal calibrada: o modelo tende a estar incorretamente confiante justamente nos casos difíceis. Não substitui calibração contra dados rotulados. |
Ambiguidade de identidade: múltiplos matches
Quando get_customer retorna múltiplos clientes possíveis (mesmo nome, dados parciais), o agente deve pedir identificadores adicionais (e-mail, número do pedido, CPF parcial) — nunca selecionar por heurística ("o mais recente", "o da mesma cidade"). Seleção heurística leva a contas mal identificadas e ações irreversíveis no cliente errado.
Se a ação errada tem consequência financeira (reembolso na conta errada), a clarificação não é opcional. Instrua explicitamente o agente a interromper e perguntar quando a resolução de identidade for ambígua.
Métricas agregadas mascaram segmentos ruins
Um pipeline de extração com "97% de acurácia geral" pode ter 99,5% em notas fiscais digitais e 74% em recibos manuscritos — o agregado esconde o segmento problemático. Antes de reduzir revisão humana ou automatizar extrações de alta confiança:
- Estratifique a análise de acurácia por tipo de documento e por campo, verificando desempenho consistente em todos os segmentos;
- Implemente amostragem aleatória estratificada das extrações de alta confiança para medir taxa de erro contínua e detectar padrões novos de erro que não existiam no conjunto original.
Confiança field-level calibrada
O padrão robusto de human-in-the-loop para extração:
- O modelo emite score de confiança por campo (não um único score por documento);
- Os thresholds de roteamento são calibrados contra um validation set rotulado — descobrindo empiricamente, por exemplo, que confiança ≥ 0,9 corresponde a 99% de acurácia no campo "total", mas só 92% no campo "data";
- Vão para revisão humana: extrações com baixa confiança e documentos-fonte ambíguos ou contraditórios — priorizando a capacidade limitada dos revisores onde o risco é maior.
Exemplo: roteamento de revisão com thresholds calibrados
import anthropic
client = anthropic.Anthropic()
# Thresholds POR CAMPO, calibrados contra um validation set rotulado
# (nao sao a "confianca auto-reportada" crua: foram ajustados ate que
# cada threshold correspondesse a taxa de erro tolerada pelo negocio)
CALIBRATED_THRESHOLDS = {"total_amount": 0.93, "issue_date": 0.88, "vendor_name": 0.85}
def route_extraction(extraction: dict) -> dict:
"""Decide, campo a campo, o que vai para revisao humana."""
needs_review = []
for field, threshold in CALIBRATED_THRESHOLDS.items():
data = extraction["fields"].get(field)
if data is None or data["confidence"] < threshold:
needs_review.append(field)
if extraction.get("source_contradictory"):
needs_review = list(extraction["fields"].keys()) # fonte ambigua: revisar tudo
return {"auto_approved": not needs_review, "fields_for_review": needs_review}
# System prompt com criterios EXPLICITOS de escalacao + few-shot
system = """Voce e um agente de suporte. Criterios de escalacao:
1. Cliente pede um humano -> escale IMEDIATAMENTE, sem investigar antes.
2. Politica ambigua ou silenciosa sobre o pedido -> escale com o contexto coletado.
3. Voce nao consegue progredir (ferramentas falharam, dados inacessiveis) -> escale.
Caso contrario, resolva autonomamente.
Exemplo (escalar): "Quero falar com uma pessoa AGORA" -> transferir imediatamente.
Exemplo (resolver): "Produto chegou quebrado, tenho fotos" -> troca padrao, resolver.
Exemplo (escalar): "A loja X cobre o preco de voces?" e a politica so trata de
ajustes no proprio site -> lacuna de politica, escalar."""
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
system=system,
messages=[{"role": "user", "content": "Quero falar com um atendente humano."}],
)
print(response.content[0].text)
Pegadinhas da prova
- Distrator típico: "escalar quando o sentimento ficar negativo". Sentimento não se correlaciona com complexidade — resolve o problema errado.
- Distrator típico: "o agente auto-reporta confiança 1–10 e escala abaixo do threshold". Confiança auto-reportada é mal calibrada; sozinha, não é gatilho confiável. Scores só viram roteamento válido depois de calibrados contra validation set rotulado.
- Distrator típico: "primeiro investigar o caso, depois transferir se necessário" quando o cliente pediu explicitamente um humano. O pedido explícito se honra imediatamente.
- Distrator típico: com múltiplos matches, "selecionar o cliente com atividade mais recente". Heurística de seleção é o anti-padrão; a resposta é pedir identificadores adicionais.
- Distrator típico: "97% de acurácia geral, podemos automatizar". Sem estratificação por tipo de documento e campo, o agregado pode mascarar segmentos com desempenho inaceitável.
- Distrator típico: treinar um classificador ML de escalação antes de tentar critérios explícitos + few-shot no prompt — over-engineering como "primeiro passo".
Resumo em 5 linhas
- Gatilhos corretos de escalação: pedido explícito do cliente (imediato), lacuna/exceção de política, incapacidade de progredir.
- Sentimento e confiança auto-reportada são proxies não confiáveis de complexidade — não os use como gatilho primário.
- Múltiplos matches de cliente exigem pedir identificadores adicionais, nunca seleção heurística.
- Métricas agregadas mascaram segmentos ruins: estratifique acurácia por tipo de documento e campo antes de automatizar.
- Roteie revisão humana por confiança field-level calibrada em validation set rotulado + amostragem estratificada contínua das extrações de alta confiança.
Documentação oficial
- Prompt engineering — overview (critérios explícitos e few-shot)
- Define success criteria (métricas e validação)
- Develop test cases e evals
Questões de fixação
1. Um cliente escreve: "Chega, quero falar com uma pessoa de verdade." O problema dele parece ser uma troca simples. O que o agente deve fazer?
Gabarito: C. Pedido explícito por humano é gatilho de escalação imediata — sem investigação prévia. A e B ignoram a vontade declarada do cliente (a "oferta de resolver" cabe quando há frustração sem pedido explícito, e ainda assim escalando se ele reiterar). D usa sentimento, proxy não confiável, e nem seria necessário: o pedido já foi explícito.
2. A busca por "Maria Souza" retorna três clientes com esse nome. O cliente na conversa quer um reembolso. Qual é o comportamento correto do agente?
Gabarito: B. Ambiguidade de identidade se resolve com clarificação — identificadores adicionais — não com heurística. A é o anti-padrão clássico (misidentificação com consequência financeira). C é absurdo operacional e financeiro. D confunde ambiguidade resolúvel com gatilho de escalação: o agente consegue progredir sozinho apenas perguntando.
3. Um pipeline de extração exibe 97% de acurácia geral. A equipe quer eliminar a revisão humana das extrações de alta confiança. Qual passo é necessário ANTES dessa decisão?
Gabarito: D. O agregado pode mascarar segmentos com desempenho ruim (ex.: recibos manuscritos a 74%). Antes de reduzir revisão, valida-se por segmento. A ignora exatamente esse risco. B usa confiança auto-reportada não calibrada. C não responde a pergunta — mesmo um modelo melhor pode ter segmentos fracos escondidos no agregado.
4. Quais duas práticas tornam confiável um roteamento de revisão humana baseado em confiança? (escolha duas)
Gabarito: A e C. Calibração contra dados rotulados transforma scores em decisões com taxa de erro conhecida; a amostragem estratificada contínua vigia o que foi automatizado e captura padrões novos de erro. B perde granularidade — campos diferentes têm calibrações diferentes. D é falso: auto-reporte cru é mal calibrado independentemente do tamanho do modelo. E anula o propósito do roteamento e desperdiça a capacidade limitada de revisores.