Как промпты, модели и агенты живут в пайплайне: golden sets, регрессии, канарейки, откаты. «Промпт — это код» — на практике.
Цель урока
Нарисовать CI/CD для LLM: PR → eval → канарейка → прод → мониторинг → откат. И сказать, что eval-гейт — это как юнит-тесты, только для поведения.
1. Промпт — это код
Промпт, схема тулов, index-версия, модель — это артефакты с версиями, диффами и откатами (урок 0007). Одна строчка промпта может изменить поведение бота сильнее, чем 100 строк кода.
Значит, им нужен тот же контур: Git → ревью → тесты (evals) → деплой → мониторинг → откат.
2. CI: eval-гейт как юнит-тесты
На каждый PR с изменением промпта/тулов/индекса:
Golden set — 100–500 размеченных пар (вопрос → ожидаемое поведение). Хранится в репо.
Rollout: 10% → 50% → 100% по метрикам, не по календарю.
Правило из урока 0006: A/B в прод — когда офлайн-eval уже не различает варианты. CD-канарейка — это и есть финальный A/B.
4. Версионирование всего
config_version = {prompt_version, tool_schema_version, index_version, model_id}
Лог пишет config_version → регрессию можно отнести к конкретной версии
→ откат = переключение конфига, не пересборка
Модель тоже версия: смена модели = PR с eval-гейтом (прогон golden set на новой модели до мержа).
5. Регрессионный датасет растёт из прода
Каждый фейл из прода (жалоба, PII, эскалация) → в датасет → eval в CI. Это петля из урока 0019: observe → dataset → evaluate. Со временем датасет покрывает всё больше реальных случаев, и регрессии ловятся до пользователей.