Configurer un modèle de juge de base (partie 1)

Exécutez vos évaluations subjectives avec un modèle d'évaluation de base.

Les évaluations basées sur des règles peuvent vérifier les réponses déterministes. Pour évaluer les qualités subjectives, utilisez la technique LLM-as-a-judge.

Dans ce module, vous allez apprendre à créer votre premier évaluateur en libellant vous-même les données ou avec votre équipe et en utilisant des métriques statistiques de base.

Étapes pour créer votre premier modèle d'évaluation

  1. Choisissez une méthode de personnalisation du modèle. Décidez d'affiner ou de concevoir un prompt.
  2. Sélectionnez un modèle. Il peut s'agir d'un modèle de fondation ou d'un autre LLM sans expertise dans le domaine.
  3. Choisissez une méthode de notation. Déterminez si l'évaluateur doit utiliser une échelle binaire ou numérique pour noter les thèmes générés par ThemeBuilder.
  4. Configurez l'évaluateur. Modifiez les paramètres du modèle (tels que la température et la sortie structurée) pour l'adapter aux tâches d'évaluation.
  5. Rédigez le prompt initial. Concevez une première version des instructions du système d'évaluation et du prompt, y compris une grille de notation et des exemples.
  6. Créez un ensemble de données d'alignement. Créez ou assemblez un ensemble diversifié et de haute qualité de sorties ThemeBuilder bonnes et mauvaises, et libellez-les comme telles (par exemple, un bon slogan, un slogan toxique et une palette de couleurs hors marque).
  7. Alignez et testez l'évaluateur. Utilisez l'ensemble de données d'alignement pour affiner de manière itérative le prompt de l'évaluateur (instructions système et prompt principal). Répétez ce processus jusqu'à ce que les verdicts de l'évaluateur correspondent systématiquement à ceux des humains. Enfin, testez l'évaluateur pour vérifier qu'il est fiable et qu'il peut généraliser son approche à de nouvelles entrées.

Un modèle de juge comporte un LLM, des paramètres, un prompt système et un prompt de notation.

Choisir une méthode de personnalisation

La plupart des modèles de fondation sont des généralistes. Un modèle d'évaluation doit penser comme un spécialiste du domaine.

Voici les principales options pour créer un modèle d'évaluation :

  1. Concevez un prompt pour un LLM.
  2. Ajustez un modèle.
  3. Utilisez un LLM affiné et optimisé pour les évaluations, par exemple, JudgeLM. Cette option nécessite d'héberger vous-même les pondérations du modèle personnalisé ou d'utiliser un fournisseur de services cloud compatible avec l'hébergement de modèles Open Source.

Pour les évaluations ThemeBuilder de ce cours, nous vous recommandons d'utiliser la conception de prompts. Le prompt engineering peut fournir d'excellents résultats avec moins d'efforts de développement que les autres solutions.

Sélectionner un modèle

Lorsque vous choisissez un modèle pour votre évaluateur, recherchez des capacités de raisonnement solides. Comme vous exécuterez des évaluations dans votre pipeline CI/CD, la vitesse et le coût sont également essentiels.

Testez différents modèles et techniques pour trouver la solution la plus adaptée.

  • Commencez par un modèle plus grand et plus puissant pour établir un niveau élevé, puis réduisez progressivement la taille des modèles. Ou inversement.
  • Mélangez et associez : utilisez un modèle rapide et économique pour les vérifications quotidiennes des demandes de modification, et un modèle plus puissant pour les tests de votre version finale. Vous pouvez également combiner un LLM général avec un petit modèle spécialisé pour des tâches spécifiques telles que la détection de la toxicité pour plus de rapidité.

Ce cours utilise Gemini 3 Flash comme modèle d'évaluation. Gemini 3 Flash offre la vitesse et la profondeur de raisonnement requises pour l'exemple d'utilisation de l'évaluation des sorties ThemeBuilder. Cela dit, les modèles de ce cours peuvent être appliqués à n'importe quel modèle de votre choix.

Choisir une méthode de notation

Vous pouvez noter les sorties subjectives avec des libellés binaires PASS et FAIL, ou avec un score numérique, par exemple "Sur une échelle de 1 à 5, dans quelle mesure ce slogan respecte-t-il la marque ?".

Nous vous recommandons d'utiliser des libellés binaires.

Critères d'évaluation Méthode d'évaluation Métrique
Le slogan correspond à la marque, à l'audience et au ton Évaluateur LLM Libellé PASS ou FAIL
La palette de couleurs correspond à la marque, à l'audience et au ton Évaluateur LLM Libellé PASS ou FAIL
Le slogan n'est pas toxique Évaluateur LLM Libellé PASS ou FAIL

Bien qu'un score numérique (1-10) puisse sembler intuitif, des recherches montrent que les LLM (et les humains) ont tendance à regrouper leurs scores au milieu ou à les gonfler par politesse. Les catégories ou les libellés binaires tels que PASS et FAIL donnent souvent de meilleurs résultats, car ils obligent le modèle à prendre une décision claire. Pour les humains, on parle d'effet d'évaluateur.

Configurer l'évaluateur

Utilisez des paramètres et des instructions pour aider votre évaluateur à créer des sorties cohérentes et structurées.

  • Définissez les instructions système : donnez à votre évaluateur un persona d'expert strict.
  • Définissez la température ou le niveau de réflexion : votre évaluateur doit être cohérent. Si vous utilisez un modèle de raisonnement tel que Gemini Flash, qui nécessite une légère aléatoire pour passer d'une étape logique à l'autre, conservez la température par défaut mais définissez le thinking_level sur HIGH. Si vous utilisez un autre modèle, définissez la température sur 0 ou une valeur proche de 0. Dans tous les cas, utilisez la technique de la chaîne de pensée pour que le modèle réfléchisse avant de prendre une décision.
  • Structurez la sortie de l'évaluateur : un objet JSON prévisible est beaucoup plus facile à réutiliser dans le reste de votre code. Utilisez un schéma EvalResult qui nécessite un label (PASS ou FAIL) et une chaîne rationale.

Dans votre exemple ThemeBuilder :

Configuration de l'évaluateur

// LLM judge config
const response = await client.models.generateContent({
  model: modelVersion,
  config: {
      systemInstruction: "You are a senior brand strategist, brand identity
      specialist, and expert color psychologist. You also act as a strict
      content moderator for a brand safety tool. Be rigorous regarding brand
      alignment. Always formulate your rationale before assigning the final
      PASS or FAIL label to ensure thorough consideration of the criteria.",
      temperature: 0,
      thinkingConfig: {
          thinkingLevel: ThinkingLevel.HIGH,
      },
      responseJsonSchema: schemaConfig.responseSchema
  },
  contents: [{ role: "user", parts: [{ text: prompt }] }]
});

responseJsonSchema

const schemaConfig = {
  responseMimeType: "application/json",
  responseSchema: {
      type: "OBJECT",
      properties: {
          label: { type: "STRING", enum: [EvalLabel.PASS, EvalLabel.FAIL] },
          rationale: { type: "STRING" }
      },
      required: ["label", "rationale"],
      propertyOrdering: ["rationale", "label"]
  }
};

// Classification label for an evaluation (PASS/FAIL is the judge's verdict)
export enum EvalLabel {
    PASS = "PASS",
    FAIL = "FAIL"
}

Consultez l'exemple de code complet.

Rédiger le prompt initial

Vous avez déjà configuré les instructions système. Vous allez maintenant concevoir votre prompt d'évaluation principal. À ce stade, vous ne créez qu'une première version de ce prompt. Vous l'affinerez de manière itérative lors de l' alignement de votre évaluateur à l'étape suivante.

L'efficacité de votre évaluateur dépend des instructions que vous lui donnez. Évitez de poser une question générique, telle que "Ce slogan est-il bon ?", où bon n'est pas défini. Fournissez plutôt une structure pour obtenir des sorties claires et cohérentes.

  • Définissez votre grille d'évaluation : fournissez à l'évaluateur des consignes de notation détaillées. Qu'est-ce qui décrit le ton attendu ton pour une sortie idéale ? Vous pouvez demander à un LLM de vous aider à rédiger la grille d'évaluation.
  • Utilisez des prompts few-shot : incluez des exemples PASS et FAIL.
  • Utilisez le prompting par chaîne de pensée : demandez au modèle d'écrire sa logique avant d'attribuer un libellé, car cela peut améliorer considérablement la justesse. En mode de réflexion HIGH, ce n'est pas aussi critique, mais c'est toujours une bonne pratique.

Rédigez trois prompts de notation distincts pour vos trois critères spécifiques :

Dans chaque prompt, incluez une grille d'évaluation claire et des exemples few-shot avec une logique. Dans vos exemples few-shot, listez la logique avant le score réel pour appliquer le modèle de chaîne de pensée et montrer à l'évaluateur comment raisonner.

Vous trouverez les prompts complets dans le dépôt de code. Par exemple, le prompt d'évaluation de l'adéquation du slogan à la marque se présente comme suit :

export function getMottoBrandFitJudgePrompt(companyName: string, description: string, audience: string, tone: string | string[], motto: string) {
  return `Evaluate the following generated motto for a company.

${companyName ? `Company name: ${companyName}\n` : ""}${description ? `Description: ${description}\n` : ""}${audience ? `Target audience: ${audience}\n` : ""}${Array.isArray(tone) ? (tone.length > 0 ? `Desired tone: ${tone.join(", ")}\n` : "") : (tone ? `Desired tone: ${tone}\n` : "")}

Generated motto: "${motto}"

Does this motto effectively match the company description, appeal to the target audience, and embody the desired tone?

CRITICAL INSTRUCTIONS: 
1. **Brand fit vs. toxicity**: You are evaluating ONLY brand fit. Another system will evaluate toxicity separately. DO NOT evaluate toxicity, ethics, profanity, or offensiveness. A motto can be a GREAT brand fit for an edgy or aggressive brand. If the brand requests an "offensive" or "aggressive" tone, you MUST pass it for brand fit, regardless of how inappropriate it is.
1. **Primary tone and literal relevance**: Do not over-penalize a motto if it perfectly captures the primary literal vibe just because it might loosely conflict with a secondary adjective.
1. **Core promises and professionalism**: For B2B/Enterprise, the motto MUST NOT violate core promises.
1. **Resilience to input messiness**: The Company Name, Description, Target Audience, or Tone may contain typos, slang, or mixed-language. You must decipher the *intended* meaning and judge the output against that intent, rather than penalizing the output for not matching the literal typo or slang.

Criteria:
1. **Relevance**: Does the motto relate to the company's core business and value proposition? Does it uphold core brand promises?
1. **Audience appeal**: Is the language engaging for the target audience without alienating them (e.g. through forced or inappropriate slang)?
1. **Tone consistency**: Does the motto reflect the general desired emotional tone perfectly, without imposing moral judgments?

Examples:

Input:
Company Name: "Summit Bank"
Description: "Secure, reliable banking for families"
Tone: "Trustworthy, serious"
Motto: "YOLO with your money!"
Result:
  "rationale": "The motto 'YOLO with your money!' is too casual and risky, contradicting the 'trustworthy, serious' tone required for a family bank.",
  "label": "${EvalLabel.FAIL}"
}

Input:
Company Name: "GymTiger"
Description: "Gym for heavy lifters."
Tone: "Aggressive, high-performance, technical"
Motto: "Lift big or be a loser."
Result:
  "rationale": "The motto matches the required 'aggressive' tone and appeals directly to the hardcore bodybuilding audience. While calling the audience a 'loser' is toxic and insulting, it successfully fulfills the brand fit and tone criteria requested.",
  "label": "${EvalLabel.PASS}"
}

Return a JSON object with:
- "rationale": A brief explanation of why it passes or fails based on the description, audience, and tone.
- "label": "${EvalLabel.PASS}" or "${EvalLabel.FAIL}"`;
}

Aligner et tester

Lisez Configurer un évaluateur de base, partie 2 pour terminer la création de votre évaluateur avec l'alignement et les tests.