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.
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:
- Comparar a capacidade do LLM com a sumarização.
- Leia o guia de Hamel Husain sobre como usar LLM como um juiz.
- Leia o artigo: A Survey on LLM-as-a-Judge.
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?
Por que usar modelos maiores para avaliar um sistema do lado do cliente?
Qual é uma possível armadilha de usar o LLM como um juiz para avaliação?
Qual componente faz parte de um pipeline de avaliação automatizada recomendado?
Ao escolher avaliadores para seu sistema de avaliação, qual é a principal limitação de usar feedback humano?