$ sudo teach IT

Представьте, что вы пишете запрос к ChatGPT и получаете ответ. Он вроде бы связан с темой, но… не совсем то, что вы ожидали. Или наоборот — он идеален: точный, полезный и лаконичный. Но как понять, почему один промпт работает лучше другого? Как сравнивать их объективно?

В этом уроке вы научитесь измерять качество промптов, а не просто “чувствовать” его. Мы рассмотрим, как оценивать ответы моделей по метрикам, как ставить эксперименты с A/B-промптами и как улучшать промпты с помощью анализа качества.

🧠 Что вы узнаете

  • Какие метрики используются для оценки качества промптов
  • Как применять PromptEval и Langfuse в работе с LLM
  • Что такое A/B-тестирование промптов и как его проводить
  • Какие приёмы помогают объективно проверять результат
  • Как избегать субъективности в работе с LLM

📚 Ключевые термины

  • Relevance - Насколько ответ модели соответствует теме запроса
  • Coherence - Логичность и связность ответа
  • Helpfulness - Насколько ответ полезен и применим к задаче
  • Latency - Время генерации ответа
  • A/B-тест - Метод сравнения двух версий промпта для выявления более эффективной
  • PromptEval - Инструмент для автоматической оценки качества промптов
  • Langfuse - Платформа для анализа и трекинга поведения LLM по реальным метрикам

🧭 Почему важны метрики

Когда вы работаете с языковыми моделями, особенно в бизнесе или продуктовой разработке, одной интуиции недостаточно. Фраза "вроде нормально сработало" не помогает принимать решения, масштабировать решения и убедить других в их эффективности.

📌 Представьте:

Вы настраиваете автопилот в машине. Он в 7 случаях из 10 поворачивает вовремя, но вы не знаете — почему иногда ошибается и какой режим лучше работает. Вы бы доверили ему дорогу? То же самое и с промптами.

🔍 Метрики нужны, чтобы:

  • 📏 Объективно оценивать качество ответа
  • 📊 Сравнивать варианты промптов (A/B)
  • 🔄 Повторяемо тестировать и улучшать
  • 🛠 Обнаруживать слабые места и баги
  • 🧪 Делать итерации — на что повлияла новая формулировка?

🧠 Аналогия: проверка домашки

Промпт без метрик — как ученик, который сам себе ставит оценку:

“Ну, я вроде бы решил правильно.”

Промпт с метриками — как учитель с критериями:

“Ты ответил по теме (relevance), понятно и логично (coherence), дал полезный совет (helpfulness), и сделал это быстро (latency). Оценка — 9/10.”

💡 Особенно это критично, когда:

  • вы делаете чат-бота для клиентов (он должен быть полезен, а не просто болтлив),
  • вы строите внутренние инструменты для сотрудников (быстрота и точность важны),
  • вы запускаете генеративную систему под клиентов (нужно уметь обосновывать, почему ваш промпт лучше конкурентов).

Метрики помогают перейти от искусства к инженерии: от “по наитию” — к системной работе с промптами.

📏 Основные метрики

Чтобы системно оценивать промпты, важно понимать, что именно мы измеряем. Ниже — ключевые метрики качества, которые применяются при работе с LLM.

1. Relevance — соответствие теме

Что это: Насколько ответ модели отвечает именно на ваш запрос, а не уходит в сторону.

❌ Пример низкой релевантности:

Запрос: «Список книг по JavaScript для начинающих» Ответ: «Python — мощный язык для старта в программировании. Вот 5 популярных книг…»

✅ Пример высокой релевантности:

«Вот 5 книг по JavaScript, которые рекомендуют для новичков:...»

📚 Аналогия: Это как если вы спросили библиотекаря про книги по JavaScript, а он принёс стопку по Java. Полезные, но не по делу.

2. Coherence — логика и связность

Что это: Ответ должен звучать как цельный и логичный текст, а не как случайные куски информации.

❌ Пример низкой связности:

«JavaScript — это язык. Он браузер. Можно функции. Совместим с HTML.»

✅ Пример высокой связности:

«JavaScript — это язык программирования, используемый в браузерах. Он позволяет создавать интерактивные элементы на веб-страницах и тесно связан с HTML и CSS.»

🧠 Аналогия: Как плохой перевод: фразы вроде бы правильные, но логика и поток нарушены. Нельзя читать без усилий.

3. Helpfulness — практическая польза

Что это: Даже если ответ по теме и логичен — он должен помочь вам сделать то, что вы хотели.

❌ Пример бесполезного ответа:

«JavaScript — это популярный язык. Многие им пользуются.»

✅ Пример полезного ответа:

«Для начала изучите основы через книгу "Выразительный JavaScript", затем потренируйтесь на платформе Codewars — там задачи для новичков.»

🔧 Аналогия: Вы спрашиваете, как починить кран. Один человек говорит: "Вода — это важно". Другой — "Вот как открутить и заменить прокладку". Кто из них полезнее?

4. Latency — скорость ответа

Что это: Сколько времени уходит у модели на генерацию.

Особенно критично в:

  • чат-ботах поддержки,
  • поисковых помощниках,
  • реальном времени (например, в играх, колл-центрах).

❌ Пример плохой latency:

Ответ приходит через 10 секунд — пользователь уже ушёл.

✅ Пример хорошей latency:

Ответ за 1–2 секунды — удобно и не раздражает.

⚡ Аналогия: Представьте официанта, который приносит счёт через 15 минут после просьбы. Даже если счёт верный — опыт уже испорчен.

Эти четыре метрики вместе дают целостное представление о качестве промпта. Сильный промпт — это тот, что:

  • точно отвечает на ваш запрос,
  • связан логически,
  • даёт полезный результат,
  • и делает это быстро.

⚖️ A/B-тестирование промптов

A/B-тестирование — это метод сравнения эффективности двух (или более) версий одного промпта, чтобы выяснить, какой работает лучше. Это особенно важно, когда:

  • вы хотите повысить точность или полезность ответов,
  • улучшаете UX ассистента,
  • строите систему, где промпты критичны для бизнес-результата.

🔁 Как это работает

Вы создаёте две версии промпта:

  • Промпт A — базовый, текущий, “как есть”
  • Промпт B — улучшенный: добавили уточнение, формат вывода, примеры, шаги

Затем вы:

  1. Подаёте одинаковые входные данные (один и тот же запрос пользователя) к обоим промптам.
  2. Получаете два ответа.
  3. Сравниваете их по метрикам — например, по relevance, coherence, helpfulness, latency.
  4. Делаете вывод: какой промпт даёт лучший результат?

🧪 Пример

❓ Цель: получить список книг по JavaScript для новичка

🔹 Промпт A (базовый):

“Посоветуй книги по JavaScript”

🔸 Промпт B (улучшенный):

“Дай 3 книги по JavaScript для новичка, с кратким описанием и уровнем сложности. Верни ответ в виде маркированного списка.”

📊 При сравнении:

Метрика A B
Relevance Средняя Высокая
Coherence Низкая Высокая
Helpfulness Средняя Высокая
Latency Быстрая Чуть медленнее

➡️ Вывод: Промпт B выигрывает — он чуть медленнее, но даёт более полезный, логичный и структурированный ответ.

🧠 Аналогия: как дегустация кофе

Представьте, что вы владелец кофейни и пробуете два рецепта капучино:

  • Один — как всегда делали.
  • Второй — с новыми пропорциями молока и эспрессо.

Вы предлагаете оба напитка клиентам, но не говорите, где какой. Потом спрашиваете: какой вкуснее, мягче, насыщеннее?

📌 Это и есть A/B-тест — метод, позволяющий выбрать, что действительно работает лучше, а не что “кажется” лучше.

🛠 Зачем это нужно?

  • Избегать догадок. Не "мне кажется", а "мы проверили".
  • Объективно сравнивать варианты.
  • Постепенно улучшать качество промптов.

A/B-тестирование становится особенно важным, когда вы:

  • создаёте продукт с LLM (бот, редактор, поиск);
  • пишете промпты для целой команды;
  • обучаете сотрудников использовать LLM в рабочих задачах.

✅ Подсказка: не меняйте всё сразу

Для честного сравнения меняйте только одну вещь:

  • либо добавьте примеры (few-shot),
  • либо уточните формат,
  • либо измените формулировку запроса.

Так вы точно поймёте, что дало эффект.

⚙️ Инструменты: PromptEval и Langfuse

Чтобы анализировать качество промптов не на глаз, а по объективным метрикам, удобно использовать специальные инструменты. Они помогают оценивать, улучшать и отслеживать поведение модели — как на тестовых, так и на реальных данных.

🧪 PromptEval — “лаборатория” для оценки промптов

PromptEval — это инструмент для быстрой и автоматической проверки качества LLM-ответов.

Что он умеет:

  • загружать пары “промпт + ответ” (например, A и B),
  • сравнивать их по ключевым метрикам: relevance, coherence, helpfulness и другим,
  • выдавать оценку в числовом виде — например, "Ответ B на 25% лучше по полезности",
  • позволяет настроить кастомные метрики, если нужны свои критерии.

📌 Аналогия: Представьте, что вы оцениваете сочинения студентов. PromptEval — как электронный ассистент, который по шаблонам оценивает стиль, аргументацию и грамотность. Быстро и без эмоций.

Когда использовать:

  • при массовом тестировании промптов,
  • для A/B-сравнения разных версий,
  • чтобы автоматизировать аналитику в проекте с LLM.

📊 Langfuse — “Google Analytics” для LLM

Langfuse — это аналитическая платформа, которая отслеживает, как люди взаимодействуют с вашей моделью в реальных условиях.

Что она даёт:

  • логирует все запросы и ответы, включая время, контекст, версию промпта;
  • визуализирует поведение пользователей — кто, что и когда спрашивал;
  • показывает точки “просадки”: где пользователи недовольны, где промпт не сработал;
  • позволяет строить отчёты и дашборды, чтобы улучшать UX и промпт-инжиниринг.

📌 Аналогия: как камеры наблюдения и отчёты в магазине: вы видите, где покупатели теряются, где стоит очередь, что не работает — и на основе этого принимаете решения.

Когда использовать:

  • если у вас живой продукт с LLM (бот, генератор, редактор),
  • когда нужно понять поведение в реальном времени,
  • при построении воронок и трекинга качества промптов.

🧩 Вместе — идеально

  • Сначала проверяйте гипотезы через PromptEval (быстро, оффлайн).
  • Затем отслеживайте реальное поведение и метрики через Langfuse (онлайн, в бою).

🧠 Техники повышения объективности

Когда вы работаете с LLM, важно не просто получить “правдоподобный” ответ, а уметь оценивать его качество объективно. Ниже — три техники, которые позволяют добиться этого даже без метрик или инструментов.

1. Уточняющие вопросы — как уточнение в диалоге

Если модель дала ответ, но он слишком общий, поверхностный или неубедительный, не останавливайтесь. Добавьте запрос на аргументацию, источник или конкретную форму вывода.

📌 Примеры:

  • ❌ Запрос: «Почему важно тестировать код?» Ответ: «Чтобы избежать ошибок».
  • ✅ Уточнение: «Приведи 3 конкретных аргумента с примерами. Укажи, какие виды тестирования существуют».

💡 Аналогия: как на собеседовании. Вы не довольствуетесь первым ответом “Ну, вроде делал”. Вы переспрашиваете: “А можешь пример? Где ты это применял?”

2. Пошаговая генерация — разбей сложное на этапы

Вместо одного длинного запроса (“Сделай всё сразу”) дайте цепочку коротких инструкций:

  1. «Сначала подумай, какие критерии важны».
  2. «Теперь предложи 3 варианта решения».
  3. «Сравни их по критериям и выбери лучший».

Это заставляет модель:

  • обдумать ход решения, а не угадывать,
  • структурировать ответ по логике, а не просто выдать “готовое”,
  • делать промежуточные шаги, которые можно проверить.

📌 Аналогия: вместо “Сочини рассказ” — сначала “Придумай героя”, потом “Опиши конфликт”, потом “Придумай финал”.

🧠 Это техника Chain-of-Thought (CoT), и она значительно повышает explainability.

3. Сравнение с эталоном (reference answer) — проверка по шаблону

Если вы решаете задачу, у которой есть правильный ответ (факт, расчёт, определение) — можно сравнить результат модели с эталоном.

📌 Примеры:

  • ✅ Ввод: «Сколько будет 12\*8?»
  • ✅ Ответ модели: 96
  • ✅ Эталон: 96 → Совпадение: хорошо → Отличие: нужно доработать промпт или проверить интерпретацию

📌 Подходит для:

  • фактчекинга,
  • алгоритмических задач,
  • переформулировок с сохранением смысла.

💡 Аналогия: вы сдаёте тест — и сверяете с правильными ответами. Это простой, но мощный способ понять, где промпт даёт сбой.

🧨 Частые ошибки

  • Нельзя измерить “вкус” — промпты оцениваются по ощущениям (“мне нравится”), без формализованных критериев.
  • Сравнение без примеров — A/B-тест без фиксации входных данных и условий.
  • Игнорирование latency — в реальных системах скорость ответа критична (особенно в интерфейсах).
  • Тест на одном примере — даже хорошее впечатление от одного ответа ничего не доказывает. Нужно хотя бы 5–10 кейсов.

❓ Частые вопросы

Q: Можно ли полностью автоматизировать оценку качества?
A: Частично — да. Но субъективную составляющую (юмор, стиль, тон) пока оценивают люди.

Q: Как выбрать, какую метрику использовать?
A: Зависит от цели: в чат-ботах важны helpfulness и latency, в QA-системах — relevance и precision.

Q: Когда A/B-тест не сработает?
A: Если вы тестируете на нестабильной выборке или слишком разные задачи — результаты будут нерепрезентативны.

Q: А можно “на глаз”?
A: Можно — на этапе прототипа. Но при масштабировании это приводит к регрессиям и багам.

📌 Итоги

Сегодня вы узнали, что:

  • Качество промпта можно измерять, а не просто ощущать
  • Есть формальные метрики: relevance, coherence, helpfulness, latency
  • Инструменты вроде PromptEval и Langfuse помогают оценивать и улучшать промпты
  • A/B-тесты позволяют сравнивать формулировки на практике
  • Пошаговый подход и уточняющие инструкции — ключ к повышению точности

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

На следующий урок