Сравни два промта статистически.
Когда нужен 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
Eval-фреймворк для LLM
Как мерить качество промтов и агентов: test set, метрики, автоматизация.
Регрессионный тест-сет
Каждый баг — новый тест. Дискаверь регрессии до прода.
Телеметрия для агентов
Что логировать (tool calls, latency, ошибки, cost), куда складывать, как смотреть и как не утечь данные.