Prompt de Self-consistency para Diagnóstico Diferencial
Padrão de self-consistency: rodar prompt múltiplas vezes, agregar respostas e escolher consensus para reduzir variância
Prompt
Você é prompt engineer com formação em estatística e ensemble methods. Sabe que self-consistency (Wang et al., 2022) reduz variância de saída em tarefas de raciocínio: rodar mesmo prompt N vezes com temperatura > 0, agregar respostas, escolher majoritária. Funciona especialmente bem para diagnóstico diferencial.
<contexto> - TAREFA: [diagnóstico diferencial, hipóteses, decisão] - INPUT: [caso clínico] - N RUNS: [3, 5, 10] - TEMPERATURE: [0.7 recomendado] - AGREGAÇÃO: [voto majoritário, weighted, intersecção] - CUSTO: [N runs × custo/run] </contexto>Estrutura
Para cada caso clínico, rodar este prompt N vezes (N=5):
PROMPT BASE: Você é internista. Caso: {caso}. Liste 5 hipóteses diagnósticas mais prováveis, ranqueadas, com justificativa em 1 frase cada.
DEPOIS DAS N RODADAS, AGREGAR:
- Coletar 5 listas de 5 hipóteses (25 menções totais)
- Contar frequência de cada hipótese
- Reportar:
- Top 5 por frequência (consensus)
- Hipóteses unânimes (em todas as N runs)
- Hipóteses raras (em apenas 1 run, possivelmente outliers)
- Confiança: alta se top 1 aparece em ≥4/5 runs
Pseudocódigo
import asyncio
from collections import Counter
async def self_consistency(case, n=5, temperature=0.7):
runs = await asyncio.gather(*[
llm_call(prompt_with_case(case), temperature=temperature)
for _ in range(n)
])
all_hypotheses = []
for run in runs:
all_hypotheses.extend(parse_hypotheses(run))
counter = Counter(all_hypotheses)
consensus_top5 = counter.most_common(5)
unanimous = [h for h, c in counter.items() if c == n]
rare = [h for h, c in counter.items() if c == 1]
confidence = "high" if consensus_top5[0][1] >= 4 else "medium" if consensus_top5[0][1] >= 3 else "low"
return {
"consensus_top5": consensus_top5,
"unanimous": unanimous,
"rare_outliers": rare,
"confidence": confidence,
"raw_runs": runs
}
Entregáveis
{
"case_id": "string",
"n_runs": 5,
"temperature": 0.7,
"consensus_top_5": [
{"hypothesis": "...", "frequency": 5, "rank_avg": 1.2},
{"hypothesis": "...", "frequency": 4, "rank_avg": 2.5}
],
"unanimous_hypotheses": ["..."],
"rare_outliers": ["..."],
"confidence_level": "high|medium|low",
"agreement_score": 0.85,
"cost_total_usd": 0.40,
"human_review_recommended": true
}
Quando usar self-consistency
- Diagnóstico diferencial complexo
- Decisões de alto risco onde 1 run pode errar
- Exploração de hipóteses raras (analisar outliers)
- Validação de modelo novo
Quando NÃO usar
- Tarefas determinísticas (extração, formatação)
- Quando custo é proibitivo (5x o normal)
- Quando temperatura 0 é necessária por compliance
Requisitos de estilo
- N entre 3 e 10 (sweet spot 5)
- Temperature 0.5 a 0.8
- Sem em-dashes ou en-dashes
- Reportar agreement score
- Outliers podem ser insights (analisar, não descartar de cara)
Input necessário
Este prompt combina paste do prompt diagnóstico e caso de teste com entrevista breve.
Cole abaixo o prompt diagnóstico (clínico ou análise) e o caso a avaliar. ANTES de colar casos clínicos reais, REMOVA PII, PHI e qualquer identificador. Use apenas dados pseudonimizados ou sintéticos.
[COLE AQUI O PROMPT DIAGNÓSTICO]
[COLE AQUI O CASO DEIDENTIFICADO]
Em paralelo, responda em até 8 perguntas por rodada:
- N de amostras (3 a 10)
- Temperature alvo (0.5 a 0.8)
- Modelo a usar
- Gold standard para validação
- Critério de agreement (maioria simples, supermaioria, consenso)
- Ação quando outlier aparece
- Orçamento de custo (N x custo normal)
- Tratamento de incerteza
Como usar
- Configure N e temperature
- Rode em paralelo para velocidade
- Agregue por frequência ponderada por rank
- Reporte confidence
- Encaminhe para humano se confidence baixa
Exemplo
Entrada:
- Tarefa: diagnóstico diferencial
- Caso: homem 65a, dor torácica retroesternal 30 min, irradiando MSE, sudorese, HAS, DM
- N runs: 5
- Temperature: 0.7
Saída esperada:
- Run 1: IAM, Angina instável, dissecção aorta, TEP, espasmo esofágico
- Run 2: IAM, Angina instável, pericardite, dissecção aorta, refluxo
- Run 3: IAM, dissecção aorta, Angina instável, TEP, ansiedade
- Run 4: IAM, Angina instável, TEP, dissecção aorta, miocardite
- Run 5: IAM, Angina instável, dissecção aorta, espasmo coronariano, ansiedade
- Consensus top 5: IAM (5/5, rank 1.0), Angina instável (5/5, rank 2.2), Dissecção aorta (5/5, rank 3.4), TEP (3/5, rank 4.0), Espasmo esofágico (1/5)
- Unânimes: IAM, Angina instável, Dissecção aorta
- Outliers: pericardite, refluxo, miocardite, ansiedade, espasmo coronariano
- Confidence: high (top 1 IAM em 5/5)
- Custo total USD 0,40 (5x USD 0,08)
- Recomenda revisão humana sempre
Variações
- Self-consistency com diferentes prompts: rodar 3 prompts variantes em vez de mesmo prompt
- Self-consistency com diferentes modelos: Claude + GPT + Gemini, agregar
- Tree-of-thoughts: estender para árvore de hipóteses com poda