Desenvolvimento orientado a avaliação

Ao criar comandos para aplicativos reais, surge uma troca fundamental: equilibrar a brevidade com a eficácia. Quando todos os fatores são iguais, um comando conciso é mais rápido, barato e fácil de manter do que um comando mais longo. Isso é especialmente relevante em ambientes da Web, em que a latência e os limites de token são importantes. No entanto, se o comando for muito simples, o modelo poderá não ter o contexto, instruções ou exemplos necessários para gerar resultados de alta qualidade.

O desenvolvimento orientado por avaliação (EDD, na sigla em inglês) permite monitorar e otimizar sistematicamente essa troca. Ele oferece um processo repetível e testável para melhorar as saídas em etapas pequenas e confiáveis, detectar regressões e alinhar o comportamento do modelo com as expectativas do usuário e do produto ao longo do tempo.

Pense nisso como um desenvolvimento orientado por testes (TDD), adaptado para a incerteza da IA. Ao contrário dos testes de unidade determinísticos, as avaliações de IA não podem ser codificadas porque as saídas, tanto bem formadas quanto com falhas, podem assumir formas inesperadas.

Figura 1: na EDD, você define o problema, inicializa um valor de referência, avalia e otimiza. Continue avaliando e otimizando até concluir o processo.

A EDD também apoia seus esforços de descoberta. Assim como escrever testes ajuda a esclarecer o comportamento de um recurso, definir critérios de avaliação e analisar as saídas do modelo força você a enfrentar a falta de clareza e adicionar gradualmente mais detalhes e estrutura a tarefas abertas ou desconhecidas.

Defina o problema

Você pode enquadrar seu problema como um contrato de API, incluindo o tipo de entrada, o formato de saída e outras restrições. Exemplo:

  • Tipo de entrada: rascunho de postagem do blog
  • Formato de saída: matriz JSON com três títulos de postagens
  • Restrições: menos de 128 caracteres, usando um tom amigável

Em seguida, colete exemplos de entradas. Para garantir a diversidade de dados, inclua exemplos ideais e entradas reais e desorganizadas. Pense em variações e casos extremos, como postagens com emojis, estrutura aninhada e muitos snippets de código.

Inicializar um valor de referência

Escreva seu primeiro comando. Você pode começar com o zero-shot e incluir:

  • Instrução clara
  • Formato da saída
  • Marcador de posição para variável de entrada

Você aumenta a complexidade e trabalha com outros componentes e técnicas avançadas de solicitação ao avaliar e otimizar. Primeiro, precisamos configurar um sistema de avaliação para direcionar o esforço de otimização na direção certa.

Criar seu sistema de avaliação

No TDD, você começa a escrever testes assim que conhece os requisitos. Com a IA generativa, não há resultados definitivos para testar. Por isso, é preciso se esforçar mais para criar seu loop de avaliação.

Provavelmente, você vai precisar de várias ferramentas de medição para fazer uma avaliação eficaz.

Definir as métricas de avaliação

As métricas de avaliação podem ser deterministas. Por exemplo, você pode verificar se o modelo retorna um JSON válido ou gera o número correto de itens.

No entanto, grande parte do seu tempo deve ser dedicada a identificar e refinar métricas subjetivas ou qualitativas, como clareza, utilidade, tom ou criatividade. Talvez você comece com metas amplas, mas logo encontre problemas mais sutis.

Por exemplo, digamos que seu gerador de títulos use demais certas frases ou padrões, resultando em resultados repetitivos e robóticos. Nesse caso, defina novas métricas para incentivar a variação e desencorajar estruturas ou palavras-chave usadas em excesso. Com o tempo, suas métricas principais vão se estabilizar, e você poderá acompanhar as melhorias.

Esse processo pode se beneficiar de especialistas que entendem o que é bom no domínio do seu aplicativo e podem identificar modos de falha sutis. Por exemplo, se você estiver desenvolvendo um assistente de escrita, faça uma parceria com um produtor ou editor de conteúdo para garantir que sua avaliação esteja alinhada com a visão de mundo deles.

Escolha seus juízes

Critérios de avaliação diferentes exigem avaliadores diferentes:

  • As verificações baseadas em código funcionam bem para saídas determinísticas ou baseadas em regras. Por exemplo, você pode verificar se há palavras que quer evitar nos títulos, conferir a contagem de caracteres ou validar a estrutura JSON. Eles são rápidos, repetíveis e perfeitos para elementos de interface de saída fixa, como botões ou campos de formulário.
  • O feedback humano é essencial para avaliar qualidades mais subjetivas, incluindo tom, clareza ou utilidade. Principalmente no início, revisar as saídas do modelo por conta própria (ou com especialistas no assunto) permite uma iteração rápida. No entanto, essa abordagem não é escalonável. Depois de lançar o aplicativo, você também pode coletar indicadores no app, como uma classificação por estrelas, mas eles tendem a ser ruidosos e não têm a sutileza necessária para uma otimização precisa.
  • O LLM como juiz oferece uma maneira escalonável de avaliar critérios subjetivos usando outro modelo de IA para pontuar ou criticar saídas. Ela é mais rápida do que a revisão humana, mas não sem problemas: em uma implementação simples, ela pode perpetuar e até reforçar os vieses e as lacunas de conhecimento do modelo.

Priorize a qualidade em vez da quantidade. No machine learning clássico e na IA preditiva, é comum fazer a anotação de dados por crowdsourcing. Para IA generativa, os rotuladores de crowdsourcing geralmente não têm contexto de domínio. A avaliação de alta qualidade e rica em contexto é mais importante do que a escala.

Avaliar e otimizar

Quanto mais rápido você testar e refinar seus comandos, mais rápido vai chegar a algo que esteja alinhado às expectativas dos usuários. Você precisa criar o hábito de otimizar continuamente. Tente melhorar, avalie e tente outra coisa.

Depois de entrar em produção, continue observando e avaliando o comportamento dos usuários e do sistema de IA. Em seguida, analise e transforme esses dados em etapas de otimização.

Automatizar seu pipeline de avaliação

Para reduzir a fricção nos seus esforços de otimização, você precisa de uma infraestrutura operacional que automatize a avaliação, rastreie as mudanças e conecte o desenvolvimento à produção. Isso é comumente chamado de LLMOps. Embora existam plataformas que podem ajudar na automação, é recomendável criar seu fluxo de trabalho ideal antes de adotar uma solução de terceiros.

Confira alguns componentes importantes:

  • Controle de versões: armazene comandos, métricas de avaliação e entradas de teste no controle de versões. Trate-os como código para garantir a capacidade de reprodução e um histórico de mudanças claro.
  • Avaliações em lote automatizadas: use fluxos de trabalho (como o GitHub Actions) para executar avaliações em cada atualização de solicitação e gerar relatórios de comparação.
  • CI/CD para comandos: implantações de controle com verificações automatizadas, como testes determinísticos, pontuações de LLM como juiz ou proteções, e bloqueie mesclagens quando a qualidade regredir.
  • Geração de registros e observabilidade de produção: capture entradas, saídas, erros, latência e uso de tokens. Monitore desvios, padrões inesperados ou picos de falhas.
  • Ingestão de feedback: colete indicadores do usuário (polegares, reescritas, abandono) e transforme problemas recorrentes em novos casos de teste.
  • Rastreamento de experimentos: rastreie versões de comandos, configurações de modelos e resultados de avaliação.

Iterar com mudanças pequenas e direcionadas

O refinamento geralmente começa com a melhoria da linguagem do comando. Isso pode significar tornar as instruções mais específicas, esclarecer a intenção ou remover ambiguidades.

Tenha cuidado para não fazer overfitting. Um erro comum é adicionar regras muito restritas para corrigir problemas do modelo de patch. Por exemplo, se o gerador de títulos continuar produzindo títulos que começam com O guia definitivo, pode ser tentador proibir explicitamente essa frase. Em vez disso, abstraia o problema e ajuste a instrução de nível superior. Isso pode significar que você enfatiza a originalidade, a variedade ou um estilo editorial específico, para que o modelo aprenda a preferência subjacente em vez de uma única exceção.

Outra opção é testar mais técnicas de comando e combinar esses esforços. Ao escolher uma técnica, pergunte-se: essa tarefa é melhor resolvida por analogia (aprendizagem com poucos exemplos), raciocínio passo a passo (cadeia de pensamento) ou refinamento iterativo (autoavaliação)?

Quando seu sistema entra em produção, o ciclo de EDD não deve diminuir. Se algo acontecer, ele vai acelerar. Se o sistema processar e registrar a entrada do usuário, essa será sua fonte mais valiosa de insights. Adicione padrões recorrentes ao conjunto de avaliação e identifique e implemente continuamente as próximas etapas de otimização.

Seus pontos principais

O desenvolvimento de comandos orientado por avaliação oferece uma maneira estruturada de lidar com a incerteza da IA. Ao definir seu problema com clareza, criar um sistema de avaliação personalizado e iterar pequenas melhorias direcionadas, você cria um ciclo de feedback que melhora constantemente as saídas do modelo.

Recursos

Confira algumas leituras recomendadas se quiser implementar o LLM como juiz:

Se quiser melhorar ainda mais seus comandos, leia mais sobre o desenvolvimento com reconhecimento de contexto. Isso é melhor feito por um engenheiro de machine learning.

Teste seu conhecimento

Qual é o objetivo principal do desenvolvimento orientado por avaliação?

Substituir todos os testes humanos por testes de unidade automatizados.
Resposta incorreta.
Para monitorar e otimizar sistematicamente a troca entre brevidade e eficácia do comando usando um processo repetível.
Muito bem, é isso mesmo!
Para aumentar a latência do aplicativo e garantir maior precisão.
Resposta incorreta.
Para garantir que o modelo passe em comparativos públicos padrão, como o MMLU.
Resposta incorreta.

Por que usar modelos maiores para avaliar um sistema do lado do cliente?

Modelos maiores são melhores para avaliar tom e criatividade.
Resposta incorreta.
Eles atuam como um human-in-the-loop para classificar manualmente todos os resultados.
Resposta incorreta.
Elas são ótimas para validar saídas determinísticas, como a estrutura JSON ou a contagem de caracteres.
Muito bem, é isso mesmo!

Qual é uma possível armadilha de usar o LLM como um juiz para avaliação?

Ela é muito lenta em comparação com a revisão humana.
Resposta incorreta.
Não é necessário configurar nem fazer solicitações.
Resposta incorreta.
Ele pode perpetuar e reforçar os vieses e as lacunas de conhecimento do modelo.
Muito bem, é isso mesmo!
Ela não pode processar saídas de texto.
Resposta incorreta.

Qual componente faz parte de um pipeline de avaliação automatizada recomendado?

Copiar e colar manualmente comandos em uma planilha.
Resposta incorreta.
Controle de versões de comandos, métricas e entradas de teste como código.
Muito bem, é isso mesmo!
Excluindo registros para economizar espaço.
Resposta incorreta.
Ignorar o feedback dos usuários para manter a consistência.
Resposta incorreta.

Ao escolher avaliadores para seu sistema de avaliação, qual é a principal limitação de usar feedback humano?

Os humanos não podem avaliar qualidades subjetivas, como tom ou clareza.
Resposta incorreta.
É o mesmo que usar "Verificações baseadas em código".
Resposta incorreta.
Ela fornece o maior volume de dados, mas com a menor qualidade.
Resposta incorreta.
Ele não é escalonável em comparação com métodos automatizados.
Muito bem, é isso mesmo!