Код-ревью Middle Оценка качества обновлено

Код-ревью: скрипт сравнения двух промптов

Вопрос

Скрипт решает, выкатывать ли новый промпт. Найдите проблемы в методике.

import random

def evaluate(prompt, examples):
    sample = random.sample(examples, 20)
    scores = []
    for ex in sample:
        answer = llm(prompt, ex["question"], temperature=1.0)
        score = judge(f"Оцени ответ от 1 до 10: {answer}")
        scores.append(int(score))
    return sum(scores) / len(scores)

old = evaluate(OLD_PROMPT, examples)
new = evaluate(NEW_PROMPT, examples)
if new > old:
    deploy(NEW_PROMPT)

Коротко

Методика сравнения должна убирать случайность: один набор для обеих версий, стабильные настройки генерации, судья с рубрикой и эталоном, проверка, что разница больше шума, и разбор по категориям. Решение о выкатке по одному числу на 20 случайных примерах это подбрасывание монетки.

Что должен найти ревьюер

  1. Ошибкастрока 4
    Каждая версия оценивается на своей случайной выборке из 20 примеров: версии сравниваются на разных данных, и разница может быть случайной. Нужен один и тот же фиксированный набор.
  2. Ошибкастрока 7
    Температура 1.0 без повторов: одна генерация на пример даёт большой шум. Для сравнения нужна низкая температура или несколько прогонов.
  3. Ошибкастрока 8
    Судья не видит вопрос, эталон и рубрику: оценка «от 1 до 10» по одному ответу ненадёжна. Нужны вопрос, эталон или контекст и конкретные критерии.
  4. Ошибкастрока 9
    int(score) упадёт, если судья ответит текстом. Нужен структурированный вывод и обработка ошибок.
  5. Ошибкастрока 14
    Выкатка при любом превышении среднего без учёта дисперсии, размера выборки и регрессий в отдельных категориях. Нужны доверительные интервалы или попарное сравнение и порог.
  6. Стильстрока 1
    Нет фиксированного seed и логирования ответов: результат нельзя воспроизвести и разобрать.

Разбор

Методика сравнения должна убирать случайность: один набор для обеих версий, стабильные настройки генерации, судья с рубрикой и эталоном, проверка, что разница больше шума, и разбор по категориям. Решение о выкатке по одному числу на 20 случайных примерах это подбрасывание монетки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме