Skip to content
PПромтбук
RUEN
03Эвалюация

A/B-тест промтов

Сравнить две версии промта статистически, не на глаз.

Сравни два промта статистически.

Когда нужен A/B

  • Меняешь промт и хочешь понять стало ли лучше
  • Сравниваешь два подхода (CoT vs direct, few-shot vs zero-shot)
  • Меняешь модель (Claude 3 vs 4)

Шаги

1. Формулируй гипотезу

✗ "Новый промт лучше" ✓ "Новый промт повысит pass-rate с 75% до 82% на тестовом dataset'е"

Конкретная метрика + ожидаемое изменение.

2. Подготовь dataset

  • Минимум 100 кейсов (для статистики)
  • Repräsentativны для production
  • Одинаковый для обеих версий

3. Прогон

Каждый кейс → обе версии промта → выход.

Параллелизируй где можно. Логируй:

  • Input
  • Output A
  • Output B
  • Metrics для каждого

4. Метрики

МетрикаСчитаем
Pass rate% кейсов где все assertions passed
Avg quality (LLM-judge)средняя оценка 1-5
Avg tokensсредний размер вывода
Avg cost$ на запрос
Avg latencyмс на запрос

5. Статистическая значимость

Не просто "A=78%, B=82%, B лучше".

Если разница маленькая — может быть случайность.

from scipy import stats

# Pass rate как доли
n_a, n_b = 100, 100
p_a, p_b = 0.78, 0.82

# Two-proportion z-test
stat, p_value = stats.proportions_ztest([78, 82], [100, 100])
# p < 0.05 → statistically significant

Для непрерывных метрик (latency, cost):

  • t-test
  • Mann-Whitney U (если не нормальное распределение)

6. Practical significance

Statistical sig != practical sig.

Если разница в pass rate 0.5% — да, может быть статистически значимо на огромном dataset'е, но не стоит ввести изменение (риски > выгоды).

Установи threshold:

  • "Внедряем если pass rate +3% И не ухудшилась latency"
  • "+5% pass rate, +10% cost — НЕ внедряем (cost > benefit)"

7. Multi-arm comparisons

Не A vs B, а A vs B vs C vs D? Используй ANOVA или Tukey HSD.

8. Sequential testing

Не жди полного прогона если разница огромная:

  • После 30 кейсов — если разница 30%+, скорее всего значима
  • Используй sequential A/B методы (Bayesian)

9. Avoid p-hacking

  • Сформулируй метрики до прогона, не после
  • Не запускай 20 раз и не выбирай "удачный" результат
  • Одна основная метрика + 2-3 поддерживающих

10. Production rollout

Если eval показал улучшение — не сразу 100% на продакшене:

  • Shadow mode (новый промт работает параллельно, выход не показывается)
  • 10% production traffic
  • Сравни production-метрики
  • Постепенно ramp up

Анти-паттерны

  • ❌ "Промт В выглядит лучше на 3 кейсах"
  • ❌ Запуск с разными random seeds (LLM stochastic — нужна агрегация)
  • ❌ Сравнение разных моделей в одном тесте (нечестно)
  • ❌ Изменение dataset'а между прогонами
  • ❌ Не учитывать cost / latency

В конце

  • Гипотеза
  • Результаты обеих версий
  • Statistical analysis
  • Решение: deploy / нет
  • Production rollout plan если deploy
К подразделу «Эвалюация»
Похожие промты