Terminez de configurer votre modèle d'évaluation de base pour exécuter vos évaluations subjectives.
Aligner et tester le juge
Vous avez un juge initial, mais vous ne pouvez pas encore lui faire confiance. Votre juge n'est prêt que lorsqu'il est systématiquement d'accord avec le jugement humain.
Créer un ensemble de données d'alignement
Pour calibrer votre juge, vous avez besoin d'un ensemble de données d'alignement. Il s'agit d'une petite collection d'entrées et de sorties de haute qualité qui a été évaluée manuellement par des humains. Cet ensemble de données sert de vérité terrain. Vous l'utiliserez pour vérifier que la logique du juge correspond toujours à vos attentes.
Votre ensemble de données d'alignement doit contenir 30 à 50 paires entrée/sortie. L'ensemble est suffisamment grand pour couvrir certains cas extrêmes, mais suffisamment petit pour que vous puissiez l'étiqueter en peu de temps.
Dans l'exemple ThemeBuilder, une entrée de l'ensemble de données d'alignement se présente comme suit (entrée, sortie, libellé humain) :
{
"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."
}
}
}
Pour générer des entrées et des sorties, vous pouvez extraire des journaux de production, créer manuellement les données, utiliser un LLM (données synthétiques) ou commencer par quelques échantillons sélectionnés manuellement et demander à un LLM d'augmenter votre ensemble de données.
Une fois vos entrées et sorties prêtes, utilisez votre grille d'évaluation pour les étiqueter comme PASS ou FAIL avec votre équipe. Il devient votre vérité terrain.
Assurez-vous que votre ensemble de données d'alignement inclut des exemples PASS et FAIL de différents niveaux de difficulté. Par exemple :
- 10 exemples de cas de parcours idéal que votre évaluateur doit libeller
PASS. - Voici 20 exemples de cas que votre juge doit classer comme
FAIL:- Échecs évidents, par exemple une devise très toxique ou complètement hors marque.
- Échecs subtils : par exemple, une devise grammaticalement parfaite, mais un peu trop formelle pour une marque ludique, ou qui ne correspond que partiellement au ton.
Votre juge LLM est un gardien. L'aligner sur un ensemble de données contenant plus d'échecs que de réussites vous donne plus d'occasions d'ajuster la grille d'évaluation pour détecter les échecs et, en fin de compte, améliorer la capacité du juge à détecter les échecs.
Une fois votre ensemble de données d'alignement prêt, il devrait ressembler à ceci :
Cas de parcours heureux (PASS)
// 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."
}
}
}
Échecs évidents (ÉCHEC)
// 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."
}
}
},
Échecs subtils (ÉCHEC)
// 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."
}
}
},
Alignement de la couverture
Maintenant que votre vérité terrain est prête, il est temps d'aligner le juge sur les étiquettes humaines. Votre objectif est de vous assurer que le modèle d'évaluation est toujours d'accord avec vous et imite le jugement humain. Vous pouvez calculer un score d'alignement en tant que pourcentage de libellés créés par le juge qui correspondent aux libellés créés par l'utilisateur.
// total = all test cases
// aligned = test cases where humanEval.label === llmJudgeEval.label
// For example, PASS and PASS
const alignment = (aligned / total) * 100;
Définissez un score d'alignement cible, par exemple 85%. Votre cible peut varier en fonction de votre cas d'utilisation.
Exécutez votre modèle de juge sur votre ensemble de données d'alignement. Si votre score d'alignement est inférieur à votre cible, lisez la justification du juge pour comprendre pourquoi il a été induit en erreur. Modifiez les instructions système et le prompt du juge pour combler les lacunes. Répétez cette opération jusqu'à ce que vous atteigniez votre score cible.
Bonnes pratiques
Pour aider le juge à évaluer les résultats de manière cohérente, suivez ces bonnes pratiques :
- Évitez le surapprentissage. Les instructions doivent être généralisées et ne pas être trop spécifiques à votre ensemble de données d'alignement. Si vous fournissez des instructions spécifiques, par exemple en demandant d'éviter certaines expressions, le juge réussira ce test d'alignement spécifique, mais ne parviendra pas à généraliser les nouvelles données. Ce problème est appelé "surapprentissage".
- Optimisez vos instructions système et votre requête de jugement. Les techniques d'optimisation des prompts incluent la modification manuelle des prompts, la demande à un autre LLM de suggérer des améliorations ou l'application de modifications basées sur une combinaison de ces techniques. Les techniques d'optimisation des requêtes peuvent aller du manuel au très avancé, par exemple les algorithmes qui imitent l'évolution biologique. Conservez un journal de vos modifications pour pouvoir les annuler si nécessaire.
Pour voir l'alignement en action dans ThemeBuilder, exécutez vous-même le test d'alignement.
Effectuer un test de contrainte avec le bootstrapping
Atteindre votre objectif d'alignement de 85% ne garantit pas que votre juge fonctionnera bien avec des données réelles. Testez la résistance de votre juge à l'aide d'un hack statistique appelé bootstrapping. L'amorçage crée de nouvelles versions de votre ensemble de données sans effort de labellisation supplémentaire.
** Test : rééchantillonnez de manière aléatoire 30 éléments de votre ensemble de données avec remplacement. Lors d'une exécution, un cas délicat peut être sélectionné cinq fois, ce qui rend le test beaucoup plus difficile. Exécutez le test d'alignement plusieurs fois sur ces ensembles aléatoires, puis calculez l'alignement moyen et la variance du score pour ces exécutions. Il n'y a pas de nombre magique, mais 10 itérations constituent une bonne base pour les projets de taille moyenne. Effectuez plus d'itérations pour une confiance accrue. ** Correction : Si votre score d'alignement varie considérablement (variance élevée), votre juge n'est pas encore fiable. Votre score initial était un coup de chance dû à quelques cas faciles. Élargissez votre grille d'évaluation et ajoutez des exemples plus variés et complexes à votre ensemble de données d'alignement.
Vous pouvez l'essayer vous-même.
Tester l'auto-cohérence
Le juge ne peut être considéré comme fiable que s'il donne toujours la même réponse pour la même entrée. Si vous avez défini la température sur 0, le juge doit être cohérent à 100 %. Testez pour confirmer.
- Test : exécutez votre juge plusieurs fois sur le même ensemble de données (par exemple, un tirage aléatoire de votre ensemble de données d'alignement). Calculez la variance pour chaque cas de test sur ces répétitions. Visez une cohérence de 100 % (variance nulle). Si la variance est supérieure à zéro, le test échoue, car cela signifie que votre juge fournit des réponses différentes pour la même entrée.
- Solution : Il est possible que votre prompt de juge soit ambigu ou que la température soit trop élevée.
Réécrivez les parties du prompt qui semblent floues, en particulier votre grille de notation. Si ce n'est pas déjà fait, baissez la température à 0 (ou réglez
thinking_levelsur "élevé").
Pour voir cette fonctionnalité en action, exécutez le test vous-même.
Examen final
L'amorçage vous a aidé à effectuer une vérification initiale pour éviter le surapprentissage. Vous allez maintenant exécuter un test final à l'aide de données récentes. Il s'agit de votre confirmation finale que le juge peut correctement noter les nouvelles entrées.
- Test : conservez un ensemble de données d'examen final distinct de 20 échantillons annotés par des humains que vous n'avez pas utilisés lors de l'alignement. Exécutez votre juge sur cet ensemble.
- Corriger : si votre score d'alignement reste élevé, votre juge est prêt ! Si le score s'effondre, vous avez probablement surajusté votre modèle : vous avez trop modifié votre requête pour qu'elle corresponde à vos données d'alignement spécifiques. Élargissez votre requête, votre grille d'évaluation et vos exemples few-shot.
Pour voir cette fonctionnalité en action, exécutez le test vous-même.
Résumé
Vous avez exécuté différents tests pour créer votre juge de base, y compris :
- Le test d'alignement vérifie si le juge est correct.
- Les tests d'amorçage et finaux vérifient la sensibilité des données. Le juge reste-t-il suffisamment souvent correct face à de nouvelles données ?
- Le test d'autoconsistance mesure le bruit du système, c'est-à-dire l'impact de l'aléatoire interne du juge LLM sur les résultats.