Оценка промптов: основы

Урок 1 из 9 курса «Оценка качества промптов»: официальный курс Anthropic Academy (Антропик) на русском языке. Этот урок бесплатный.

Оценки 101

Оценки 101

Этот урок (и последующие восемь дополнительных уроков) посвящен подходам к написанию оценок для вариантов использования LLM — критически важного компонента при разработке приложений на базе ИИ.

В быстро развивающемся мире искусственного интеллекта большие языковые модели стали мощными инструментами для бизнеса в различных отраслях. Однако для использования всего потенциала этих моделей требуется не только их внедрение, но и тщательная оценка и оптимизация. Именно здесь вступают в игру оценки промптов, или "эвалы" (evals).

Вот две реальные цитаты из нашей внутренней команды архитекторов решений, объясняющие, почему оценки настолько важны:

Неспособность команд измерять производительность своих моделей является самым большим препятствием для использования LLM в производственных сценариях, а также превращает промптинг в искусство вместо науки

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

Есть две основные причины, по которым разработчики не пишут оценки: 1. Многие люди незнакомы с самой идеей оценок 2. Непонятно, как на самом деле реализовать оценки

Этот курс призван объяснить обе части: что такое оценки и как их писать.

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


Бенчмарки

Прежде чем мы углубимся в пользовательские оценки, давайте уделим минуту обсуждению одной формы оценки, с которой знакомо большинство людей: бенчмарки моделей.

Бенчмарки моделей похожи на стандартизированные тесты в мире ИИ. Подобно тому, как результаты SAT должны давать колледжам общее представление об академических способностях студента, бенчмарки моделей дают нам широкое представление о том, насколько хорошо модель ИИ справляется с различными задачами.

Компании, создающие большие языковые модели, проводят эти бенчмарки, чтобы продемонстрировать возможности своих моделей. Вы можете увидеть впечатляющие результаты в тестах с причудливыми названиями, такими как ARC, MMLU или TruthfulQA. Эти бенчмарки охватывают все: от базового понимания прочитанного до продвинутого рассуждения и знаний в различных областях. Они полезны для сравнения различных моделей и отслеживания общего прогресса в возможностях ИИ. Вы, возможно, знакомы с карточками моделей, которые отображают результаты бенчмарков:

benchmarks.png

Хотя эти бенчмарки отлично подходят для хвастовства и дают общее представление о возможностях модели, они не показывают всей картины. Это немного похоже на знание показателя IQ человека – он может (или не может!) сказать вам что-то об его общем интеллекте, но он не скажет, будет ли этот человек хорош в вашей конкретной работе.


Пользовательские оценки

Представьте, что вы только что купили новый блестящий швейцарский армейский нож. Он поставляется с десятками инструментов и гаджетов, но вы в основном заинтересованы в его использовании для открывания консервных банок во время похода. Конечно, здорово, что он также может подпилить ногти или откупорить винные бутылки, но насколько хорошо он на самом деле открывает банки? Именно здесь вступают в игру оценки промптов для больших языковых моделей.

LLM похожи на сверхмощные швейцарские армейские ножи для текста. Они могут делать всевозможные удивительные вещи с языком, от написания стихов до кодирования программного обеспечения. Но когда вы используете LLM для конкретной задачи – например, ответа на электронные письма службы поддержки или генерации описаний продуктов – вам нужно знать, насколько хорошо она справляется с этой конкретной работой.

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

Основные преимущества оценок включают:

  • Итеративное улучшение промптов — версия 2 моего промпта работает лучше, чем версия 1, для моей конкретной задачи?
  • Обеспечение качества до и после развертывания и изменения промптов — вызвало ли наше последнее обновление промпта регрессию?
  • Объективное сравнение моделей — можем ли мы переключиться на новейшую модель Anthropic и сохранить или улучшить нашу текущую производительность оценки?
  • Потенциальная экономия средств — можем ли мы переключиться на самую дешевую и быструю модель Anthropic и сохранить нашу текущую производительность оценки?

При написании и оптимизации промптов мы следуем итеративному процессу, который основывается на оценках:

process.png

  • Мы начинаем с разработки наших тестовых сценариев, о которых мы узнаем подробнее чуть позже.
  • Затем мы пишем черновой вариант промпта для нашего конкретного сценария использования.
  • Далее мы тестируем наш промпт с помощью нашего набора тестовых сценариев и измеряем, насколько хорошо модель справилась с поставленной задачей. Нам нужен некий базовый балл.
  • Как только у нас есть базовый балл, мы можем вносить изменения в наш промпт и повторять процесс.

"Эвалы" — это о присвоении метрик для количественной оценки качества нашей комбинации промпта и модели. Без количественного измерения, как мы узнаем, приводят ли изменения в промпте к улучшениям?


Что входит в оценку (eval)?

Хорошо разработанная оценка промпта состоит из четырех основных компонентов:

  • Пример входных данных: Это инструкция или вопрос, данные модели. Крайне важно разрабатывать промпты, которые точно представляют типы входных данных, с которыми ваше приложение столкнется в реальном использовании.
  • Эталонный ответ (Golden Answer): Правильный или идеальный ответ служит эталоном для вывода модели. Создание высококачественных эталонных ответов часто требует участия экспертов в предметной области для обеспечения точности и релевантности.
  • Вывод модели: Это фактический ответ, сгенерированный LLM на основе входного промпта. Именно его вы будете оценивать по отношению к эталонному ответу.
  • Балл (Score): Количественное или качественное значение, представляющее производительность модели для конкретного входного значения. Метод оценки может варьироваться в зависимости от характера вашей задачи и выбранного подхода к оцениванию.

eval_diagram.png

Мы обычно рекомендуем использовать не менее 100 пар "тестовый сценарий/эталонный ответ" для получения наилучших результатов, однако, чтобы снизить расходы на API для студентов, проходящих этот курс, большинство наших оценок будет использовать значительно меньше пар.

Пример набора данных для оценки

Представьте, что мы хотим использовать LLM для классификации жалоб клиентов. (Очень маленький) набор данных для оценки может выглядеть так:

eval_data = [
    {
        "complaint": "The app crashes every time I try to upload a photo",
        "golden_answer": ["Software Bug"]
    },
    {
        "complaint": "My printer isn't recognized by my computer",
        "golden_answer": ["Hardware Malfunction"]
    },
    {
        "complaint": "I can't figure out how to change my password",
        "golden_answer": ["User Error"]
    }
]

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


Подходы к оцениванию

Выбор правильного метода оценивания имеет решающее значение для эффективности наших оценок. Каждый метод имеет свои сильные стороны и подходит для различных типов задач.

Оценивание человеком

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

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

Формы оценивания человеком включают:

  • Экспертная оценка: специалисты в предметной области оценивают ответы на точность и глубину. Для банковского чат-бота, обсуждающего варианты ипотеки, юристы могут вручную проверять ответы, чтобы убедиться в их соответствии законам о справедливом кредитовании и точности изложения условий. Дерматологи могут оценивать рекомендации модели по скринингу рака кожи, проверяя правильность идентификации, соответствующую срочность и соответствие последним исследованиям.
  • Панель пользовательского опыта: Группа оценивает выходные данные на предмет ясности, полезности, вовлеченности и других субъективных суждений.

Оценивание на основе кода

Оценивание на основе кода использует программные методы для оценки вывода модели. Этот подход идеален для задач с четкими, объективными критериями. Например, если вы используете LLM для извлечения определенных данных из текста, вы можете использовать код для проверки соответствия извлеченной информации ожидаемым значениям.

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

Формы оценивания на основе кода включают: * Оценивание по точному совпадению строк (Exact String Match Grading) — это самая строгая форма, при которой вывод модели должен быть идентичен эталонному ответу, символ в символ. Это похоже на тест с несколькими вариантами ответов, где верен только один ответ. Для викторины по географии вопрос может быть: "What is the capital of France?" Единственным принятым ответом будет "Paris" * Наличие ключевых слов (Keyword Presence) — Этот метод проверяет, содержит ли вывод модели определенные критические слова или фразы, независимо от их порядка или контекста. В чат-боте поддержки продукта запрос "How do I reset my SmartHome thermostat?" может требовать включения в ответ ключевых слов "hold", "button", "5 seconds" и "blinking light". * Регулярные выражения (Regex): Мы можем определить регулярные выражения, которые могут проверять сложные текстовые шаблоны. Банковский чат-бот, оценивающий право на получение кредитной карты, может требовать шаблон "Your credit score of \d{3} (qualifies|does not qualify) you for our \w+ Card" для обеспечения того, чтобы он предоставлял как балл, так и результат. * Многие другие!

Оценивание на основе LLM

Оценивание на основе LLM представляет собой нечто среднее между подходами, основанными на коде, и подходами, основанными на человеке. Этот метод использует другую LLM (или иногда ту же самую) для оценки выходных данных. Создавая тщательные промпты для оценивания, вы можете использовать возможности LLM по пониманию языка для оценки широкого спектра критериев.

Этот подход может обрабатывать более сложные и субъективные оценки, чем оценивание на основе кода, будучи при этом быстрее и масштабируемее, чем оценивание человеком. Однако он требует умелого проектирования промптов (prompt engineering) для обеспечения надежных результатов, и всегда существует риск того, что оценивающая LLM внесет свои собственные предубеждения.

Формы оценивания моделью включают: * Качество резюмирования (Summarization Quality) — Насколько лаконично и точно это резюме? * Оценка тона (Tone Assessment) — Соответствует ли этот ответ нашим рекомендациям по бренду или тону голоса? * Любое другое качество! — Мы можем определить нашу собственную пользовательскую рубрику, которую большая языковая модель использует для оценки выходных данных по любым метрикам, которые мы можем себе представить: насколько извиняющимся является вывод? Упоминается ли в выводе конкурент?


Заключение

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

Далее давайте научимся писать "эвалы"!

Полезные гиды