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