0Pricing
AI Prompt Engineering · Aula

Amostragem de autoconsistência

Vote entre vários caminhos de raciocínio.

Amostragem de autoconsistência é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Prompt Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Prompt Engineering inclui 4 aulas no total.

Uma única cadeia é frágil

Uma única cadeia de raciocínio pode tomar uma decisão errada no início e nunca se recuperar. A autoconsistência (Wang et al., 2022) resolve esse problema amostrando muitos caminhos de raciocínio independentes e agregando suas respostas finais, normalmente por voto majoritário.

A intuição é a seguinte: o raciocínio correto converge para a mesma resposta por caminhos diversos, enquanto os erros se dispersam. A agregação amplifica o sinal consistente.

def self_consistency(prompt, n=20, temperature=0.7):
    answers = []
    for _ in range(n):
        chain = llm(prompt, temperature=temperature)
        answers.append(extract_answer(chain))
    return majority_vote(answers)

Por que a marginalização sobre caminhos funciona

A autoconsistência aproxima a marginalização sobre caminhos de raciocínio: em vez de confiar em uma única derivação latente, estima a resposta final mais provável integrada ao longo de muitas derivações.

Essa é uma estimativa de Monte Carlo da distribuição de respostas. A moda dessa distribuição costuma ser mais confiável do que qualquer caminho amostrado individualmente, especialmente quando o espaço de respostas é pequeno e discreto.

from collections import Counter

def majority_vote(answers):
    norm = [normalize_answer(a) for a in answers]
    counts = Counter(norm)
    answer, votes = counts.most_common(1)[0]
    confidence = votes / len(norm)
    return answer, confidence

Diversidade por meio da temperatura

A autoconsistência precisa de caminhos diversos. A amostragem gulosa ou com temperatura próxima de zero produz cadeias quase idênticas, anulando o método. Use uma temperatura moderada (frequentemente entre 0,5 e 0,8) e, possivelmente, amostragem top-p para diversificar os caminhos.

Uma temperatura alta demais degrada cada cadeia individual; ajuste a temperatura para maximizar a precisão do conjunto, não a qualidade de uma única cadeia.

def tune_temperature(prompt, val_set, temps=(0.4, 0.6, 0.8, 1.0)):
    best = max(
        temps,
        key=lambda t: ensemble_accuracy(prompt, val_set, temp=t, n=20)
    )
    return best

A normalização das respostas é fundamental

Os votos só contam quando respostas equivalentes são reconhecidas como iguais. Normalize antes de contar: remova unidades, padronize os números em formato canônico, converta o texto para minúsculas, interprete frações e porcentagens e aplique a equivalência específica da tarefa.

Uma normalização inadequada divide a verdadeira maioria entre variantes superficiais e permite que uma resposta minoritária vença a votação.

def normalize_answer(a):
    a = a.strip().lower().rstrip('.')
    a = a.replace(',', '').replace('$', '').replace('%', '')
    try:
        return str(round(float(a), 6))   # numeric canonical form
    except ValueError:
        return a

Quantas amostras?

A precisão aumenta com o número de amostras n, mas com retornos decrescentes, frequentemente atingindo um platô entre 10 e 40, dependendo da dificuldade da tarefa. Cada amostra multiplica linearmente o custo e a latência.

Faça uma varredura de n em um conjunto de validação e escolha o ponto de inflexão da curva, no qual amostras adicionais já não justificam seu custo.

def sweep_n(prompt, val, ns=(1,3,5,10,20,40)):
    return {n: ensemble_accuracy(prompt, val, n=n) for n in ns}
# Choose n at the accuracy/cost knee, not the maximum

Parada antecipada adaptativa

Economize computação com a amostragem adaptativa: pare de gerar caminhos assim que a votação for decisiva. Se, após 5 amostras, uma resposta tiver uma vantagem dominante, é improvável que amostras adicionais mudem a vencedora.

Assim, a computação se concentra em itens realmente difíceis e disputados, enquanto as respostas fáceis são obtidas a baixo custo.

def adaptive_sc(prompt, max_n=40, margin=0.6, min_n=5):
    answers = []
    for i in range(max_n):
        answers.append(extract_answer(llm(prompt, temperature=0.7)))
        if i + 1 >= min_n:
            ans, conf = majority_vote(answers)
            if conf >= margin:
                return ans, conf, i + 1
    return majority_vote(answers)

Votação ponderada e auxiliada por verificador

A maioria simples trata todos os caminhos igualmente. É possível ponderar os votos pela probabilidade atribuída pelo modelo a um caminho, pela pontuação de um verificador aprendido ou pela autoavaliação da validade de cada cadeia.

A autoconsistência ponderada por verificador frequentemente supera a votação sem pesos ao reduzir a classificação de modos de falha frequentes, mas confiantes e incorretos.

def weighted_vote(chains):
    scores = {}
    for c in chains:
        a = normalize_answer(extract_answer(c))
        scores[a] = scores.get(a, 0.0) + verifier_score(c)
    return max(scores, key=scores.get)

Confiança a partir da concordância

A margem de votação é um sinal útil de confiança. Uma resposta unânime é muito mais confiável do que uma divisão de 6 contra 5. Disponibilize esse sinal para a lógica subsequente: encaminhe itens com baixa concordância para escalonamento, análise humana ou um modelo mais potente.

Isso transforma a autoconsistência tanto em um recurso para aumentar a precisão quanto em um mecanismo de calibração.

def route(prompt):
    ans, conf = adaptive_sc(prompt)[:2]
    if conf < 0.5:
        return escalate_to_stronger_model(prompt)
    return ans

Limites: tarefas contínuas e abertas

A votação majoritária pressupõe um espaço de respostas discreto e comparável. Ela não se aplica diretamente à geração em formato livre, a textos longos ou a resultados contínuos, nos quais duas amostras quaisquer podem ser diferentes.

Para essas tarefas, faça uma agregação diferente: agrupe resultados semanticamente semelhantes, vote nos campos estruturados extraídos ou use um modelo avaliador para selecionar a melhor amostra em vez de contar correspondências exatas.

def semantic_consistency(samples):
    clusters = cluster_by_embedding(samples)
    biggest = max(clusters, key=len)        # largest agreement cluster
    return representative(biggest)            # medoid of the cluster

Implantação com atenção aos custos

A autoconsistência é uma das técnicas de instrução mais caras: o custo cresce com n. Reserve-a para itens de alto impacto ou difíceis, combine-a com parada adaptativa e considere uma política em camadas na qual uma única cadeia processe os casos fáceis.

Compare sempre sua precisão por dólar com a de uma única chamada a um modelo mais potente, que pode ser mais barata para obter o mesmo ganho.

def tiered(prompt, q):
    if easy(q):
        return extract_answer(llm(prompt, temperature=0))
    return adaptive_sc(prompt, max_n=20)[0]   # SC only when needed

Autoconsistência de ponta a ponta

Um fluxo completo: ajuste a temperatura e n, amostre cadeias diversas, normalize as respostas rigorosamente, faça a votação (opcionalmente ponderada por um verificador), use a margem como sinal de confiança, pare cedo quando a decisão for clara e encaminhe itens com baixa concordância para escalonamento.

O resultado é um sistema de raciocínio mais preciso e autocalibrável do que qualquer cadeia individual.

def solve(prompt):
    chains = sample_until_decisive(prompt, max_n=20, temp=0.7)
    ans, conf = weighted_majority(chains)
    if conf < THRESH:
        return escalate(prompt)
    return {'answer': ans, 'confidence': conf, 'paths': len(chains)}

Verificação rápida

Diagnostique uma configuração de autoconsistência que apresenta desempenho inferior.

Resumo

Principais conclusões:

  • A autoconsistência amostra muitas cadeias diversas e realiza uma votação, aproximando a marginalização sobre caminhos de raciocínio.
  • A diversidade (com temperatura moderada) e a normalização rigorosa das respostas são pré-requisitos para seu funcionamento.
  • A precisão aumenta com n, mas atinge um platô; use a parada antecipada adaptativa para controlar os custos.
  • Pondere os votos com um verificador e use a margem de votação como um sinal calibrado de confiança.
  • Ela precisa de um espaço de respostas discreto; para tarefas abertas, agrupe os resultados semanticamente ou use um avaliador.

Perguntas Frequentes

A aula “Amostragem de autoconsistência” é grátis?

Sim — o texto completo de “Amostragem de autoconsistência” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Prompt Engineering, atualize para CoddyKit PRO. O curso de AI Prompt Engineering inclui 4 aulas no total.

O que vou aprender em “Amostragem de autoconsistência”?

Vote entre vários caminhos de raciocínio. Você pratica AI Prompt Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Prompt Engineering?

Nenhuma experiência prévia é necessária. AI Prompt Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Amostragem de autoconsistência”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Prompt Engineering?

Sim. Cada aula de AI Prompt Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Solicitação com cadeia de pensamento
  2. Amostragem de autoconsistência
  3. Exploração em árvore de pensamentos
  4. Quando as solicitações de raciocínio ajudam
← Voltar para AI Prompt Engineering