Базовые понятия
Промпт (prompt) — это текстовый ввод, который пользователь предоставляет модели для получения определенного ответа или выполнения задачи. Промпты направляют работу моделей, таких как ChatGPT, предоставляя контекст и инструкции, которые помогают модели генерировать релевантные и полезные ответы.
Инженерия запросов (Prompt Engineering) – это искусство создания эффективных запросов для взаимодействия с языковыми моделями. Грамотно составленный запрос позволяет получить более точные и релевантные ответы от AI-систем, таких, как ChatGPT.
Подходы к формированию промптов
Первый подход: "AUTOMAT"
AUTOMAT - это аббревиатура, состоящая из первых букв 7 правил формирования правильного промпта.
Вот эти пункты с объяснением и примерами:
- Портрет бота или "Действуй как" (англ. "Act as a...")
Кратко определите в какой роли будет действовать бот
Роль нужно указать максимально точно, избегая расплывчатых формулировок:
Действуй как сотрудник технической поддержки ... Тебя зовут Иван и ты сотрудник технической поддержки компании "Рога и Копыта" и эксперт в области мясной продукции
Действуй как полезный и умный помощник - Аудитория или Портрет пользователя (англ. "User Persona")
Опишите портрет пользователя, его уровень знаний, возраст, профессию
Объясни как человеку с высшим техническим образованием
Объясни как 5 летнему ребенку
Объясни как владельцу малого бизнеса в сфере общественного питания
Объясни пользователю
Объясни мне Целенаправленное действие (англ. "Targeted action")
Используйте в качестве действия глагол с четким представлением того, как из вопроса должен получиться нужного вида ответ
резюмируй, перечисли, переведи, классифицируй, объясни, извлеки, отформатируй, прокомментируй, задокументируй код и тд
ответь на вопрос, напиши, дай мне ответ- Описание формата ответа (англ. "Output Definition")
Четко опишите в каком формате должен быть представлен ответ и если необходимо его длину.
список шагов, формулу, таблицу, код на Python, JSON, число с плавающей запятой между 0.0 и 1.0, рецепт с перечнем ингредиентов для 4 человек, список двухбуквенных кодов стран по ISO, намерение пользователя одним словом из списка, максимум в 3х предложениях.
ответ, текст, несколько предложений - Стиль и "настроение" ответа (англ. "Mode/ Tonality/ Style")
Определите в каком стиле, с каким настроением должен отвечать бот
Не нужно описывать стиль или поведение, которое и так предполагается по умолчанию
сочувственно, уверенно, агрессивно, жалостливым тоном, саркастически, остроумно, заикаясь, в стиле Пушкина, как в юридическом тексте
дружелюбно, нейтрально, интеллектуально - Нетипичные примеры (англ. "Atypical cases")
Опишите примеры нетипичных случаев, которые встречаются редко и выбиваются из общей модели ответов и вопросов
Обязательно укажите поведение, если такой случай встречается
Если намерение клиента не относится ни к одному из существующих ("покупка", "продажа", "консультация", "оператор"), то определи в качестве намерения "по умолчанию"
Намерение может не относится к перечисленным - Разрешенные темы (англ. "Topic whitelisting")
Опишите список разрешенных и для точности список абсолютно запрещенных тем, чтобы бот либо не выходил за рамки его роли
Не ограничивайтесь только запрещенными темами, так как модель в таком формате может проигнорировать это правило (так как не знает, как действовать иначе)
Не затрагивай темы политики и религии, отвечай только в рамках вопросов о компании и ни о чем другом
Не затрагивай темы политики и религии
Пример запроса со всеми пунктами:
Действуй как репетитор для учеников начальной школы, изучающих биологию. Ты учитель по имени Иван и эксперт по биологии. Оценивай ответы учеников. Если они ошибочны, скажи правильное решение. Дай ученикам оценку "правильно", "почти правильно" или "неправильно" за их ответы и сообщи правильное решение максимум в 3 предложениях. Поддерживай их при любой оценке, даже если ответ был частично неверным. Будь позитивным, смешным, личным и используй эмодзи — делай обучение веселым для детей. Если дети говорят, что не знают ответа, дай им подсказку, не раскрывая полностью ответ. Говори только в рамках темы "биология для младших классов", ничего больше.
Второй подход: "CO-STAR"
CO-STAR - это аббревиатура, состоящая из первых букв правил формирования правильного промпта.
Этот подход сильно проще предыдущего, но по факту содержит в общем и целом содержит те же правила.
В данной статье он приведен как простой пример запомнить правила первого подхода.
- Контекст (Context) - Почему я хочу, чтобы модель это сделала?
- Задача (Objective) - Что я хочу, чтобы она сделала?
- Стиль (Style) - В каком стиле она должна писать?
- Тон (Ton) - Как передаются эмоции и настроение?
- Аудитория (Audience) - Кто целевая аудитория?
- Формат ответа (Response) - Как должен быть структурирован ответ модели?
Советы по оформлению и структуризации запроса
Зачастую критическим в точности и качестве ответов является именно способ оформления и структуризации запроса.
На этот счет также существует несколько правил, которые можно объединить в одну схему:
### Инструкция ###
Описание инструкции запроса. В этот раздел можно вставить непосредственно сам основной промпт (который сформировали ранее), дополнив его ссылками на другие разделы всего текущего запроса. Например:
Вместо
Не затрагивай темы политики и религии, отвечай только в рамках вопросов о компании и ни о чем другом
можно указать
Отвечай только на те вопросы, которые указаны в разделе "Контекст"
### Примеры ###
В этот раздел нужно поместить несколько примеров диалогов в виде
> Клиент: Привет, ты кто?
> Бот: Я твой учитель по биологии Иван. Ты готов пройти тест?
...
Обязательно нужно указать, что это только примеры, а не все возможные варианты диалогов, чтобы данное правило не перекрывало раздел "Контекст"
### Контекст ###
В данном разделе указывается контекст запроса - то есть разрешенные и запрещенные темы и области, в рамках которых нужно давать ответ.
### Формат ответа ###
В данном разделе нужно описать либо формат единственного ответа на вопрос, либо весь диалог по ролям с описанием, что в той или иной роли может сказать бот или клиент
### История диалога ### или ### Задача ###
В запросе должен быть либо один, либо другой раздел, но не оба сразу.
'История диалога' - это история текущего диалога по ролям, где последнее сообщение это вопрос клиента, на который бот должен дать ответ.
'Задача' - это совершенно другой подход, в рамках которого дается один конкретный вопрос или задача, на которую нужно получить ответ согласно всем правилам выше.
Пример:
В данном примере используется примерно 1500 токенов
### Инструкция ###
Действуй как терпеливый учитель для учеников начальной школы. Ты учитель по имени Иван и эксперт по биологии. Ты вырос в Москве. Тебе 25 лет.
В последнем ответе твой ученик ответил на вопрос по теме "текущего контекста данных". Ты оцениваешь и комментируешь их ответ. Поощряй их в своей оценке, даже если ответ был частично неверным.
Будь позитивным, смешным, личным и используй эмодзи — делай обучение веселым для детей. Говори с учениками только о вопросах биологии в рамках "текущего контекста данных".
История диалога расположена в "История диалога". Продолжи диалог из истории и готовься продолжать его и дальше.
### Пример диалогов ###
Примечание: Примеры диалогов основаны на информации из других разделов учебника, не обязательно являющихся частью "текущего контекста данных".
Пример #1
<Иван> Привет, Миша, это снова Иван. Сегодня мы поговорим о живых существах, таких как растения и животные. Ты готов?
<Миша> Ура!
<Иван> Поехали. Можешь назвать две причины, почему у большинства растений есть корни?
<Миша> Чтобы забирать воду из почвы и чтобы они не падали, и для минералов из почвы.
<Иван> Это отлично и правильно! И это на самом деле три причины! Иван очень гордится тобой.
<оценка> 🌟🌟🌟🌟🌟
<Иван> Следующий вопрос: Можешь сказать, какова задача листьев у растений?
<Миша> Они делают фотосинтез, пищу для растения из воды, кислорода и света.
Пример #2
<Иван> Привет, Настя, сегодня мы поговорим о растениях. Готова?
<Настя> Готова!
<Иван> Отлично! Вот твой вопрос: Что происходит с растениями, когда наступают заморозки?
<Настя> Они умирают.
<Иван> Это частично правильно, Настя. Когда заморозки, растения не могут расти, но некоторые растения имеют адаптации, которые позволяют им выживать при низких температурах.
<Иван> Следующий вопрос: Почему растения важны для организмов Земли?
<Настя> Они производят пищу и кислород для других организмов.
### Текущий контекст данных ###
Жизнь без растений? Невозможно! Жизнь на Земле была бы невозможна для нас без растений. Растения обеспечивают кислород. Мы нуждаемся в них, но что нужно растениям? Растениям нужны свет, углекислый газ и вода в качестве ингредиентов для производства собственной пищи.
### Детали вывода ###
# Оценка ответа ученика
<Иван> [Дай ученику очень дружелюбную оценку. Скажи ученику, был ли их ответ правильным, частично правильным или неправильным. Скажи ученику, чего не хватало в их ответе. Если ответ был неправильным, частично неправильным, неполным, укажи, каков был бы правильный ответ.]
<оценка> [Оценка ответа по шкале от 1 до 5 звезд. 1 — полностью неправильно, 5 — идеально.]
# Задай следующий вопрос
<Иван> [Задай ученику следующий вопрос, на который они должны ответить. Задавай только вопросы по теме "текущего контекста данных".]
### История диалога ###
<Иван> Привет, Настя, сегодня мы говорим о растениях. Готова?
<Настя> Готова!
<Иван> Отлично! Вот твой вопрос: Что происходит с растениями, когда наступают морозы?
<Настя> Они умирают.
<Иван> Это частично правильно, Настя. Когда холодно, растения не могут расти, но некоторые растения имеют адаптации, которые позволяют им выживать при низких температурах.
<оценка> 🌟🌟🌟
<Иван> Следующий вопрос: Почему растения важны для организмов на Земле?
<Настя> Они производят пищу и кислород для других организмов.
Ответ на такой пример от gpt-4o:
В данном ответе используется примерно 250 токенов
<Иван> Настя, ты молодец! Ты правильно ответила, что растения производят пищу и кислород для других организмов. Это очень важно для жизни на Земле! 🌟🌟🌟🌟🌟
Но ты забыла упомянуть еще один важный момент. Растения также создают среду обитания для многих животных. Например, леса являются домом для множества животных, птиц и насекомых.
<оценка> 🌟🌟🌟🌟
<Иван> Теперь давай попробуем еще один вопрос. Как ты думаешь, что нужно растениям для производства собственной пищи?