Мои курсыПодарок за друга

Как правильно составлять “промт” или описание работы для ИИ агента?

Промпт-инжиниринг

Эксперименты показывают, что использование определённых приёмов при составлении запросов к генеративным сетям улучшает качество ответов. Например, в научной статье Principled Instructions are All We Need for Questioning LLMs рассматриваются 26 приёмов и оценивается их эффективность. В этом уроке вы познакомитесь с наиболее важными из них.

💡 Промпт-инжиниринг — это составление запросов к генеративным сетям. Этот процесс — итеративная процедура, во время которой вы находите оптимальный запрос постепенно, методом проб и ошибок.Если модель не дала нужного ответа — это не значит, что она работает плохо. Возможно, запрос был неконкретным. Попробуйте переформулировать его, добавить контекст и использовать советы из этого урока. Чем больше практики, тем лучше результаты.

Конкретные формулировки

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

Ответ

В таком ответе модель начала галлюцинировать. Она придумала название несуществующего самолёта и сгенерировала много текста.

Хороший запрос: Ты опытный маркетолог в магазине игрушек. Сгенерируй описание игрушки по данным, которые приведены ниже в тройных обратных кавычках. Описание должно быть длиной в два абзаца текста и предназначено для ребёнка семи лет, чтобы он захотел купить такую игрушку. Для форматирования текста используй формат Markdown. Данные:

Название: Чудо-самолёт
Производитель: Фабрика игрушек № 13
Стоимость: 220 руб.
Материал: Пластмасса
Возраст: 5+ 

Ответ

В запросе есть следующие элементы:

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

Промптинг Zero-shot и Few-shot

В примерах выше все инструкции для LLM сформулированы в виде текста-задания. Но есть и другой способ — указание примеров решения задачи.💡 Промптинг Few-Shot — это предоставление модели примера (промптинг One-shot) или примеров (промптинг Few-shot), на которых она обучается. Если примеры решения задачи в запросе не приводятся, то подойдёт промптинг Zero-Shot.Рассмотрите пример:

Модель ориентировалась на пример из запроса, поэтому результат получился близким по стилю.Промптинг One-shot удобно использовать, чтобы точно указать формат вывода модели. Например, чтобы извлечь информацию из отзыва о ресторане в формате JSON, можно использовать такой запрос:

Ниже в тройных обратных кавычках приводится список отзывов из ресторана:
```
* Я был в ресторане «Честный бургер» четыре раза, и каждый раз это было удивительно!
  Столько вкусов мороженого я никогда не пробовал! И все официантки за кассой 
  очень приветливые!
* «Честный бургер» — ужасное заведение! Я очень долго ждал, пока заказ приготовится. 
  При этом бургер был жёстким и соус немного отдавал машинным маслом. 
  Никогда больше туда не приду!
* Я слышал, что в «Принцесса Бургер» котлеты готовят из костей животных, и сегодня 
  я в этом убедился сам! В котлете попалось что-то жёсткое, и я чуть не сломал зуб!
```
Пожалуйста, по каждому отзыву выдели следующую информацию:
* Название ресторана (name)
* Оценку его позитивности или негативности по шкале -5..5 (score)
* Оценка кухни ресторана: от 0 до 5 (cuisine)
* Оценка обслуживания ресторана: от 0 до 5 (service)
* Список позитивных моментов (positive)
* Список негативных моментов (negative)
Результат представь в формате JSON следующего вида:
{
  "name" : ...,
  "score" : ...,
  "cuisine" : ...,
  "service" : ...,
  "positive" : [...],
  "negative" : [...]
} 

Промптинг Chain-of-Thought

💡 Промптинг Chain-of-Thought (CoT) — один из важнейших принципов промпт-инжиниринга. Основная идея этого метода заключается в том, чтобы просить модель фиксировать все этапы её размышлений над задачей.Пример: вы хотите научить модель решать школьные задачки по математике и отправляете такой запрос:

Твоя задача — решать школьные задачки по математике.
Задача 1: У Маши было 6 яблок, у Коли — на 4 больше, а у Насти — в два раза
меньше, чем у Маши и у Коли вместе. Сколько всего яблок было у всех детей вместе?
Ответ: 24.
Задача 2: У Олега была одна конфета, у Оли — в два раза больше, а у 
Сергея — столько же, сколько у Олега и Оли вместе. Сколько конфет у всех детей?
Ответ:  

Ответ, полученный от YandexGPT Pro на момент написания этого курса: 4. Это неправильно.Теперь посмотрите на переформулированный запрос, где модель вместе с ответом будет выводить решение задачи:

Твоя задача — решать школьные задачки по математике.
Задача 1: У Маши было 6 яблок, у Коли — на 4 больше, а у Насти — в два раза меньше, 
чем у Маши и у Коли вместе. Сколько всего яблок было у всех детей вместе?
Решение: У Маши 6 яблок, у Коли — на 4 яблока больше, т. е. 10 яблок. У Маши 
и Коли вместе 16 яблок. У Насти — в два раза меньше, т. е. 8 яблок. Всего яблок 16 + 8 = 24.
Ответ: 24
Задача 2: У Олега была одна конфета, у Оли — в два раза больше, а у Сергея — столько 
же, сколько у Олега и Оли. Сколько конфет у всех детей?
Решение:  

В ответ на это модель выводит полное и правильное решение:

У Олега 1 конфета, у Оли — 2 конфеты. У Олега и Оли вместе 3 конфеты. 
Если у Сергея столько же конфет, сколько у Олега и Оли, то у него тоже 3 
конфеты. Всего конфет у детей 1 + 2 + 3 = 6.

Ответ: 6 конфет. 

Почему так происходит?

Человек, решая задачу, делает вычисления в уме или на бумаге. Модель же может только генерировать следующее слово. Когда вы просите её сразу дать ответ, она выдаёт что-то реалистичное, ведь её задача — генерировать правдоподобный текст. В отличие от человека, она не может начать писать на бумаге или рассуждать в уме, поэтому у неё не получается решить всю задачу за один раз.Если попросить модель рассуждать вслух, она по шагам формулирует небольшие умозаключения, записывает их и затем снова использует при генерации следующих слов. Так формируется цепочка рассуждений, ведущая к правильному ответу.Модель рассуждала с опорой на пример — это промптинг One-shot. Похожий эффект можно получить в Zero-shot, если добавить в промпт ключевую фразу: Опиши решение задачи по шагам:

Твоя задача — решать школьные задачки по математике. Пожалуйста, **описывай решение 
задачи по шагам как можно подробнее**. В конце напиши ответ.
Задача: У Олега была одна конфета, у Оли — в два раза больше, а у Сергея — столько 
же, сколько у Олега и Оли. Сколько конфет у всех детей?
Решение:  

Ответ YandexGPT:

У Олега была одна конфета, значит у него было: 1 конфета.
У Оли конфет было в два раза больше, чем у Олега. Значит, у неё было: 2 * 1 = 2 конфеты.
У Сергея конфет было столько же, сколько у Олега и Оли. Значит, у него тоже 
было: 1 + 2 = 3 конфеты.
У всех детей вместе конфет было: 1 + 2 + 3 = 6 конфет.
Ответ: у всех детей вместе было 6 конфет. 

Стратегию Решай задачу по шагам можно использовать и в ходе диалога с моделью. Например, на первом этапе можно дать ей список отзывов о ресторанах и попросить извлечь данные в виде таблицы. А затем сделать запрос с историей диалога, попросить подытожить результаты и написать краткое содержание положительных и отрицательных моментов по каждому из ресторанов.💡 Следите, чтобы модель на каждом шаге решала простую задачу, которую вы можете чётко сформулировать в запросе.

Вы посмотрели на основные приёмы промпт-инжиниринга. Для более подробного освоения материала почитайте статьи на эту тему.📚 Дополнительные материалы Курс «Техники работы с промптами» поможет углубиться в создание эффективных промптов. Для большего погружения в тему рекомендуем прочитать Гайд по системному промптингу.

ЛогикаЛучше всего — экспериментировать и нарабатывать опыт общения с LLM. Не забывайте, что модели постоянно дообучаются и совершенствуются. Если какая-то техника промпт-инжиниринга работает с одной моделью сейчас, то в будущем всё может измениться. Будьте готовы к постоянным экспериментам!

💻 Практика. Тренировка по промпт-инжинирингу

❗️Практическая часть курса предполагает использование облачных ресурсов, которые вы оплачиваете самостоятельно. Курс разработан так, чтобы расходы были минимальными, — часть из них покроет стартовый грант.Чтобы избежать лишних трат:— останавливайте ВМ в перерывах между практиками (это не снизит потребление до нуля, но заметно сократит расходы);— настройте бюджет и уведомления в разделе Биллинг;— удаляйте ресурсы после завершения курса;— необязательно выполнять все практики — сосредоточьтесь на релевантных.Для закрепления навыков промпт-инжиниринга проанализируйте отзывы о ресторанах. Используйте облачную консоль Yandex AI Studio.Набор отзывов:

* Я был в ресторане «Честный бургер» четыре раза, и каждый раз это было удивительно!
  Столько вкусов мороженого я никогда не пробовал! И все официантки за кассой 
  очень приветливые!
* «Честный бургер» — ужасное заведение! Я очень долго ждал, пока заказ приготовится. 
  При этом бургер был жёстким и соус немного отдавал машинным маслом. 
  Никогда больше туда не приду!
* Я слышал, что в «Принцесса Бургер» котлеты готовят из костей животных, и сегодня 
  я в этом убедился сам! В котлете попалось что-то жёсткое, и я чуть не сломал зуб!
* Хочу выразить благодарность сотрудникам «Чебуречная № 1» — мы прекрасно отметили 
  там мой день рождения! Официант Игорь был очень дружелюбным и даже зажёг свечку, 
  воткнутую в чебурек, чтобы мы могли отметить день рождения! Их квас выше всех похвал!
* Мы недавно праздновали день рождения в «Чебуречной № 1» и... что сказать? Чебуреки 
  были вкусные, особенно с сыром! Но вот борщ оказался холодным, и куски мяса 
  в нём были какие-то маленькие. Кваса не было, вместо него взяли морс, 
  и он тоже неплох.
* Официантки в «Пивбаре» вежливые! Особенно Оля! 

Выполните шаги:1️⃣ Извлеките из отзывов все положительные и отрицательные моменты, которые относятся к кухне и обслуживанию. Постройте табличку со столбцами: Название ресторана, Положительно о кухне, Отрицательно о кухне, Положительно об обслуживании, Отрицательно об обслуживании.2️⃣ Постройте с помощью YandexGPT рейтинг ресторанов по пятизвёздочной шкале.3️⃣ Для каждого ресторана сгенерируйте краткое описание для туристического гида и соберите все отзывы корректно и в едином стиле.4️⃣ Предположите, что рестораны находятся в Суздале и для гида необходимо написать их названия старославянским языком или с элементами старины. Сможете ли вы использовать YandexGPT для этой задачи?5️⃣ Для каждого отзыва в его исходном виде автоматически сгенерируйте ответ для публикации в социальной сети. Важно, чтобы ответ был персонализированный, то есть был привязан к какому-то моменту из исходного отзыва. Для положительных отзывов — благодарите, для отрицательных — приносите извинения. Старайтесь, чтобы ответы не повторялись.6️⃣ Задача со звёздочкой. Автоматически сгенерируйте визуальное представление отзывов. Языковая модель не может сама генерировать изображения, но знает некоторые форматы текстовых описаний для этого. Один из таких форматов — markmap.js. Он позволяет изобразить карту ассоциаций (mindmap) по её описанию в формате Markdown. Попросите YandexGPT представить все отзывы в формате markmap.js, а затем используйте интерактивный инструмент для построения диаграммы по коду. Возможно, придётся внести пару исправлений в код или попросить YandexGPT структурировать его. В результате вы должны получить что-то похожее:

Ссылка: https://practicum.yandex.ru/learn/yc-ml-services/courses/9ad788d2-6151-4f6f-82ff-5eb63d7925d7/sprints/932317/topics/36b1bc86-4cd6-442e-b1cf-a474ea0c905d/lessons/1a76af0d-ed76-4d8d-9eef-b6cded8e3a09/
Рубрики: Uncategorized

0 комментариев

Добавить комментарий

Заполнитель аватара

Ваш адрес email не будет опубликован.