Subjektive Bewertungen mit einem einfachen Judge-Modell durchführen:
Regelbasierte Auswertungen können deterministische Antworten prüfen. 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 mithilfe grundlegender statistischer Messwerte labeln.
Erstes Judge-Modell erstellen
- Methode zur Anpassung des Modells auswählen Sie können die Ergebnisse optimieren oder Prompts entwickeln.
- Wählen Sie ein Modell aus. Das kann ein Foundation Model oder ein anderes LLM ohne Fachwissen sein.
- Bewertungsmethode auswählen Entscheide, ob der Prüfer eine binäre oder numerische Skala für die Bewertung von ThemeBuilder-generierten Designs verwenden soll.
- Konfigurieren Sie den Judge. Passen Sie die Einstellungen des Modells an (z. B. Temperatur und strukturierte Ausgabe), damit es für Bewertungsaufgaben geeignet ist.
- Ersten Prompt schreiben Entwerfen Sie eine erste Version der Anweisungen und des Prompts für das Judge-System, einschließlich einer Bewertungsrubrik und Beispielen.
- Alignment-Dataset erstellen Erstellen Sie eine vielfältige, hochwertige Sammlung guter und schlechter ThemeBuilder-Ausgaben und kennzeichnen Sie sie entsprechend, z. B. ein gutes Motto, ein schädliches Motto und eine markenfremde Farbpalette.
- 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 den Urteilen von Menschen übereinstimmen. Testen Sie den Judge abschließend, um seine Zuverlässigkeit und Fähigkeit zu bestätigen, seinen Ansatz auf neue Eingaben zu verallgemeinern.
Anpassungsmethode auswählen
Die meisten Foundation Models sind Generalisten. Ein Judge-Modell fungiert als Fachexperte.
Die wichtigsten Optionen zum Erstellen eines Judge-Modells sind:
- Prompt-Engineer für ein LLM
- Modell abstimmen
- Verwenden Sie ein für die Bewertung optimiertes, feinabgestimmtes LLM, z. B. JudgeLM. Für diese Option müssen Sie benutzerdefinierte Modellgewichte 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
Wählen Sie für das Bewertungsmodell ein Modell mit starken Begründungsfunktionen aus. Da Sie Auswertungen in der CI/CD-Pipeline ausführen, sind Geschwindigkeit und Kosten ebenfalls entscheidend.
Experimentieren Sie mit verschiedenen Modellen und Techniken, um die optimale Lösung zu finden.
- Beginnen Sie mit einem größeren, leistungsstärkeren Modell, um einen hohen Standard zu setzen, und skalieren Sie dann nach und nach auf kleinere Modelle herunter. Alternativ können Sie mit kleineren Modellen beginnen und diese dann skalieren.
- Kombinieren: Verwenden Sie ein schnelles, kostengünstiges Modell für tägliche Pull-Anfrage-Prüfungen und ein leistungsstärkeres Modell für Ihre finalen Release-Tests. 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 binärer 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 mag intuitiv erscheinen, aber Studien zeigen, 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 das Modell dadurch zu einer klaren Entscheidung gezwungen wird. Bei Menschen wird dies als Rater-Effekt bezeichnet.
Judge konfigurieren
Verwenden Sie Parameter und Anweisungen, damit Ihr Judge konsistente, strukturierte Ausgaben erstellt.
- Systemanweisungen festlegen: Weisen Sie dem Judge eine strenge Expertenrolle zu.
- Temperatur oder Denkebene festlegen: Der Richter 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_levelaufHIGH. Wenn Sie ein anderes Modell verwenden, stellen Sie die Temperatur auf0oder einen Wert in der Nähe von0ein. Verwenden Sie in jedem Fall die Chain-of-Thought-Technik, damit das Modell nachdenkt, bevor es eine Entscheidung trifft. - Ausgabe des Prüfers strukturieren: Ein vorhersehbares JSON-Objekt lässt sich im Rest der Codebasis viel einfacher wiederverwenden. Verwenden Sie ein
EvalResult-Schema, für das einlabel(PASSoderFAIL) und einrationale-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. Erstellen Sie in dieser Phase die erste Version dieses Prompts. Sie verfeinern ihn iterativ, wenn Sie den Judge im nächsten Schritt abstimmen.
Die Effektivität des Prüfers hängt von den bereitgestellten Anweisungen ab. 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.
- Bewertungskriterien definieren: Geben Sie dem Juror detaillierte Bewertungsrichtlinien. Was beschreibt den erwarteten Ton für eine ideale Ausgabe? Ein LLM kann Ihnen beim Erstellen des Bewertungsschemas helfen.
- Few-Shot-Prompts verwenden: Fügen Sie
PASS- undFAIL-Beispiele ein. - Chain-of-Thought-Prompting verwenden: Weisen Sie das Modell an, die Begründung zu schreiben, bevor es ein Label zuweist. Dadurch kann die Genauigkeit erheblich verbessert werden. Im Denkmodus von
HIGHist das nicht so wichtig, aber es ist trotzdem eine gute Vorgehensweise.
Schreiben Sie drei separate Prompts für die drei spezifischen Kriterien:
- Motto passt zur Marke.
- Farbe passt zur Marke.
- Unangemessene Äußerungen (Toxicity) Der Aufforderungstext für die Toxizität kann aus Toxizitätsattributen, die von der Community bereitgestellt wurden, abgeleitet werden.
Jeder Prompt muss eine klare Bewertungsschema und Few-Shot-Beispiele mit einer Begründung enthalten. Geben Sie in den Few-Shot-Beispielen die Begründung vor der eigentlichen Punktzahl an, um das Chain-of-Thoughts-Muster anzuwenden und zu zeigen, wie der Richter argumentiert.
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 (such as 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 Grundlegenden Judge einrichten, Teil 2, um den Judge mit Abgleich und Tests fertigzustellen.