Configurar um modelo de juiz básico (parte 2)

Conclua a configuração do modelo de juiz básico para começar a fazer suas avaliações subjetivas.

Alinhar e testar o juiz

Você tem um juiz inicial, mas ainda não pode confiar nele. Seu juiz só estará pronto quando concordar consistentemente com o julgamento humano.

Criar um conjunto de dados de alinhamento

Para calibrar seu avaliador, você precisa de um conjunto de dados de alinhamento. É uma pequena coleção de entradas e saídas de alta qualidade que foram classificadas manualmente por humanos. Esse conjunto de dados funciona como sua informação empírica. Use-o para<br>verificar se a lógica do juiz está alinhada às suas expectativas.

O conjunto de dados de ajuste precisa ter 30 a 50 pares de entrada e saída. O conjunto é grande o suficiente para abranger alguns casos extremos, mas pequeno o suficiente para ser rotulado em um curto período.

No exemplo do ThemeBuilder, uma entrada no conjunto de dados de alinhamento é assim: (entrada, saída, rótulo humano):

{
  "id": "sample-014",
  "userInput": {
    "companyName": "Rawrr!",
    "audience": "kids 5-10",
    "tone": ["prehistoric", "loud", "fun"]
  },
  "appOutput": {
    "motto": "Experiencing the prehistoric era."
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "FAIL",
      "rationale": "While on-theme, this motto is too formal for kids.
        It fails to capture the required 'loud' and 'fun' energy."
    }
  }
}

Para gerar entradas e saídas, você pode extrair de registros de produção (se disponíveis), criar os dados manualmente, usar um LLM (dados sintéticos) ou começar com algumas amostras escolhidas a dedo e pedir que um LLM aumente seu conjunto de dados.

Quando as entradas e saídas estiverem prontas, use a rubrica para rotular as saídas como PASS ou FAIL com sua equipe. Essa é sua informação empírica.

Verifique se o conjunto de dados de alinhamento inclui exemplos PASS e FAIL de diferentes níveis de dificuldade, por exemplo:

  • 10 exemplos de casos de caminho feliz que seu avaliador rotula como PASS.
  • 20 exemplos de casos que seu juiz rotula como FAIL:
    • Falhas óbvias, por exemplo, um lema altamente tóxico ou completamente fora da marca.
    • Falhas sutis, por exemplo, um lema gramaticalmente perfeito, mas um pouco formal demais para uma marca divertida ou que só se encaixa parcialmente no tom.

Seu LLM Judge é um guardião. Alinhar em um conjunto de dados que contém mais falhas do que casos aprovados oferece mais oportunidades de ajustar a rubrica para detectar falhas e, por fim, melhora a capacidade do avaliador de detectar falhas.

Depois que o conjunto de dados de ajuste estiver pronto, ele vai ficar assim:

Casos de cenário ideal (APROVADO)

// Easy, clean input + Good output
{
  "id": "sample-001",
  "userInput": {
    "companyName": "Kinetica",
    "description": "Carbon-fiber plated performance footwear engineered for
    elite marathon runners.",
    "audience": "competitive triathletes and professional runners",
    "tone": [
      "aggressive",
      "high-performance",
      "technical"
    ]
  },
  "appOutput": {
    "motto": "Unlock your kinetic potential.",
    "colorPalette": {
      "textColor": "#FFFFFF",
      "backgroundColor": "#000000",
      "primary": "#DC2626",
      "secondary": "#E2E8F0"
    }
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "PASS",
      "rationale": "This motto powerfully aligns the brand's technical
      engineering with the ambitious goals of its elite athletic audience.
      Relevance: Uses 'kinetic' to expertly link the brand to physical
      energy. Audience appeal: 'Unlock your potential' resonates perfectly
      with competitive runners. Tone consistency: Nails the required
      aggressive, high-performance marks."
    },
    "mottoToxicity": {
      "label": "PASS",
      "rationale": "Perfectly clean and motivational. No offensive or
      exclusionary language."
    },
    "colorBrandFit": {
      "label": "PASS",
      "rationale": "The chosen color palette perfectly mirrors Kinetica's
      aggressive and technical brand identity by utilizing high-impact tones
      that resonate with elite athletes. Relevance: Psychological association:
      Blood red creates urgency and speed. Harmony: Stark contrast against
      black/white feels highly technical.
      Appropriateness: Extremely effective aesthetic for premium athletic gear."
    }
  }
}

Falhas óbvias (FAIL)

// Off-brand color palette
{
  "id": "sample-014",
  "userInput": {
    "companyName": "Rawrr!",
    "description": "Dinosaur themed playground and party venue.",
    "audience": "kids 5-10",
    "tone": [
      "prehistoric",
      "loud",
      "fun"
    ]
  },
  "appOutput": {
    "motto": "Experiencing the prehistoric era.",
    "colorPalette": {
      "textColor": "#4A4A4A",
      "backgroundColor": "#F5F5DC",
      "primary": "#D2B48C",
      "secondary": "#C0C0C0"
    }
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "FAIL",
      "rationale": "While the motto relates to the dinosaur theme, its overly
      academic and formal tone fails to capture the loud and fun energy
      essential for a children's playground brand. Relevance: Effectively fits
      the dinosaur theme. Audience appeal: A bit formal ('Experiencing' versus
      something punchy), acceptable for parents booking events but should be
      more exciting for kids, it's too formal and academic for a children's
      playground, lacks the 'loud' and 'fun' energy requested in the tone.
      Tone consistency: It touches on the 'prehistoric' element adequately."
    },
    "mottoToxicity": {
      "label": "PASS",
      "rationale": "A completely family-friendly, educational-sounding statement."
    },
    "colorBrandFit": {
      "label": "FAIL",
      "rationale": "This muted and sophisticated color scheme fails to capture
      the high-energy, prehistoric spirit required to attract and excite a young
      audience. Relevance: Psychological association: The 'sad beige', tan, and
      muted greys evoke a sterile, 'adult minimalist' home décor aesthetic.
      Harmony: The colors are muddy and lifeless. Appropriateness: For a 'loud'
      and 'fun' children's playground targeting 5-10 year olds, this palette is
      a spectacular failure. It desperately needs vibrant, exciting primary
      colors to attract kids."
    }
  }
},

Falhas sutis (FAIL)

// Almost on-brand color palette
{
  "id": "sample-023",
  "userInput": {
    "companyName": "Apex Dental",
    "description": "High-end cosmetic dentistry specializing in porcelain
        veneers and laser whitening.",
    "audience": "Professionals seeking a perfect smile",
    "tone": [
      "clean",
      "professional",
      "bright"
    ]
  },
  "appOutput": {
    "motto": "Designing your brightest smile.",
    "colorPalette": {
      "textColor": "#1A202C",
      "backgroundColor": "#FFFFFF",
      "primary": "#FFC107",
      "secondary": "#E2E8F0"
    }
  },
  "humanEvaluation": {
    "mottoBrandFit": {
      "label": "PASS",
      "rationale": "The motto perfectly captures the premium essence of the
      brand by combining high-end dental aesthetics with a clear appeal to a
      professional clientele. Relevance: Relates perfectly to cosmetic
      dentistry and teeth whitening. Audience appeal: 'Brightest smile' is a
      highly effective, aspirational hook for professionals wanting to look
      their best. Tone consistency: Clean, upbeat, and exceedingly professional."
    },
    "mottoToxicity": {
      "label": "PASS",
      "rationale": "A very positive, medical-grade, and safe statement."
    },
    "colorBrandFit": {
      "label": "FAIL",
      "rationale": "The choice of bright yellow is a fundamental branding
      failure for a cosmetic dental practice as it creates a direct and
      repellent visual link to tooth discoloration, undermining the clinic's
      high-end whitening positioning. Relevance: Psychological association:
      While yellow technically fulfills the word 'bright', in the specific
      context of dentistry, a primary bright yellow is subconsciously and
      intensely associated with plaque, decay, and stained teeth.
      Harmony: It stands out strongly but sends the wrong message.
      Appropriateness: This is a massive psychological misstep for a whitening
      clinic. It subverts trust in their core service by visually reminding
      customers of the problem rather than the solution."
    }
  }
},

Alinhamento de alcance

Com as informações empíricas prontas, alinhe o juiz com os rótulos humanos. Seu objetivo é garantir que o juiz concorde com você de forma consistente e imite o julgamento humano. É possível calcular uma pontuação de alinhamento como a porcentagem de rótulos criados por juízes que correspondem aos rótulos criados por humanos.

// total = all test cases
// aligned = test cases where humanEval.label === llmJudgeEval.label
// For example, PASS and PASS
const alignment = (aligned / total) * 100;

Defina uma pontuação de alinhamento desejada, por exemplo, 85%. A meta pode variar de acordo com seu caso de uso.

Execute o modelo de avaliação no conjunto de dados de alinhamento. Se a pontuação de alinhamento for menor que a meta, leia a justificativa do avaliador para entender por que ele forneceu um rótulo incorreto. Modifique as instruções do sistema e o comando do juiz para preencher as lacunas. Repita esse processo até atingir a pontuação desejada.

Práticas recomendadas

Para ajudar o juiz a pontuar de forma consistente, siga estas práticas recomendadas:

  • Evite o overfitting. Generalize as instruções e evite torná-las muito específicas para seu conjunto de dados de alinhamento. Se você fornecer instruções específicas, como evitar determinadas frases, o avaliador vai passar nesse teste de alinhamento específico, mas não vai conseguir generalizar para novos dados. Esse problema é conhecido como overfitting.
  • Otimize as instruções do sistema e avalie o comando. As técnicas de otimização de comandos incluem modificar manualmente os comandos, pedir a outro LLM para sugerir melhorias ou aplicar mudanças com base em uma combinação dessas técnicas. As técnicas de otimização de comandos podem variar de manuais a muito avançadas, por exemplo, algoritmos que imitam a evolução biológica. Mantenha um registro das suas mudanças para revertê-las se necessário.

Para ver o alinhamento em ação no ThemeBuilder, execute o teste de alinhamento.

Saída do terminal de um teste de alinhamento mostrando taxas de aprovação/reprovação.
Exemplo de teste de alinhamento.

Teste de estresse com bootstrap

Atingir a meta de 85% de alinhamento não garante que seu avaliador tenha uma boa performance com dados reais. Teste de estresse seu juiz com uma técnica estatística chamada bootstrap. O bootstrapping cria novas versões do conjunto de dados sem esforço extra de rotulagem.

  • Teste:faça uma reamostragem aleatória de 30 itens do seu conjunto de dados com substituição. Em uma execução, um caso difícil pode ser escolhido cinco vezes, o que torna o teste muito mais difícil. Execute o teste de alinhamento nesses conjuntos aleatórios várias vezes e calcule a variância média de alinhamento e pontuação nessas execuções. Não há um número específico, mas 10 iterações são um valor de referência útil para projetos de tamanho médio. Faça mais iterações para aumentar a confiança.
  • Correção:se sua pontuação de alinhamento variar muito (alta variância), seu avaliador ainda não é confiável. Sua pontuação inicial foi uma coincidência causada por alguns casos fáceis. Amplie sua rubrica e adicione exemplos mais diversos e desafiadores ao conjunto de dados de alinhamento.
Uma representação visual de um teste de bootstrap, mostrando como a reamostragem com substituição pode super ou sub-representar determinadas classes de dados.
Como os objetos são subamostrados com substituição, algumas classes podem ser representadas em excesso (bolinhas amarelas nas amostras de bootstrap 1 e 2), enquanto outras podem ser representadas em falta (bolinhas vermelhas nas amostras de bootstrap 1 e 2) ou até mesmo ausentes (bolinhas verdes na amostra de bootstrap 3). Confira a figura científica original do ResearchGate.

Teste.

Saída do terminal de um teste de bootstrap.
Exemplo de teste de bootstrap.

Teste de autoconsistência

O juiz só será confiável se sempre fornecer a mesma resposta para a mesma entrada. Se você definir a temperatura como 0, o juiz será 100% consistente. Confirme essa consistência.

  • Teste: execute seu avaliador várias vezes no mesmo conjunto de dados, por exemplo, uma seleção aleatória do conjunto de dados de alinhamento. Calcule a variância de cada caso de teste nessas repetições. Busque 100% de consistência (variância zero). Se a variância for maior que zero, o teste vai falhar porque o avaliador fornece respostas diferentes para a mesma entrada.
  • Correção: seu comando de avaliação pode ser ambíguo ou a temperatura pode estar muito alta. Reescreva partes do comando que não estão claras, principalmente a rubrica de pontuação. Diminua a temperatura para 0 (ou defina thinking_level como "alto"), se ainda não tiver feito isso.

Para ver isso em ação, execute o teste.

Saída do terminal do teste de consistência do juiz.
Neste exemplo, testamos seis amostras para cada uma das três métricas (toxicidade do lema, adequação do lema à marca e adequação da cor à marca). Os resultados foram quase totalmente estáveis, mas algumas amostras tiveram resultados inconsistentes.

Exame final

O bootstrap ajudou você a fazer uma verificação inicial para evitar o overfitting. Em seguida, você vai executar um teste final usando novos dados. Esta é sua confirmação final de que o juiz pode pontuar corretamente novas entradas.

  • Teste: mantenha um conjunto de dados de exame final separado de 20 amostras rotuladas por humanos que você não usou durante o alinhamento. Execute seu juiz nesse conjunto.
  • Correção: se a pontuação de alinhamento continuar alta, o avaliador estará pronto. Se a pontuação cair muito, isso indica overfitting: você ajustou o comando muitas vezes para passar nos dados de alinhamento específicos. Amplie seu comando, rubrica e exemplos few-shot.

Para ver isso em ação, execute o teste.

Resumo

Você executou diferentes testes para criar seu juiz básico, incluindo:

  • O teste de alinhamento verifica se o juiz está correto.
  • Bootstrapping e verificação de sensibilidade dos dados do teste do exame final: a capacidade do juiz de permanecer correto quando confrontado com novos dados.
  • O teste de autoconsistência mede o ruído do sistema, que é o quanto a aleatoriedade interna do avaliador do LLM afeta os resultados.