Start met het uitvoeren van subjectieve evaluaties met behulp van 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 gebruik te maken van basisstatistische gegevens.
Bouw je eerste rechtermodel

- Kies een methode voor modelaanpassing . U kunt de instellingen verfijnen of een engineer 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 dienovereenkomstig, bijvoorbeeld een goed motto, een negatief motto en een kleurenpalet dat niet bij het merk past.
- Stel de beoordelaar gelijk en test hem. Gebruik de gegevensset voor de gelijkstelling om de aanwijzingen van de beoordelaar (systeeminstructies en hoofdaanwijzing) iteratief te verfijnen. Herhaal dit proces totdat de oordelen van de beoordelaar consistent overeenkomen met menselijke oordelen. Test ten slotte de beoordelaar om de betrouwbaarheid en het vermogen om zijn aanpak te generaliseren naar nieuwe invoer te bevestigen.

Kies een aanpassingsmethode
De meeste basismodellen zijn generalisten. Een rechtermodel fungeert als domeinspecialist .
De belangrijkste opties voor het creëren van een rechtermodel zijn:
- Stel snel een LLM samen.
- Een model verfijnen .
- Gebruik een verfijnd LLM-model dat is geoptimaliseerd voor evaluaties, bijvoorbeeld JudgeLM . Deze optie vereist dat u 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 selecteren van een model voor de beoordelaar is het belangrijk te letten op sterke redeneermogelijkheden. Omdat je evaluaties uitvoert in de CI/CD-pipeline, zijn snelheid en kosten ook cruciaal.
Experimenteer met verschillende modellen en technieken om de optimale oplossing te vinden.
- Begin met een groter, krachtiger model om de lat hoog te leggen, en schaal vervolgens geleidelijk af naar kleinere modellen. Of begin met kleinere modellen en schaal geleidelijk op.
- Combineer en wissel af : gebruik een snel en kosteneffectief model voor dagelijkse pull request-controles en een krachtiger model voor de uiteindelijke release-tests. 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 worden toegepast op elk model dat u kiest.
Kies een scoringsmethode
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 raden aan om binaire labels te gebruiken.
| Evaluatiecriteria | Evaluatiemethode | Metrisch |
|---|---|---|
| Het motto sluit aan bij het merk, de doelgroep en de toon. | LLM-rechter | PASS of NIET FAIL label |
| Het kleurenpalet sluit aan bij het merk, de doelgroep en de gewenste sfeer. | LLM-rechter | PASS of NIET FAIL label |
| Het motto is niet giftig. | LLM-rechter | PASS of NIET FAIL label |
Hoewel een numerieke score 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.
Configureer de rechter
Gebruik parameters en instructies om uw jurylid te helpen consistente, gestructureerde resultaten te produceren.
- Stel systeeminstructies in : Geef de rechter een strikt deskundige rol.
- Stel de temperatuur of het denkniveau in : De 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 uw ThemeBuilder-voorbeeld:
Rechterconfiguratie
// 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"
}
Bekijk het volledige codevoorbeeld .
Schrijf de eerste opdracht op.
Je hebt de systeeminstructies al geconfigureerd, ontwerp nu de hoofdprompt voor de jury. Maak in deze fase je eerste versie van deze prompt. Je verfijnt deze iteratief tijdens het uitlijnen van de jury in de volgende stap .
De effectiviteit van de jury hangt af van de gegeven instructies. Vermijd algemene vragen zoals "Is dit motto goed?", waarbij "goed " niet gedefinieerd is. Geef in plaats daarvan structuur om tot duidelijke en consistente resultaten te komen.
- Definieer de beoordelingscriteria : Geef de jury gedetailleerde beoordelingsrichtlijnen. Wat beschrijft de verwachte toon voor een ideaal resultaat? Een LLM (Literary Lawmaster) kan je helpen bij het opstellen van de beoordelingscriteria.
- Gebruik een paar korte prompts : voeg voorbeelden
PASSenFAILtoe. - Gebruik de gedachtegang-aansturing : instrueer het model om de 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.
Schrijf drie afzonderlijke beoordelingsvragen voor de drie specifieke criteria:
- Het motto past perfect bij het merk.
- Kleur en merk passen bij elkaar.
- Toxiciteit. De prompt voor toxiciteit kan worden gegenereerd op basis van door crowdsourcing verzamelde toxiciteitskenmerken .
Voeg bij elke opdracht een duidelijke beoordelingscriteria en enkele voorbeeldshots met een toelichting toe. Vermeld in de voorbeeldshots de toelichting vóór de uiteindelijke score om het patroon van de gedachtegang toe te passen en te laten zien hoe de beoordelaar tot zijn of haar 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 (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}"`;
}
Uitlijnen en testen
Lees deel 2 van 'Een basisrechter instellen' om de configuratie van de rechter, inclusief afstemming en testen, af te ronden.