Start je subjectieve evaluaties met een eenvoudig beoordelingsmodel.
Op regels gebaseerde evaluaties kunnen controleren op deterministische antwoorden. Om subjectieve kwaliteiten te evalueren, gebruik je de LLM-als-rechter-techniek .
In deze module leer je hoe je je eerste beoordelingssysteem bouwt door zelf of met je team gegevens te labelen en door gebruik te maken van basisstatistische gegevens .
Steps to build your first judge model
- Kies een methode voor modelaanpassing . Besluit of u de aanpassing zelf wilt verfijnen of een engineer wilt inschakelen.
- Kies een model. Dit kan een basismodel zijn of een ander LLM-model zonder domeinexpertise.
- Kies een beoordelingsmethode. Bepaal of de jury een binaire of numerieke schaal moet gebruiken voor het beoordelen van de door ThemeBuilder gegenereerde thema's.
- Configureer de beoordelaar. Wijzig de instellingen van het model (zoals temperatuur en gestructureerde uitvoer) zodat het geschikt is voor beoordelingstaken.
- Formuleer de eerste opdracht. Ontwerp een eerste versie van de instructies voor het beoordelingssysteem en de opdracht, inclusief een beoordelingsschema en voorbeelden.
- Maak een afstemmingsdataset . Stel een diverse, hoogwaardige set samen van goede en slechte ThemeBuilder-uitvoer en label deze als zodanig (bijvoorbeeld een goed motto, een negatief motto en een kleurenpalet dat niet bij het merk past).
- Stem de beoordelaar af en test hem. Gebruik de afstemmingsdataset om de aanwijzingen van de beoordelaar (systeeminstructies en hoofdaanwijzing) iteratief te verfijnen. Herhaal dit proces totdat de oordelen van de beoordelaar consistent overeenkomen met die van de mensen. Test ten slotte de beoordelaar om te bevestigen dat deze betrouwbaar is en zijn aanpak kan generaliseren naar nieuwe invoer.

Choose a customization method
De meeste stichtingsmodellen zijn generalisten. Een rechtermodel moet denken als een domeinspecialist .
Je hebt de volgende hoofdopties om een rechtermodel te creëren:
- Prompt-engineer an LLM.
- Fine-tune a model.
- Gebruik een verfijnd LLM-model dat is geoptimaliseerd voor evaluaties, bijvoorbeeld JudgeLM . Deze optie vereist dat u zelf aangepaste modelgewichten host of een cloudprovider gebruikt die open-source modelhosting ondersteunt.
Voor de ThemeBuilder-evaluaties in deze cursus raden we prompt engineering aan. Prompt engineering kan uitstekende resultaten opleveren met minder ontwikkeltijd dan de alternatieven.
Selecteer een model
Bij het kiezen van een model voor je beoordelingssysteem is het belangrijk dat het over sterke redeneermogelijkheden beschikt. Omdat je evaluaties in je CI/CD-pipeline uitvoert, zijn snelheid en kosten ook cruciaal.
Experimenteer met verschillende modellen en technieken om de beste oplossing te vinden.
- Begin met een groter, krachtiger model om de lat hoog te leggen, en ga vervolgens geleidelijk over op kleinere modellen. Of andersom.
- Combineer en wissel : gebruik een snel en kosteneffectief model voor dagelijkse PR-controles en een krachtiger model voor uw uiteindelijke releasetests. Of combineer een algemeen LLM-model met een klein, gespecialiseerd model voor specifieke taken zoals toxiciteitsdetectie voor extra snelheid.
Deze cursus gebruikt Gemini 3 Flash als beoordelingsmodel. Gemini 3 Flash biedt de snelheid en de diepgang van de redenering die nodig zijn voor het voorbeeld van het evalueren van ThemeBuilder-uitvoer. De patronen in deze cursus kunnen echter op elk gewenst model worden toegepast.
Choose a scoring method
Je kunt subjectieve resultaten beoordelen met binaire labels PASS en FAIL , of met een numerieke score, bijvoorbeeld : "Op een schaal van 1 tot 5, hoe goed sluit dit motto aan bij het merk?" .
We recommend using binary labels .
| Evaluatiecriteria | Evaluatiemethode | Metrisch |
|---|---|---|
| The motto matches the brand, audience and tone | LLM judge | PASS or FAIL label |
| Het kleurenpalet sluit aan bij het merk, de doelgroep en de gewenste sfeer. | LLM judge | PASS or FAIL label |
| The motto isn't toxic | LLM judge | PASS or FAIL label |
Hoewel een numerieke score (1-10) intuïtief aanvoelt, laat onderzoek zien dat LLM's (en mensen) de neiging hebben om hun scores in het midden te clusteren of scores te overdrijven uit beleefdheid. Categorieën of binaire labels zoals PASS en FAIL leveren vaak betere resultaten op, omdat ze het model dwingen een duidelijke beslissing te nemen. Bij mensen wordt dit het beoordelaarseffect genoemd.
Configure the judge
Gebruik parameters en instructies om uw jurylid te helpen consistente, gestructureerde resultaten te produceren.
- Stel systeeminstructies in : Geef uw jurylid een strikte, deskundige uitstraling.
- Stel de temperatuur of het denkniveau in : Uw beoordelaar moet consistent zijn. Als u een redeneermodel zoals Gemini Flash gebruikt, dat een beetje willekeurigheid vereist om tussen logische stappen te bewegen, laat u de temperatuur op de standaardwaarde staan , maar stelt u het
thinking_levelin opHIGH. Als u een ander model gebruikt, stelt u de temperatuur in op0of bijna0Gebruik in elk geval de gedachteketentechniek, zodat het model nadenkt voordat het een oordeel velt. - Structureer de uitvoer van de beoordelaar : een voorspelbaar JSON-object is veel gemakkelijker te hergebruiken in de rest van je code. Gebruik een
EvalResultschema dat eenlabel(PASSofFAIL) en eenrationalevereist.
In your ThemeBuilder example:
Judge config
// 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"
}
Review the complete code example .
Write the initial prompt
Je hebt de systeeminstructies al geconfigureerd, ontwerp nu je hoofdprompt voor de jury. In dit stadium maak je slechts een eerste versie van deze prompt. Je zult deze stapsgewijs verfijnen wanneer je je jury in de volgende stap afstemt .
De effectiviteit van je beoordelingssysteem hangt af van de instructies die je eraan geeft. Vermijd algemene vragen zoals "Is dit motto goed?", waarbij "goed " niet gedefinieerd is. Geef in plaats daarvan structuur om duidelijke en consistente resultaten te verkrijgen.
- Definieer je beoordelingscriteria : Geef de jury gedetailleerde beoordelingsrichtlijnen. Wat beschrijft de verwachte toon voor een ideaal resultaat? Je kunt een LLM (Literary Lawmaster) vragen je te helpen bij het opstellen van de beoordelingscriteria.
- Gebruik een paar korte prompts : voeg voorbeelden
PASSenFAILtoe. - Gebruik de gedachtegang-aansturing : instrueer het model om zijn redenering uit te schrijven voordat het een label toekent, aangezien dit de nauwkeurigheid aanzienlijk kan verbeteren. In de modus
HIGHdenken is dit minder cruciaal, maar het blijft een goede gewoonte.
Formuleer drie afzonderlijke beoordelingsvragen voor uw drie specifieke criteria:
- Motto brand fit.
- Color brand fit.
- Toxiciteit. Uw prompt voor toxiciteit kan worden gegenereerd op basis van door de gemeenschap verzamelde toxiciteitskenmerken .
Voeg bij elke opdracht een duidelijke beoordelingscriteria en enkele voorbeeldfoto's met een toelichting toe. Vermeld in uw voorbeeldfoto's de toelichting vóór de uiteindelijke score om het patroon van de gedachtegang toe te passen en de jury te laten zien hoe tot de redenering komt.
De volledige prompts vind je in de code repository . De prompt voor het beoordelen van de geschiktheid van een merk met een motto ziet er bijvoorbeeld als volgt uit:
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}"`;
}
Align and test
Lees deel 2 van 'Een basisrechter instellen' om de configuratie van je rechter af te ronden met uitlijning en testen.