MedPrompt
Voltar ao catálogo
Metaprompting

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:

  1. Coletar 5 listas de 5 hipóteses (25 menções totais)
  2. Contar frequência de cada hipótese
  3. 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

  1. Configure N e temperature
  2. Rode em paralelo para velocidade
  3. Agregue por frequência ponderada por rank
  4. Reporte confidence
  5. 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