0Pricing
AI Prompt Engineering · Aula

Avaliando a decisão

Meça qualidade e custo.

Avaliando a decisão é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 4 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.

Não é possível decidir o que não é possível medir

A escolha entre instruções, ajuste e abordagem híbrida só é tão boa quanto a avaliação que a sustenta. Sem um conjunto de avaliação fixo e um modelo de custos, toda comparação é anedótica.

  • Qualidade e custo são dois eixos — nunca os reduza prematuramente a um único número
  • O conjunto de avaliação deve ser separado e estável em todas as abordagens comparadas
  • A vencedora é a abordagem no melhor ponto da fronteira qualidade-custo para suas restrições

Crie primeiro o conjunto de avaliação fixo

Antes de comparar qualquer coisa, construa um conjunto de avaliação separado no qual nenhuma abordagem seja treinada. Ele deve abranger a distribuição real: casos comuns, casos-limite conhecidos e entradas adversariais em proporções aproximadamente iguais às de produção.

Congele-o. Cada abordagem — somente instruções, ajustada e híbrida — é avaliada no conjunto idêntico. Se a avaliação mudar entre as comparações, os números não serão comparáveis e a decisão será inválida.

def split_eval(labeled, holdout_ratio=0.2, seed=42):
    import random
    rng = random.Random(seed)        # fixed seed = reproducible split
    data = labeled[:]
    rng.shuffle(data)
    cut = int(len(data) * (1 - holdout_ratio))
    train, frozen_eval = data[:cut], data[cut:]
    return train, frozen_eval        # eval never enters any training run

Escolha métricas adequadas à tarefa

A exatidão genérica esconde falhas específicas da tarefa. Escolha métricas que capturem o que realmente importa:

  • Correspondência exata/do esquema para saída estruturada
  • LLM como avaliador com pontuação baseada em rubrica para qualidade de respostas abertas, com uma amostra auditada por humanos
  • Métricas de cauda — pior caso e p95, não apenas a média
  • Taxas de segurança/recusa como critérios rígidos, avaliadas separadamente da qualidade

Uma pontuação média que esconde uma cauda catastrófica levará você à decisão errada.

Avalie cada candidato de forma idêntica

Execute as abordagens somente com instruções, ajustada e híbrida pelo mesmo avaliador no mesmo conjunto fixo. Registre a qualidade e o vetor completo de custos de cada uma, para que as comparações sejam realmente equivalentes.

def evaluate(candidate, frozen_eval, scorer):
    results = []
    for ex in frozen_eval:
        out = candidate.run(ex['input'])
        results.append(scorer(out, ex['label']))
    mean = sum(results) / len(results)
    p95 = sorted(results)[int(0.95 * len(results)) - 1]
    return {'mean': mean, 'p95_worst': p95}

# Identical frozen_eval + scorer for prompt / tuned / hybrid

Modele o vetor completo de custos

O custo não é um único número. Registre cada componente para que a comparação reflita a realidade no seu volume:

  • Inferência por chamada: tokens de entrada + saída multiplicados pelo preço (instruções longas custam mais por chamada)
  • Custo de treinamento amortizado: custo do ajuste distribuído pelo volume esperado de solicitações
  • Manutenção: fluxo de dados, execuções de avaliação e reajuste quando o modelo base mudar
  • Latência: precificada separadamente quando afeta a conversão ou a experiência do usuário
def monthly_cost(calls, in_tok, out_tok, price_in, price_out,
                 train_cost=0.0, months_amortized=12):
    inference = calls * ((in_tok/1000)*price_in + (out_tok/1000)*price_out)
    amortized_train = train_cost / months_amortized
    return inference + amortized_train

# Long prompt-only: high in_tok, train_cost=0
# Tuned: low in_tok, train_cost>0 amortized over volume

Trace a fronteira qualidade-custo

Com a qualidade e o custo mensal de cada candidato, posicione-os em uma fronteira. Um candidato é dominado se outro tiver qualidade maior e custo menor; descarte os candidatos dominados.

Entre os não dominados, a escolha correta depende da sua restrição: selecione o mais barato que ultrapasse o limite de qualidade ou a maior qualidade dentro do teto de custo. A decisão agora é explícita e defensável, não uma questão de preferência.

def non_dominated(candidates):
    # candidate: {'name','quality','cost'} -- higher quality, lower cost better
    keep = []
    for c in candidates:
        dominated = any(o['quality'] >= c['quality'] and o['cost'] <= c['cost']
                        and o != c for o in candidates)
        if not dominated:
            keep.append(c)
    return keep

Significância estatística, não ruído

Um ganho de dois pontos em uma avaliação com 200 exemplos pode ser ruído. Antes de declarar um vencedor, verifique se a diferença de qualidade é estatisticamente significativa considerando o tamanho da sua avaliação.

Use uma comparação pareada (os mesmos exemplos passando pelos dois candidatos) e um intervalo de confiança para a diferença. Se o intervalo cruzar zero, não há uma melhoria real — e o custo adicional do ajuste não se justifica.

def paired_diff_ci(scores_a, scores_b):
    import statistics
    diffs = [a - b for a, b in zip(scores_a, scores_b)]
    mean = statistics.mean(diffs)
    sd = statistics.pstdev(diffs)
    se = sd / (len(diffs) ** 0.5)
    return (mean - 1.96*se, mean + 1.96*se)  # if it spans 0 -> not significant

Proteja-se contra vazamento na avaliação

A maneira mais rápida de fazer o ajuste parecer falsamente superior é o vazamento — exemplos de treinamento que se sobrepõem ao conjunto de avaliação. Uma avaliação vazada recompensa a memorização e infla a pontuação do candidato ajustado.

Elimine duplicatas entre os limites de treinamento e avaliação, verifique quase duplicatas e prefira uma avaliação separada temporalmente (mantida fora por data), para que o modelo ajustado não possa tê-la visto. O vazamento é a causa mais comum de uma decisão de ajuste que fracassa em produção.

Monitore após o lançamento

A decisão não é final no lançamento. A distribuição de produção muda, e um modelo ajustado pode degradar silenciosamente à medida que as entradas se afastam da sua distribuição de treinamento.

  • Amostre o tráfego real e avalie-o com a mesma rubrica
  • Emita alertas para quedas de qualidade e aumento do custo por chamada
  • Execute novamente a avaliação fixa sempre que a versão do modelo base mudar

Trate a abordagem escolhida como uma hipótese em avaliação contínua, não como uma decisão encerrada.

Registro da decisão

Registre a comparação como um registro de decisão escrito: a avaliação fixa, o vetor de qualidade e custo de cada candidato, o resultado da significância, o volume presumido e o ponto escolhido na fronteira, com sua justificativa.

Isso torna a escolha auditável e passível de nova avaliação. Quando o volume ou o modelo base mudar, reabra o registro e execute novamente, em vez de rediscutir a decisão com base na memória.

Função de decisão de ponta a ponta

Una tudo: avalie cada candidato no conjunto fixo, associe seu custo, descarte as opções dominadas, exija significância em relação à referência mais barata e, em seguida, selecione de acordo com sua restrição determinante.

def decide(candidates, quality_bar, cost_ceiling):
    frontier = non_dominated(candidates)
    feasible = [c for c in frontier
                if c['quality'] >= quality_bar and c['cost'] <= cost_ceiling]
    if not feasible:
        return 'NO_CANDIDATE_MEETS_CONSTRAINTS'
    # cheapest option that clears the quality bar
    return min(feasible, key=lambda c: c['cost'])['name']

# Prefer prompt-only on ties: lower maintenance TCO

Verificação rápida

Um modelo ajustado obtém uma pontuação 2 pontos maior que a abordagem por instruções em uma avaliação com 150 exemplos, mas um intervalo de confiança pareado para a diferença abrange zero. Ele também custa mais por mês. Qual é a decisão correta?

Recapitulação

Decida com base em uma avaliação fixa e em um vetor de custos honesto, não na intuição. Qualidade e custo são dois eixos; a resposta é um ponto na fronteira qualidade-custo, escolhido de acordo com sua restrição determinante.

  • Congele um único conjunto de avaliação; avalie todos os candidatos de forma idêntica nele
  • Escolha métricas adequadas à tarefa e observe a cauda, não apenas a média
  • Modele o vetor completo de custos e amortize o treinamento sobre o volume real
  • Exija significância estatística; um intervalo de confiança que abrange zero não representa melhoria
  • Proteja-se contra vazamento na avaliação — a principal causa de falsos ganhos do ajuste
  • Monitore após o lançamento e registre a decisão para que ela possa ser executada novamente

Perguntas Frequentes

A aula “Avaliando a decisão” é grátis?

Sim — o texto completo de “Avaliando a decisão” é 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 “Avaliando a decisão”?

Meça qualidade e custo. 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 4 de 4.

Quanto tempo leva a aula “Avaliando a decisão”?

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. Quando solicitar já é suficiente
  2. Quando fazer ajuste fino
  3. Híbrido: solicitação e ajuste leve
  4. Avaliando a decisão
← Voltar para AI Prompt Engineering