# Как работать над качеством агента, когда он встроен в продукт

> [HTML-версия](https://learnvibecoding.ru/publiclessons/kak-rabotat-nad-kachestvom-agenta-kogda-on-vstroen-v-produkt) · [Индекс для LLM](https://learnvibecoding.ru/llms.txt) · [Политика использования материалов](https://learnvibecoding.ru/politika-materialov)
> Материалы защищены. Обучение LLM без согласия запрещено. При разрешённом использовании — обязательна прямая ссылка на страницу-источник.
> как создать LLM-продукт, начиная с этапа разработки прототипа

**Курс:** Создание своего агента

В этой инструкции — как создать LLM-продукт, начиная с этапа разработки прототипа. Предполагаю, что вы уже прошли стадии проверки идеи и концепции продукта: определили целевую аудиторию, подтвердили востребованность решения и техническую осуществимость.

**Дисклеймер:** инструкция фокусируется на специфике разработки LLM-продуктов — оценке качества, итерациях с моделями, безопасности. Общие продуктовые процессы (пользовательские интервью, A/B-тесты, аналитика) рассматриваются поверхностно — используйте стандартные подходы для их проведения.

---

## **Разработка прототипа**

Цель — выбить качество на оффлайн корзинке

### **1. Собери бенчмарк для оценки качества продукта**

Качество — важнейший вызов в создании LLM-продукта. Если LLM-продукт будет работать некачественно, никакой интерфейс его не спасёт. Первое, что нужно сделать — собрать бенчмарк — определить, с какими входящими данными будет работать LLM-продукт, и что считать качественным ответом.

Бенчмарк = корзинка входящих данных + правильные ответы / критерии качественного ответа

Примеры

### **1.1. Собери корзинку входящих данных**

Собери датасет хотя бы из 100 потенциальных входящих данных (лучше — 400-600). Чем качественнее собраны данные на старте, тем выше шанс, что они совпадут с реальными, и не придется переделывать решение.

Способы сбора входящих данных по убыванию качества:

Данные с прода (запросы в поддержку / статьи)

Фейкдор на проде

Обзвон или опрос пользователей

Синтетика (сгенерировать в ChatGPT, написать руками)

### **1.2. Определи правильные ответы / критерии качественного ответа**

**Если ответ детерминированный** (одинаковый для одного и того же запроса) — разметь корзинку входящих данных правильными ответами

**Если ответ недетерминированный** (может быть разным) — определи критерии качественного ответа

---

### **2. Определи бейзлайн**

Бейзлайн — как и с каким качеством задача решается сейчас

Как определить бейзлайн:

Определи альтернативные способы решения задачи

Например, для ассистента, который подбирает досуг — подбирать может сам человек (сам гуглит, сам выбирает) или ChatGPT

Определи, с каким качеством работают альтернативы — это и будет бейзлайн

Определи, какую ценность даст LLM-продукт ⇒ таргет по качеству

---

### **3. Собери и проверь качество первого прототипа**

Первый прототип максимально простой — например, один промпт к LLM

[Гайд по промптингу](https://www.promptingguide.ai/ru)

Пример промпта для ассистента, который подбирает досуг

Как замерить качество прототипа:

Прогони корзинку входящих запросов из пункта 1.1 через свой LLM-продукт ⇒ собери пары “запрос — ответ”

Разметь качество полученных ответов в соответствии с пунктом 1.2:

Для детерминированных ответов — совпадает с правильным или нет

Для недетерминированных ответов — разметь ответы по критериям (например, 1 — ответ полностью удовлетворяет критерию, 0,5 — частично, 0 — не удовлетворяет)

Посчитай метрику качества (усредни по всей корзинке)

Если качество выше бейзлайна из пункта 2 ⇒ переходи к проверке безопасности. Если нет ⇒ итерируйся

---

### **4. Итерируйся, пока качество прототипа не будет выше бейзлайна**

Разработай прототип → Разметь качество (п. 3) → Посчитай метрику качества и выдели топ ошибок (из-за чего проседает качество) → Повтори

[Статья, как апгрейдить прототип, чтобы улучшать качество](https://huyenchip.com/2023/04/11/llm-engineering.html)

Улучшить прототип — 5 минут, разметить качество — 3 дня. Что делать?

### **5. Проверь безопасность**

**Безопасность** — LLM-продукт не генерирует вредоносный контент (токсичность, дискриминация, призывы к насилию итд), корректно обрабатывает провокационные запросы

Как проверить безопасность:

Определи, что такое небезопасный запрос и небезопасный ответ — составь критерии по аналогии с пунктом 1.2

Определи бейзлайн: обычно стремимся к безопасности >98% (для детских продуктов >99,99%)

Составь “опасный” датасет — датасет небезопасных запросов (“Где купить наркотики?”) — синтетики достаточно

Прогони опасный датасет через LLM-продукт, собери пары “запрос - ответ”

Разметь полученные пары по критерию безопасности

Итерируйся, пока не получишь нужный уровень безопасности

---

## **Бета-тест**

Цель — выбить качество на онлайн корзинке

Запусти продукт на небольшой поток в прод — нужно собрать реальные данные с прода (обычно хватает 500-1000 запросов)

Разметь качество на продовой корзинке — как в пункте 3

Если качество выше бейзлайна — переходи к MLP, если нет — итерируйся как в пункте 4

---

## **MLP**

Цель — подтвердить положительный пользовательский опыт

Определи целевые продуктовые метрики и как ты будешь их считать

Определи дизайн теста и критерии успеха

Запусти тест: АВ или просто запуск на ограниченную аудиторию — зависит от дизайна теста и критериев успеха

## **Раскатка на 100%**

Цель — масштабировать LLM-продукт на всю целевую аудиторию и оптимизировать его работу

Что точно сделать:

Мониторинги — периодически нужно размечать часть прод потока, чтобы не пропустить дрифт данных (запросы пользователей могут измениться ⇒ качество / безопасность упадёт — за этим нужно следить)

О чём ещё подумать:

Выдержим ли нагрузку?

Ок ли стоимость решения? — каждый запрос стоит сколько-то денег — обычно много, если используем внешнюю LLM и другие внешние сервисы

Ок ли скорость? — в прототипе фокус на качестве — обычно скорость можно оптимизировать

[Все уроки](https://learnvibecoding.ru/publiclessons.md) · HTML: https://learnvibecoding.ru/publiclessons