Temel bir değerlendirme modeliyle öznel değerlendirmeler yapın.
Kural tabanlı değerlendirmeler, deterministik yanıtları kontrol edebilir. Öznel nitelikleri değerlendirmek için LLM-as-a-judge tekniğini kullanın.
Bu modülde, temel istatistiksel metrikleri kullanarak verileri kendiniz veya ekibinizle etiketleyerek ilk hakeminizi nasıl oluşturacağınızı öğreneceksiniz.
İlk değerlendirme modelinizi oluşturma
- Model özelleştirme yöntemi seçin. İnce ayar yapabilir veya istem mühendisliği uygulayabilirsiniz.
- Bir model seçin. Bu, temel bir model veya alan uzmanlığı olmayan başka bir LLM olabilir.
- Puanlama yöntemi seçin. Hakemin, ThemeBuilder tarafından oluşturulan temaları puanlamak için ikili veya sayısal bir ölçek kullanıp kullanmaması gerektiğini belirleyin.
- Hakemi yapılandırın. Modelin ayarlarını (ör. sıcaklık ve yapılandırılmış çıkış) değerlendirme görevlerine uygun hale getirmek için değiştirin.
- İlk istemi yazın. Puanlama puan anahtarı ve örnekler de dahil olmak üzere, değerlendirme sistemi talimatlarının ve istemin ilk sürümünü tasarlayın.
- Bir hizalama veri kümesi oluşturun. İyi ve kötü ThemeBuilder çıktılarını içeren çeşitli ve yüksek kaliteli bir set oluşturun veya bir araya getirin. Bu çıktıları uygun şekilde etiketleyin. Örneğin, iyi bir slogan, kötü niyetli bir slogan ve markaya uygun olmayan bir renk paleti.
- Hakemi hizalayın ve test edin. Hakim istemini (sistem talimatları ve ana istem) yinelemeli olarak iyileştirmek için hizalama veri kümesini kullanın. Hakimin kararları tutarlı bir şekilde gerçek kişilerin kararlarıyla eşleşene kadar bu işlemi tekrarlayın. Son olarak, güvenilirliğini ve yaklaşımını yeni girişlere genelleme yeteneğini onaylamak için yargıcı test edin.
Özelleştirme yöntemi seçme
Çoğu temel model genel amaçlıdır. Hakem modeli, alan uzmanı olarak hareket eder.
Yargıç modeli oluşturmak için temel seçenekler şunlardır:
- Bir büyük dil modeline istem mühendisliği uygulayın.
- Modelde ince ayar yapın.
- Değerlendirmeler için optimize edilmiş, ince ayarlı bir LLM kullanın. Örneğin, JudgeLM. Bu seçenek için özel model ağırlıklarını barındırmanız veya açık kaynak model barındırmayı destekleyen bir bulut sağlayıcı kullanmanız gerekir.
Bu kurstaki ThemeBuilder değerlendirmeleri için istem mühendisliğini öneririz. İstem mühendisliği, alternatiflere kıyasla daha az geliştirme çabasıyla mükemmel sonuçlar verebilir.
Bir model seçin
Hakim için model seçerken güçlü muhakeme yetenekleri olan bir model tercih edin. CI/CD ardışık düzeninde değerlendirmeler yaptığınız için hız ve maliyet de kritik öneme sahiptir.
En uygun modeli bulmak için farklı modelleri ve teknikleri deneyin.
- Yüksek bir standart belirlemek için daha büyük ve daha güçlü bir modelle başlayın, ardından kademeli olarak daha küçük modellere ölçeklendirin. Alternatif olarak, daha küçük modellerle başlayıp ölçeği artırabilirsiniz.
- Karıştırıp eşleştirme: Günlük pull isteği kontrolleri için hızlı ve uygun maliyetli bir model, son sürüm testleriniz için ise daha güçlü bir model kullanın. Alternatif olarak, genel bir LLM'yi küçük ve özelleştirilmiş bir modelle birleştirerek toksisite tespiti gibi belirli görevleri daha hızlı gerçekleştirebilirsiniz.
Bu kursta, değerlendirme modeli olarak Gemini 3 Flash kullanılır. Gemini 3 Flash, ThemeBuilder çıkışlarını değerlendirme gibi örnek kullanım alanlarında gereken hızı ve akıl yürütme derinliğini sunar. Ancak bu kurstaki kalıplar, seçtiğiniz herhangi bir modele uygulanabilir.
Puanlama yöntemi seçme
Öznel çıkışları ikili PASS ve FAIL etiketleriyle veya sayısal bir puanla değerlendirebilirsiniz. Örneğin, "1 ile 5 arasındaki bir ölçekte bu slogan markaya ne kadar uygun?"
İkili etiketler kullanmanızı öneririz.
| Değerlendirme ölçütleri | Değerlendirme yöntemi | Metrik |
|---|---|---|
| Slogan, markaya, kitleye ve tona uygun olmalıdır. | LLM hakimi | PASS veya FAIL etiketi |
| Renk paleti markaya, kitleye ve tona uygun olmalıdır. | LLM hakimi | PASS veya FAIL etiketi |
| Slogan zararlı değil | LLM hakimi | PASS veya FAIL etiketi |
Sayısal puanlar sezgisel olarak anlaşılabilir olsa da araştırmalar, LLM'lerin (ve insanların) puanlarını ortada gruplandırma veya kibar olmak için puanları yükseltme eğiliminde olduğunu gösteriyor.
PASS ve FAIL gibi kategoriler veya ikili etiketler, modeli net bir karar vermeye zorladıkları için genellikle daha iyi sonuçlar verir. İnsanlar için buna değerlendirici etkisi denir.
Hakemi yapılandırma
Yargıcınızın tutarlı ve yapılandırılmış çıkışlar oluşturmasına yardımcı olmak için parametreleri ve talimatları kullanın.
- Sistem talimatlarını ayarlayın: Hakime katı bir uzman kişiliği verin.
- Sıcaklığı veya düşünme düzeyini ayarlama: Hakimin tutarlı olması gerekir. Mantıksal adımlar arasında geçiş yapmak için biraz rastgelelik gerektiren Gemini Flash gibi bir akıl yürütme modeli kullanıyorsanız sıcaklığı varsayılan değerde tutun ancak
thinking_leveldeğeriniHIGHolarak ayarlayın. Başka bir model kullanıyorsanız sıcaklığı0veya0'ye yakın bir değere ayarlayın. Her durumda, modelin bir yargıya karar vermeden önce düşünmesi için düşünce zinciri tekniğini kullanın. - Hakimin çıkışını yapılandırma: Tahmin edilebilir bir JSON nesnesinin kod tabanınızın geri kalanında yeniden kullanılması çok daha kolaydır.
EvalResultşemasını kullanın. Bu şema,label(PASSveyaFAIL) verationaledizesi gerektirir.
ThemeBuilder örneğinizde:
Hakim yapılandırması
// 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"
}
Tam kod örneğini inceleyin.
İlk istemi yazma
Sistem talimatlarını zaten yapılandırdınız. Şimdi ana değerlendirme istemini tasarlayın. Bu aşamada, istemin ilk sürümünü oluşturun. Bir sonraki adımda hakimi hizalarken bunu yinelemeli olarak hassaslaştırırsınız.
Hakimin etki düzeyi, sağlanan talimatlara bağlıdır. İyi kavramının belirsiz olduğu "Bu slogan iyi mi?" gibi genel bir soru sormaktan kaçının. Bunun yerine, net ve tutarlı çıkışlar elde etmek için yapı sağlayın.
- Puan anahtarını belirleyin: Hakime ayrıntılı puanlama yönergeleri verin. İdeal bir çıktı için beklenen üslubu ne tanımlar? LLM, değerlendirme ölçütlerini yazmanıza yardımcı olabilir.
- Az örnekli istem kullanma:
PASSveFAILörneklerini ekleyin. - Düşünce zinciri istemi kullanın:
Modeli, bir etiket atamadan önce gerekçeyi yazmaya yönlendirin. Bu, doğruluğu önemli ölçüde artırabilir.
HIGHdüşünme modunda bu durum o kadar kritik olmasa da yine de iyi bir uygulamadır.
Üç özel ölçüt için üç ayrı notlandırma istemi yazın:
- Slogan marka uyumu.
- Marka rengi uyumu.
- Toksiklik Kötü niyetli içerik istemi, kitle kaynaklı kötü niyetli içerik özelliklerinden başlatılabilir.
Her isteme, gerekçeli olarak net bir puan anahtarı ve az örnekli örnekler ekleyin. Zincirleme düşünce kalıbını uygulamak ve hakimin nasıl akıl yürüttüğünü göstermek için birkaç görevli örnekte, gerekçeyi gerçek puandan önce listeleyin.
Tam istemleri kod deposunda bulabilirsiniz. Örneğin, slogan marka uygunluğu değerlendirme istemi aşağıdaki gibi görünür:
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}"`;
}
Hizalama ve test etme
Hakemi hizalama ve test etme işlemlerini tamamlamak için Temel bir hakem oluşturma, 2. bölüm başlıklı makaleyi okuyun.