Menyiapkan model penilaian dasar (bagian 1)

Menjalankan evaluasi subjektif dengan model hakim dasar.

Evaluasi berbasis aturan dapat memeriksa jawaban deterministik. Untuk mengevaluasi kualitas subjektif, gunakan teknik LLM sebagai hakim.

Dalam modul ini, Anda akan mempelajari cara membuat hakim pertama dengan memberi label pada data sendiri atau bersama tim, menggunakan metrik statistik dasar.

Membuat model hakim pertama

Model hakim memiliki LLM, setelan, perintah sistem, dan perintah penilaian.

  1. Pilih metode penyesuaian model. Anda dapat melakukan penyesuaian atau rekayasa perintah.
  2. Pilih model. Model ini dapat berupa model dasar atau LLM lain tanpa keahlian domain.
  3. Pilih metode pemberian skor. Tentukan apakah hakim harus menggunakan skala biner atau numerik untuk memberi skor pada tema yang dihasilkan ThemeBuilder.
  4. Konfigurasi hakim. Ubah setelan model (seperti temperatur dan output terstruktur) agar sesuai untuk tugas penilaian.
  5. Tulis perintah awal. Desain versi pertama petunjuk sistem hakim dan perintah, termasuk rubrik pemberian skor dan contoh.
  6. Buat set data keselarasan. Buat atau kumpulkan set output ThemeBuilder yang beragam dan berkualitas tinggi, baik yang bagus maupun buruk, lalu beri label yang sesuai, misalnya, motto yang bagus, motto yang negatif, dan palet warna yang tidak sesuai merek.
  7. Selaraskan dan uji hakim. Gunakan set data keselarasan untuk menyempurnakan perintah hakim secara berulang (petunjuk sistem dan perintah utama). Ulangi proses ini hingga putusan hakim secara konsisten cocok dengan putusan manusia. Terakhir, uji hakim untuk mengonfirmasi keandalannya dan kemampuannya untuk menggeneralisasi pendekatannya ke input baru.

Model hakim memiliki LLM, setelan, perintah sistem, dan perintah penilaian.

Memilih metode penyesuaian

Sebagian besar model dasar adalah generalis. Model hakim bertindak sebagai spesialis domain.

Opsi utama untuk membuat model hakim meliputi:

  1. Rekayasa perintah LLM.
  2. Menyesuaikan model.
  3. Menggunakan LLM yang disesuaikan dan dioptimalkan untuk evaluasi, misalnya, JudgeLM. Opsi ini mengharuskan Anda menghosting bobot model kustom atau menggunakan penyedia cloud yang mendukung hosting model open source.

Untuk evaluasi ThemeBuilder dalam kursus ini, sebaiknya lakukan rekayasa perintah. Rekayasa perintah dapat memberikan hasil yang sangat baik dengan upaya pengembangan yang lebih sedikit dibandingkan alternatif lainnya.

Memilih model

Saat memilih model untuk hakim, cari kemampuan penalaran yang kuat. Karena Anda menjalankan evaluasi di pipeline CI/CD, kecepatan dan biaya juga sangat penting.

Bereksperimenlah dengan berbagai model dan teknik untuk menemukan yang paling sesuai.

  • Mulai dengan model yang lebih besar dan lebih canggih untuk menetapkan standar yang tinggi, lalu secara progresif turunkan skala ke model yang lebih kecil. Atau, mulai dengan model yang lebih kecil dan tingkatkan skala.
  • Campur dan padukan: Gunakan model yang cepat dan hemat biaya untuk pemeriksaan permintaan pull harian, dan model yang lebih canggih untuk pengujian rilis akhir. Atau gabungkan LLM umum dengan model kecil dan khusus untuk tugas tertentu seperti deteksi toksisitas untuk kecepatan.

Kursus ini menggunakan Gemini 3 Flash sebagai model hakim. Gemini 3 Flash menawarkan kecepatan dan kedalaman penalaran yang diperlukan untuk contoh kasus penggunaan evaluasi output ThemeBuilder. Namun, pola dalam kursus ini dapat diterapkan ke model apa pun yang Anda pilih.

Memilih metode pemberian skor

Anda dapat memberi skor pada output subjektif dengan label biner PASS dan FAIL, atau dengan skor numerik, misalnya, "Dalam skala 1 hingga 5, seberapa baik motto ini mematuhi merek?"

Sebaiknya gunakan label biner.

Kriteria evaluasi Metode evaluasi Metrik
Motto sesuai dengan merek, audiens, dan nada Hakim LLM Label PASS atau FAIL
Palet warna sesuai dengan merek, audiens, dan nada Hakim LLM Label PASS atau FAIL
Motto tidak negatif Hakim LLM Label PASS atau FAIL

Meskipun skor numerik mungkin terasa intuitif, penelitian menunjukkan bahwa LLM (dan manusia) cenderung mengelompokkan skor di tengah atau menaikkan skor agar sopan. Kategori atau label biner seperti PASS dan FAIL sering kali memberikan hasil yang lebih baik karena memaksa model untuk membuat keputusan yang jelas. Untuk manusia, hal ini disebut efek penilai.

Mengonfigurasi hakim

Gunakan parameter dan petunjuk untuk membantu hakim membuat output yang konsisten dan terstruktur.

  • Set system instructions: Berikan hakim persona ahli yang ketat.
  • Setel temperatur atau tingkat penalaran: Hakim harus konsisten. Jika Anda menggunakan model penalaran seperti Gemini Flash, yang memerlukan sedikit keacakan untuk berpindah antar-langkah logis, pertahankan temperatur pada setelan default tetapi tetapkan thinking_level ke HIGH. Jika Anda menggunakan model lain, tetapkan temperatur ke 0 atau mendekati 0. Dalam hal apa pun, gunakan teknik rantai pemikiran, sehingga model berpikir sebelum memutuskan penilaian.
  • Strukturkan output hakim: Objek JSON yang dapat diprediksi jauh lebih mudah untuk digunakan kembali di bagian lain codebase Anda. Gunakan skema EvalResult yang memerlukan label (PASS atau FAIL) dan string rationale.

Dalam contoh ThemeBuilder:

Konfigurasi hakim

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

Tinjau contoh kode lengkap.

Menulis perintah awal

Anda telah mengonfigurasi petunjuk sistem, sekarang desain perintah hakim utama. Pada tahap ini, buat versi pertama perintah ini. Anda akan menyempurnakannya secara berulang saat menyelaraskan hakim pada langkah berikutnya.

Hakim hanya akan efektif jika petunjuk yang diberikan efektif. Hindari mengajukan pertanyaan umum, seperti "Apakah motto ini bagus?" yang tidak memiliki definisi bagus. Sebagai gantinya, berikan struktur untuk mendapatkan output yang jelas dan konsisten.

Tulis tiga perintah pemberian skor terpisah untuk tiga kriteria tertentu:

Di setiap perintah, sertakan rubrik pemberian skor yang jelas dan contoh beberapa contoh dengan alasan. Dalam contoh beberapa contoh, cantumkan alasan sebelum skor sebenarnya untuk menerapkan pola rantai pemikiran dan menunjukkan cara hakim bernalar.

Anda dapat menemukan perintah lengkap di repositori kode. Misalnya, perintah hakim kesesuaian merek motto terlihat sebagai berikut:

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

Menyelaraskan dan menguji

Baca menyiapkan hakim dasar, bagian 2 untuk menyelesaikan pembuatan hakim dengan keselarasan dan pengujian.