Einfaches Judge-Modell einrichten (Teil 1)

Subjektive Bewertungen mit einem einfachen Judge-Modell durchführen:

Mit regelbasierten Tests können deterministische Antworten geprüft werden. Um subjektive Qualitäten zu bewerten, verwenden Sie die LLM-as-a-judge-Technik.

In diesem Modul erfahren Sie, wie Sie Ihren ersten Judge erstellen, indem Sie Daten selbst oder mit Ihrem Team labeln und grundlegende statistische Messwerte verwenden.

Anleitung zum Erstellen des ersten Judge-Modells

  1. Methode zur Anpassung des Modells auswählen Entscheiden Sie, ob Sie das Modell feinabstimmen oder Prompts entwickeln möchten.
  2. Wählen Sie ein Modell aus. Das kann ein Foundation Model oder ein anderes LLM ohne Fachwissen sein.
  3. Bewertungsmethode auswählen Entscheide, ob der Richter eine binäre oder numerische Skala für die Bewertung von ThemeBuilder-generierten Designs verwenden soll.
  4. Konfigurieren Sie den Judge. Passen Sie die Einstellungen des Modells an (z. B. Temperatur und strukturierte Ausgabe), damit es für Bewertungsaufgaben geeignet ist.
  5. Erstellen Sie den ersten Prompt. Entwerfen Sie eine erste Version der Anweisungen und des Prompts für das Judge-System, einschließlich einer Bewertungsrubrik und Beispielen.
  6. Alignment-Dataset erstellen Stellen Sie eine vielfältige, hochwertige Sammlung guter und schlechter ThemeBuilder-Ausgaben zusammen und kennzeichnen Sie sie entsprechend (z. B. ein gutes Motto, ein schädliches Motto und eine markenfremde Farbpalette).
  7. Judge abstimmen und testen: Verwenden Sie das Ausrichtungs-Dataset, um den Judge-Prompt (Systemanweisungen und Hauptprompt) iterativ zu optimieren. Wiederholen Sie diesen Vorgang, bis die Urteile des Modells durchgehend mit denen der Prüfer übereinstimmen. Testen Sie den Judge schließlich, um zu bestätigen, dass er zuverlässig ist und seinen Ansatz auf neue Eingaben verallgemeinern kann.

Ein Bewertungsmodell besteht aus einem LLM, Einstellungen, einem System-Prompt und einem Bewertungs-Prompt.

Anpassungsmethode auswählen

Die meisten Foundation Models sind Generalisten. Ein Judge-Modell sollte wie ein Domänenexperte denken.

Die wichtigsten Optionen zum Erstellen eines Judge-Modells sind:

  1. Prompt-Engineering für ein LLM
  2. Modell abstimmen
  3. Verwenden Sie ein für die Bewertung optimiertes, feinabgestimmtes LLM, z. B. JudgeLM. Bei dieser Option müssen Sie benutzerdefinierte Modellgewichte selbst hosten oder einen Cloud-Anbieter verwenden, der das Hosten von Open-Source-Modellen unterstützt.

Für die ThemeBuilder-Bewertungen in diesem Kurs empfehlen wir Prompt-Engineering. Mit Prompt Engineering lassen sich hervorragende Ergebnisse erzielen, und das mit weniger Entwicklungsaufwand als bei den Alternativen.

Modell auswählen

Bei der Auswahl eines Modells für Ihren Judge sollten Sie auf starke Argumentationsfähigkeiten achten. Da Sie Auswertungen in Ihrer CI/CD-Pipeline ausführen, sind auch Geschwindigkeit und Kosten entscheidend.

Experimentieren Sie mit verschiedenen Modellen und Techniken, um die beste Lösung zu finden.

  • Beginnen Sie mit einem größeren, leistungsstärkeren Modell, um einen hohen Standard zu setzen, und skalieren Sie dann schrittweise herunter zu kleineren Modellen. Oder umgekehrt.
  • Kombinieren: Verwenden Sie ein schnelles, kostengünstiges Modell für tägliche PR-Prüfungen und ein leistungsstärkeres Modell für die Tests der endgültigen Version. Oder Sie kombinieren ein allgemeines LLM mit einem kleinen, spezialisierten Modell für bestimmte Aufgaben wie die Erkennung schädlicher Inhalte, um die Geschwindigkeit zu erhöhen.

In diesem Kurs wird Gemini 3 Flash als Judge-Modell verwendet. Gemini 3 Flash bietet die Geschwindigkeit und die Tiefe der Argumentation, die für den Beispielanwendungsfall der Bewertung von ThemeBuilder-Ausgaben erforderlich sind. Die Muster in diesem Kurs können jedoch auf jedes beliebige Modell angewendet werden.

Bewertungsmethode auswählen

Sie können subjektive Ausgaben mit binären Labels PASS und FAIL oder mit einer numerischen Bewertung bewerten, z. B. „Wie gut passt dieses Motto auf einer Skala von 1 bis 5 zur Marke?“.

Wir empfehlen die Verwendung von binären Labels.

Bewertungskriterien Bewertungsmethode Messwert
Das Motto passt zur Marke, zur Zielgruppe und zum Ton. LLM Judge PASS- oder FAIL-Label
Die Farbpalette passt zur Marke, zum Publikum und zur Tonalität. LLM Judge PASS- oder FAIL-Label
Das Motto ist nicht unangemessen LLM Judge PASS- oder FAIL-Label

Eine numerische Punktzahl (1–10) mag intuitiv erscheinen, Studien zeigen jedoch, dass LLMs (und Menschen) dazu neigen, ihre Punktzahlen in der Mitte zu gruppieren oder sie aus Höflichkeit zu erhöhen. Kategorien oder binäre Labels wie PASS und FAIL führen oft zu besseren Ergebnissen, da sie das Modell zu einer klaren Entscheidung zwingen. Bei Menschen wird dies als Rater-Effekt bezeichnet.

Judge konfigurieren

Verwenden Sie Parameter und Anweisungen, damit Ihr Judge konsistente, strukturierte Ausgaben erstellt.

  • Systemanweisungen festlegen: Geben Sie dem Judge eine strenge Expertenpersona.
  • Temperatur oder Denkebene festlegen: Der Prüfer muss konsistent sein. Wenn Sie ein Reasoning-Modell wie Gemini Flash verwenden, das eine gewisse Zufälligkeit erfordert, um zwischen logischen Schritten zu wechseln, behalten Sie die Standardtemperatur bei, setzen Sie aber thinking_level auf HIGH. Wenn Sie ein anderes Modell verwenden, stellen Sie die Temperatur auf 0 oder einen Wert in der Nähe von 0 ein. Verwenden Sie in jedem Fall die Chain-of-Thought-Technik, damit das Modell nachdenkt, bevor es eine Entscheidung trifft.
  • Ausgabe des Prüfmodells strukturieren: Ein vorhersehbares JSON-Objekt lässt sich im Rest der Codebasis viel einfacher wiederverwenden. Verwenden Sie ein EvalResult-Schema, für das ein label (PASS oder FAIL) und ein rationale-String erforderlich sind.

In Ihrem ThemeBuilder-Beispiel:

Konfiguration des Richters

// 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"
}

Vollständiges Codebeispiel ansehen

Ausgangsprompt schreiben

Sie haben bereits Systemanweisungen konfiguriert. Entwerfen Sie nun den Haupt-Judge-Prompt. In dieser Phase erstellen Sie nur eine erste Version dieses Prompts. Sie werden ihn iterativ verfeinern, wenn Sie im nächsten Schritt Ihren Judge abstimmen.

Die Effektivität Ihres Prüfers hängt von den Anweisungen ab, die Sie ihm geben. Vermeiden Sie allgemeine Fragen wie „Ist dieses Motto gut?“, bei denen gut nicht definiert ist. Geben Sie stattdessen eine Struktur vor, um klare, konsistente Ergebnisse zu erhalten.

  • Bewertungsschema definieren: Geben Sie dem Juror detaillierte Bewertungsrichtlinien. Was beschreibt den erwarteten Ton für eine ideale Ausgabe? Sie können ein LLM bitten, Ihnen beim Erstellen des Bewertungsschemas zu helfen.
  • Few-Shot-Prompts verwenden: Fügen Sie PASS- und FAIL-Beispiele ein.
  • Chain-of-Thought-Prompts verwenden: Weisen Sie das Modell an, seine Begründung zu formulieren, bevor es ein Label zuweist. So lässt sich die Genauigkeit erheblich verbessern. Im Denkmodus von HIGH ist das nicht so wichtig, aber es ist trotzdem eine gute Vorgehensweise.

Schreiben Sie drei separate Prompts für die Notengebung für Ihre drei spezifischen Kriterien:

Jeder Prompt muss eine klare Bewertungsgrundlage und Few-Shot-Beispiele mit einer Begründung enthalten. Geben Sie in Ihren Few-Shot-Beispielen die Begründung vor der eigentlichen Punktzahl an, um das Chain-of-Thoughts-Muster anzuwenden und dem Judge zu zeigen, wie er argumentieren soll.

Die vollständigen Prompts finden Sie im Code-Repository. Ein Beispiel für einen Prompt zur Beurteilung der Markenpassung des Mottos:

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}"`;
}

Abstimmen und testen

Lesen Sie Einen einfachen Judge einrichten, Teil 2, um den Judge mit Ausrichtung und Tests fertigzustellen.