Начните проводить субъективную оценку с помощью базовой модели судейства.
Оценки, основанные на правилах, позволяют проверить наличие детерминированных ответов. Для оценки субъективных качеств используйте метод LLM-as-a-judge .
В этом модуле вы узнаете, как создать свой первый судейский инструмент, самостоятельно или совместно с командой разметив данные и используя основные статистические показатели .
Этапы создания вашей первой модели судьи
- Выберите метод настройки модели . Решите, хотите ли вы выполнить тонкую настройку или обратиться к инженеру.
- Выберите модель. Это может быть базовая модель или другая модель LLM, не требующая экспертных знаний в данной области.
- Выберите метод оценки. Определите, должен ли судья использовать бинарную или числовую шкалу для оценки тем, созданных с помощью ThemeBuilder.
- Настройте судью. Измените параметры модели (например, температуру и структурированный вывод), чтобы она подходила для задач оценки.
- Напишите первоначальное задание. Разработайте первую версию инструкций к системе оценивания и самого задания, включая критерии оценки и примеры.
- Создайте набор данных о соответствии . Соберите или сформулируйте разнообразный, высококачественный набор хороших и плохих результатов ThemeBuilder и пометьте их соответствующим образом (например, хороший девиз, токсичный девиз и цветовая палитра, не соответствующая бренду).
- Выполните выравнивание и тестирование судьи. Используйте набор данных для выравнивания, чтобы итеративно уточнять подсказки судьи (системные инструкции и основная подсказка). Повторяйте этот процесс до тех пор, пока вердикты судьи не будут последовательно совпадать с вердиктами людей. Наконец, протестируйте судью, чтобы подтвердить его надежность и способность обобщать свой подход на новые входные данные.

Выберите способ настройки
Большинство базовых моделей являются универсальными. Модель-судья должна мыслить как специалист в своей области .
Основные варианты создания модели судьи включают:
- Быстро получите степень магистра права (LLM).
- Доработайте модель.
- Используйте тонко настроенную модель LLM, оптимизированную для оценок, например, JudgeLM . Этот вариант требует самостоятельного размещения пользовательских весов модели или использования облачного провайдера, поддерживающего размещение моделей с открытым исходным кодом.
Для оценки возможностей ThemeBuilder в этом курсе мы рекомендуем использовать ускоренную разработку . Ускоренная разработка позволяет добиться отличных результатов с меньшими затратами на разработку, чем альтернативные варианты.
Выберите модель
При выборе модели для вашего судьи обращайте внимание на её сильные аналитические способности . Поскольку вы будете проводить оценки в рамках конвейера CI/CD, скорость и стоимость также имеют решающее значение.
Поэкспериментируйте с различными моделями и технологиями, чтобы найти оптимальный вариант.
- Начните с более крупной и мощной модели, чтобы установить высокую планку, а затем постепенно переходите к более мелким моделям. Или наоборот.
- Комбинируйте разные подходы : используйте быструю и экономичную модель для ежедневных проверок запросов на слияние, а более мощную — для финальных тестов релиза. Или объедините общую модель LLM с небольшой специализированной моделью для решения конкретных задач, таких как обнаружение токсичности, для повышения скорости.
В этом курсе в качестве модели-критерия используется Gemini 3 Flash . Gemini 3 Flash обеспечивает скорость и глубину анализа, необходимые для примера оценки результатов работы ThemeBuilder. Тем не менее, описанные в этом курсе шаблоны можно применять к любой выбранной вами модели.
Выберите метод оценки
Вы можете оценивать результаты субъективно, используя бинарные метки PASS и FAIL , или с помощью числовой оценки, например : «По шкале от 1 до 5, насколько хорошо этот девиз соответствует бренду?» .
Мы рекомендуем использовать бинарные метки .
| Критерии оценки | Метод оценки | Метрика |
|---|---|---|
| Девиз соответствует бренду, целевой аудитории и тону. | Судья программы LLM | Метка PASS или FAIL |
| Цветовая палитра соответствует бренду, целевой аудитории и тону. | Судья программы LLM | Метка PASS или FAIL |
| Девиз не токсичен | Судья программы LLM | Метка PASS или FAIL |
Хотя числовая оценка (от 1 до 10) может показаться интуитивно понятной, исследования показывают , что модели обучения (и люди) склонны группировать свои оценки посередине или завышать их из вежливости. Категории или бинарные метки, такие как PASS и FAIL часто дают лучшие результаты, поскольку они заставляют модель принимать четкое решение. Для людей это называется эффектом оценщика .
Настройте судью
Используйте параметры и инструкции, чтобы помочь судье создать согласованные и структурированные результаты.
- Настройте системные инструкции : Присвойте судье статус строгого эксперта.
- Установите температуру или уровень мышления : ваш судья должен быть последовательным. Если вы используете модель рассуждений, такую как Gemini Flash, которая требует некоторой случайности для перехода между логическими шагами, оставьте температуру по умолчанию , но установите уровень
thinking_levelнаHIGH. Если вы используете другую модель, установите температуру на0или близкое к0В любом случае, используйте метод цепочки рассуждений, чтобы модель думала, прежде чем выносить суждение. - Структурируйте вывод судьи : предсказуемый JSON-объект гораздо проще повторно использовать в остальной части вашего кода. Используйте схему
EvalResult, которая требуетlabel(PASSилиFAIL) и строкиrationale.
В вашем примере с ThemeBuilder:
Конфигурация судьи
// 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"
}
Ознакомьтесь с полным примером кода .
Напишите исходное задание.
Вы уже настроили системные инструкции, теперь разработайте основную подсказку для судьи. На данном этапе вы создаете только первую версию этой подсказки. Вы будете итеративно дорабатывать ее при согласовании действий судьи на следующем шаге .
Эффективность работы судьи напрямую зависит от данных им инструкций. Избегайте общих вопросов, например: «Хороший ли этот девиз?», где понятие «хороший » не определено. Вместо этого, обеспечьте структуру, чтобы получить четкие и последовательные результаты.
- Определите критерии оценки : Предоставьте судье подробные указания по выставлению оценок. Что описывает ожидаемый тон идеального результата? Вы можете обратиться за помощью в составлении критериев оценки к юристу, имеющему степень магистра права.
- Используйте краткие подсказки : включите примеры
PASSиFAIL. - Используйте метод подсказок, основанный на логической цепочке рассуждений : попросите модель записать свою аргументацию, прежде чем присваивать метку, поскольку это может значительно повысить точность. В режиме
HIGHмышления это не так критично, но все же является хорошей практикой.
Напишите три отдельных оценочных задания по трем конкретным критериям:
- Девиз соответствует бренду.
- Цвет соответствует фирменному стилю.
- Токсичность. Ваш запрос на определение токсичности может быть сформирован на основе атрибутов токсичности, полученных методом краудсорсинга .
В каждом задании включите четкую оценочную шкалу и несколько примеров с обоснованием. В этих примерах перед оценкой укажите обоснование, чтобы применить принцип логической цепочки рассуждений и показать судье, как рассуждать.
Полные варианты заданий можно найти в репозитории кода . Например, задание для оценки соответствия девиза и бренда выглядит следующим образом:
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}"`;
}
Выровняйте и протестируйте.
Прочитайте вторую часть руководства по настройке базового судьи, чтобы завершить создание своего судьи с учетом выравнивания и тестирования.