Можно ли повысить качество ответов языковых моделей с помощью более продуманных промтов? Как сделать так, чтобы ответы LLM следовали определенному формату? Как заставить модели объяснять свои ответы? Рассказываем о методах формулирования эффективных запросов к LLM в нашем материале.
Иллюстрация: Ксения Здоровец
История развития технологий часто повторяется. Первые алгоритмы поиска требовали от пользователей умения правильно формулировать запрос и использовать специальные операторы для фильтрации поисковой выдачи. Со временем поисковики подстроились под обычного пользователя и научились «угадывать», что он имел в виду, вводя текст «скачать бумер бесплатно» в поисковую строку. Технические уловки и операторы стали не нужны.
Сегодня мы находимся на похожем этапе развития языковых моделей: качество их ответов напрямую зависит от того, как сформулирован запрос. Как и двадцать лет назад, мы используем специальные приемы для получения от машины оптимального ответа.
Новейшие LLM уже неплохо справляются с неточными формулировками, а некоторые техники промтинга (промптинг/промтинг — написание запросов, промпт/промт — запрос, затравка, от английского prompt), например chain-of-thought, встраиваются непосредственно в модели. Однако специальные методы все еще необходимы:
Базовые настройки и системные инструкции больших языковых моделей заточены под рядового пользователя и самые распространенные типы задач, которые он предположительно будет решать с их помощью. Поэтому стиль и формат ответа модели по умолчанию будут нормализованными и усредненными. Простые и короткие запросы к таким моделям вернут вам простые и стандартные ответы. Такие запросы называются zero-shot запросами (запросы без примеров).
Запрос без примеров (zero-shot prompting) — это обычный запрос (вопрос) к модели. Мы рассчитываем на качество модели, на ее системные установки. Такие запросы хорошо работают для популярных запросов, для которых обучали модель (например, суммаризация текста или предварительный анализ данных). Для них не требуется специальной подготовки материалов, но и результат будет, скорее всего, тоже стандартный.
Zero shot prompting. Пример использования для анализа данных (Claude 3.5 Sonnet)
Если вы хотите получить от модели более развернутый и глубокий ответ в определенном формате/стиле, то при помощи одного или нескольких примеров (подсказок) необходимо явно показать, чего вы от нее ждете. Такой метод формулирования запросов называется one/few shot prompting.
Примеры подаются в формализованном виде типа «вопрос-ответ», «входные данные — ответ» или задаются в запросе фразами-маркерами: «Используй такой формат…», «По аналогии с…», «Следуй этому примеру…», «В таком же стиле, как…».
Количество примеров в запросе зависит от того, насколько сложна наша задача: иногда достаточно одного примера, чтобы модель смогла успешно ответить на запрос, в других случаях необходимы десятки или даже сотни (many-shot prompting). Например, возьмем простую задачу: написать письмо — и сравним результат обычного запроса без примера (zero shot) и такого же запроса с примерами (one/few shot). В качестве образца стиля предложим модели фрагменты рассказа А. Чехова «Письмо к ученому соседу»).
Сначала покажем, как модель отвечает при запросе без примеров.
Запрос: Напиши моему профессору письмо с просьбой о встрече.
Тема: Запрос на встречу
Уважаемый(ая) [Имя Отчество профессора],
Меня зовут [Ваше имя], и я являюсь студентом(кой) [курс, программа или кафедра, если уместно]. Я хотел(а) бы попросить о встрече в удобное для вас время, чтобы обсудить [кратко опишите тему или цель встречи, например: «мой исследовательский проект», «учебные вопросы», «подготовку к экзамену» и т. д.].
Если возможно, пожалуйста, сообщите, в какие дни и время вам было бы удобно встретиться. Я готов(а) подстроиться под ваше расписание.
Спасибо за внимание и заранее благодарю за возможность.
С уважением,
[Ваше полное имя]
[Контактные данные: телефон, email]
Теперь посмотрим, что произойдет, если показать модели пример стиля.
Запрос: Напиши моему профессору письмо с просьбой о встрече в этом стиле.
Пример: [первые четыре предложения из рассказа Чехова «Письмо к ученому соседу»].
Тема: Запрос на встречу
Многоуважаемый и всечестнейший Профессор!
Дозвольте, смиренно склонив главу, обратиться к Вам с покорнейшей просьбой, столь ничтожной и простой, что едва ли она заслуживает драгоценного внимания Вашего высокого ума. Осмелюсь же просить Вас о встрече, дабы удостоиться счастья лицезреть Вас и, может быть, сколь-нибудь познать в Вашем присутствии светоч науки и мудрости, сияющий в Вашей благородной личности.
Стыдно мне, жалкому существу, беспокоить столь высокого человека своими бедными словами, однако жажда знания и стремление к совершенству гнали меня, как ветер гонит осенний лист. Позвольте же, о светлый профессор, назначить час, удобный Вам, для столь великого для меня события, как наша беседа.
С глубочайшим уважением,
Ваш преданный студент,
[Ваше имя]
Запрос: Напиши письмо моему профессору с просьбой о встрече в заданном стиле.
Пример стиля 1: [первые четыре предложения из рассказа Чехова «Письмо к ученому соседу»].
Пример стиля 2: [следующие четыре предложения из рассказа Чехова «Письмо к ученому соседу»].
Профессору (имя, отчество, фамилия)
Драгоценный светило науки, милостивейший наставник, позвольте мне, ничтожному червяку в океане ученых умов, дерзновенно обратиться к Вам с просьбой, за которую заранее прошу меня простить. Простите мне, профессоре, старческую слабость и простодушие, если мое смиренное письмо потревожит Вас, великого трубоносца знаний и властителя заграничных книг с заманчивыми рисунками.
Уже не первый год я, жалкий рифейский стручок, жажду познать Вашу ученую мудрость ближе, ибо пламенно люблю я учителей человечества, сияющих, как светила, в небосводе науки. Подобно паломнику, я мечтаю узреть Ваш умственный храм и услышать слова, исходящие из его глубин.
Посему, если Провидение и Ваша доброта позволят, осмелюсь просить о встрече с Вами в удобное для Вас время. Хотел бы я, малый и ничтожный умом, но горячий душой, обсудить некоторые вопросы, касающиеся нашего с Вами предмета — той самой священной области знания, что питает нас идеями, как солнце питает земные растения.
Будьте милосердны, профессор, и позволите мне явиться к Вам, дабы принять от Вас искры научного света, которые так щедро излучает Ваш умственный горизонт. Я останусь в ожидании Вашего ответа, как скромный подсолнух в ожидании утреннего солнца.
С почтением и трепетом,
Ваш преданный слушатель,
(Ваше имя)
Добавление второго примера провоцирует модель не просто генерировать более длинный текст. Пример актуализирует в ее контексте более глубокие смысловые связи, которые были построены ею в процессе обучения. Да, модель буквально заимствует из показанного ей чеховского текста «заграничные книги с заманчивыми рисунками», однако ни «скромного подсолнуха», ни «рифейских стручков» у Чехова не было: они нашлись в ее векторной картине мира.
Для более сложных запросов, где возможны варианты ответа, лучше использовать несколько примеров, чтобы продемонстрировать модели ожидаемую вариативность, и тщательно подобрать эти примеры. Этот способ отлично работает для извлечения данных из текста.
Запрос:
Какие люди упоминаются в этом тексте?
20 марта 2006 г. 17:00 День Кривулина в «Платформе». Конференция «Поэзия Виктора Кривулина». В программе: Людмила Зубова «Письма и письменность в стихах Виктора Кривулина», Сергей Завьялов (Хельсинки) «Цикл Кривулина «Слабые стихи» (1986)», Михаил Шейнкер (Москва) «Виктор Кривулин: поэтика и хронология», Борис Иванов с воспоминаниями о Викторе Кривулине.
В тексте упоминаются следующие люди:
В ответ на такой запрос мы получаем ответ от модели в свободной форме: в примере выше модель не просто перечисляет упоминаемых персонажей, но и дает краткую справку о каждом. Если же нам нужен ответ в виде списка имен, полезно показать это на примере.
Запрос:
Какие люди упоминаются в этом тексте?
20 марта 2006 г. 17:00 День Кривулина в «Платформе». Конференция «Поэзия Виктора Кривулина». В программе: Людмила Зубова «Письма и письменность в стихах Виктора Кривулина», Сергей Завьялов (Хельсинки) «Цикл Кривулина «Слабые стихи» (1986)», Михаил Шейнкер (Москва) «Виктор Кривулин: поэтика и хронология», Борис Иванов с воспоминаниями о Викторе Кривулине.
Верни ответ в заданном формате:
Пример. 16 марта 2015 г. 17:30 Центр Андрея Белого и Музей Ахматовой представляют вечер памяти Бориса Иванова и Виктора Кривулина. [соб. инф.]
Ответ: Борис Иванов, Виктор Кривулин.
Людмила Зубова, Сергей Завьялов, Михаил Шейнкер, Борис Иванов, Виктор Кривулин.
Одного примера хватило, чтобы модель ответила четко и по существу, без генерации лишнего текста.
В более сложных случаях может потребоваться несколько примеров, которые представят вариативность ожидаемого ответа: например, мы хотим получить несколько списков, списки могут быть пустыми (если в тексте не упоминаются нужные нам персонажи). Чтобы модель не растерялась и не начала фантазировать, выискивая запрошенных, но не существующих в тексте персонажей, мы показываем, что в ответе допустимы вариации.
Запрос:
Какие люди участвуют в событии, а какие только упоминаются?
10 декабря 2014 г. 16:00 В рамках IV Международного фестиваля театрального искусства «Terra Incognita». Из цикла «Петербургский Элизиум». Вечер памяти поэтов-лауреатов премии А.Белого (В. Кривулина и Арк. Драгомощенко), «Романтический театр Томошевского» (г. Санкт-Петербург). [соб. инф.] Верни ответ в заданном формате.
Пример 1:
20 марта 2006 г. 17:00 День Кривулина в «Платформе». Конференция «Поэзия Виктора Кривулина». В программе: Людмила Зубова «Письма и письменность в стихах Виктора Кривулина», Сергей Завьялов (Хельсинки) «Цикл Кривулина «Слабые стихи» (1986)», Михаил Шейнкер (Москва) «Виктор Кривулин: поэтика и хронология», Борис Иванов с воспоминаниями о Викторе Кривулине.
Ответ:
Упоминания: Виктор Кривулин
Участники: Людмила Зубова, Сергей Завьялов, Михаил Шейнкер, Борис Иванов
Пример 2:
20 марта 2006 г. 19:00 День Кривулина в «Платформе». Вечер стихов и воспоминаний. По завершении литературного вечера будет показан фильм о Викторе Кривулине.
Упоминания: Виктор Кривулин
Участники: —
Упоминания: Виктор Кривулин, Аркадий Драгомощенко
Участники: —
В качестве упрощенного и более короткого варианта техники few shot prompting используется прямая инструкция (instruction prompting) с перечислением возможных вариантов ответа без подробных примеров.
Запрос:
Какие люди участвуют в описанном событии, а какие только упоминаются? Верни два списка людей: «Участники» и «Упоминания». Если один или оба списка пустые, верни пустые списки. Включай в списки только людей.
Описание события: 20 марта 2006 г. 17:00 День Кривулина в «Платформе». Конференция «Поэзия Виктора Кривулина». В программе: Людмила Зубова «Письма и письменность в стихах Виктора Кривулина», Сергей Завьялов (Хельсинки) «Цикл Кривулина «Слабые стихи» (1986)», Михаил Шейнкер (Москва) «Виктор Кривулин: поэтика и хронология», Борис Иванов с воспоминаниями о Викторе Кривулине.
Участники:
Участники:
Для решения сложных логических или математических задач используется техника chain-of-thought, или цепочка рассуждений. Принцип ее действия уже описывался в «Системном Блоке», и суть ее сводится к тому, чтобы побудить модель рассуждать и действовать последовательно в процессе решения вместо того, чтобы давать ближайший, наиболее очевидный ответ.
Простейший способ задействовать эту технику — прямо обозначить ее в запросе, используя выражения-маркеры вроде: «Давай думать шаг за шагом», «Рассуждай логически», «Объясни свой ход мыслей», «Разбей решение на этапы», «Покажи промежуточные вычисления».
В более сложных случаях можно задать для модели логику рассуждения, последовательность действий и этапы проверки, подробно описав их в промте: так мы дадим ей возможность самостоятельно обнаружить ошибку и исправить ее, вернувшись на шаг назад.
В последних моделях, которые предназначены для решения научных задач, эта техника уже включена в системные инструкции. Например, GPT-4o сама переключается на пошаговое размышление, если предложить ей логическую задачу, а в описании модели GPT-о1 компания OpenAI не рекомендует пользователю задавать алгоритм решения, чтобы не дублировать инструкции и не сбивать модель с толку. Вы можете проверить, заложена ли эта техника в базовых настройках модели. Если вы получаете ответы, где пронумерованы логически связанные шаги рассуждения, встречаются маркеры типа «Сначала…», «Затем…», «Наконец…» и промежуточные результаты, то, скорее всего, модель уже настроена на цепочку рассуждений.
Вопрос:
В секции борьбы сумо 12 юношей. 8 из них любят пельмени. 7 сумоистов любят котлеты. 5 спортсменов любят и котлеты, и пельмени. Сколько в команде тех, кто не любит ни пельмени, ни котлеты?
Дано: Запрос на встречу
Нужно найти количество юношей, которые не любят ни пельмени, ни котлеты.
Шаг 1. Найдем количество юношей, которые любят пельмени или котлеты (∣A∪B∣):
∣A∪B∣ = ∣A∣ + ∣B∣ − ∣A∩B∣.
Подставим значения:
∣A∪B∣ = 8 + 7 − 5 = 10.
Шаг 2. Найдем тех, кто не любит ни пельмени, ни котлеты:
Количество юношей, которые не любят ни пельмени, ни котлеты, равно разнице между общим числом юношей и теми, кто любит пельмени или котлеты:
Не любят ни пельмени, ни котлеты = 12 − ∣A∪B∣
Подставим:
Не любят ни пельмени, ни котлеты = 12 – 10 = 2.
Ответ:В команде 2 юноши, которые не любят ни пельмени, ни котлеты.
Менее продвинутую модель мы можем подтолкнуть к рассуждениям фразами-маркерами:
Запрос: В секции борьбы сумо 12 юношей. 8 из них любят пельмени. 7 сумоистов любят котлеты. 5 спортсменов любят и котлеты, и пельмени. Сколько в команде тех, кто не любит ни пельмени, ни котлеты? Рассуждай логически и описывай свой ход мыслей.
Компания Google представила много новых ИИ-продуктов, а модель GPT опровергла известную математическую гипотезу Пала Эрдёша — рассказываем, что произошло в мире ИИ за последнее время
Facebook* и Instagram* будут сканировать фото и видео, чтобы находить детей, которые скрыли свой возраст
Можно ли заниматься NLP, если при словах «производная» и «матрица» хочется закрыть ноутбук? Да — если изучать математику не абстрактно, а через реальные задачи. Объясняем, какие разделы действительно нужны джуну,…