ДокументацияLLM как судья: оценка ответов

LLM как судья: оценка ответов

СценарииПродвинутый25 мин

Соберёте скрипт, который сравнивает две модели (или два промпта) на ваших вопросах: сильная модель-судья ставит оценки, скрипт сводит их в таблицу.

Нужно: ключ fetch_... (создать), баланс (50 вопросов ≈ 10 центов), Python 3.10+, 20–100 настоящих вопросов клиентов с эталонами — короткими правильными ответами.

  1. 1
    Соберите вопросы

    Возьмите реальные вопросы из чата поддержки или почты, простые и каверзные. К каждому напишите эталон: что обязательно должно прозвучать.

  2. 2
    Выберите судью

    Судья сильнее кандидатов и не один из них: claude-sonnet-5-5 или gpt-6.1-sol.

  3. 3
    Проверьте рубрику

    Она в GRADE_SYSTEM: верность, полнота, ясность по шкале 1–5. Важно бизнесу «не обещать того, чего нет в правилах» — добавьте отдельный критерий.

  4. 4
    Запустите

    Скопируйте код в judge.py, замените RULES и DATASET своими. Выполните pip install openai pydantic, затем python judge.py.

  5. 5
    Сверьте судью с собой

    Откройте judge_results.jsonl и оцените 10–20 ответов сами. Часто расходитесь с судьёй — уточните рубрику или эталоны, а не верьте таблице.

1Код

Пример сравнивает deepseek-v4.1-flash и claude-haiku-5-5 в роли поддержки магазина. Судья — claude-sonnet-5-5.

judge.py
"""
LLM как судья: какая из двух моделей лучше отвечает клиентам магазина.
pip install openai pydantic
python judge.py
"""
import asyncio
import json
import os
import statistics
from typing import Literal

from openai import AsyncOpenAI
from pydantic import BaseModel, Field, ValidationError

Результат — таблица такого вида (цифры зависят от моделей и вопросов):

text
Модель                  Балл  Верно  Полно  Ясно  Победы  Поражения  Ничьи
deepseek-v4.1-flash     4.20   4.40   4.00  4.60       1          2      2
claude-haiku-5-5        4.40   4.60   4.20  4.60       2          1      2

Судья поменял мнение при перестановке ответов: 1 из 5

2Как читать таблицу

  • Каждую пару судья сравнивает дважды, поменяв ответы местами. Победа засчитывается, только если оба раза выбран один кандидат.
  • Судья поменял мнение больше чем в трети вопросов — кандидаты почти равны или рубрика размыта.
  • На 5 вопросах разница в 0,2 балла — случайность. Для решения берите 30–50 вопросов и смотрите на победы в парах.

3Что учесть

  • X-Zukko-Cache: true: одинаковые запросы 7 дней отдаются из кэша бесплатно. Поменяли рубрику — платите только за новые запросы судьи. Нужны свежие ответы кандидатов — поставьте CACHE = {}.
  • Не задавайте temperature: новые модели Claude могут отклонять нестандартные значения.

4Если не работает

Что видитеЧто сделать
ValidationError у судьи и после повтораУточните формат в промпте судьи или возьмите модель сильнее
У кандидатов почти одинаковые баллыДобавьте каверзные вопросы, доведите набор до 30–50
Судья часто меняет мнение при перестановкеУточните критерии, смотрите на баллы по рубрике
Повторный запуск даёт те же ответы кандидатовЭто кэш. Нужны свежие — поставьте CACHE = {}
Высокий балл у ответа с выдумкамиДополните эталон, добавьте критерий «нет выдуманного»
LLM как судья: оценка ответов · Документация Zukko