Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 7 Текущий »

Базовые понятия

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

Инженерия запросов (Prompt Engineering) – это искусство создания эффективных запросов для взаимодействия с языковыми моделями. Грамотно составленный запрос позволяет получить более точные и релевантные ответы от AI-систем, таких, как ChatGPT.

Подходы к формированию промптов

Первый подход: "AUTOMAT"

AUTOMAT - это аббревиатура, состоящая из первых букв 7 правил формирования правильного промпта. 

Вот эти пункты с объяснением и примерами:

  1. Портрет бота или "Действуй как" (англ. "Act as a...")
    Кратко определите в какой роли будет действовать бот
    Роль нужно указать максимально точно, избегая расплывчатых формулировок:
    check mark button Действуй как сотрудник технической поддержки ... Тебя зовут Иван и ты сотрудник технической поддержки компании "Рога и Копыта" и эксперт в области мясной продукции
    cross mark Действуй как полезный и умный помощник
  2. Аудитория или Портрет пользователя (англ. "User Persona") 
    Опишите портрет пользователя, его уровень знаний, возраст, профессию
    check mark button Объясни как человеку с высшим техническим образованием
    check mark button Объясни как 5 летнему ребенку
    check mark button Объясни как владельцу малого бизнеса в сфере общественного питания
    cross mark Объясни пользователю
    cross mark Объясни мне
  3. Целенаправленное действие (англ. "Targeted action")
    Используйте в качестве действия глагол с четким представлением того, как из вопроса должен получиться нужного вида ответ
    check mark button резюмируй, перечисли, переведи, классифицируй, объясни, извлеки, отформатируй, прокомментируй, задокументируй код и тд
    cross mark ответь на вопрос, напиши, дай мне ответ

  4. Описание формата ответа (англ. "Output Definition")
    Четко опишите в каком формате должен быть представлен ответ и если необходимо его длину.
    check mark button список шагов, формулу, таблицу, код на Python, JSON, число с плавающей запятой между 0.0 и 1.0, рецепт с перечнем ингредиентов для 4 человек, список двухбуквенных кодов стран по ISO, намерение пользователя одним словом из списка, максимум в 3х предложениях. 
    cross mark ответ, текст, несколько предложений
  5. Стиль и "настроение" ответа (англ. "Mode/ Tonality/ Style")
    Определите в каком стиле, с каким настроением должен отвечать бот
    Не нужно описывать стиль или поведение, которое и так предполагается по умолчанию
    check mark button сочувственно, уверенно, агрессивно, жалостливым тоном, саркастически, остроумно, заикаясь, в стиле Пушкина, как в юридическом тексте
    cross mark дружелюбно, нейтрально, интеллектуально
  6. Нетипичные примеры (англ. "Atypical cases")
    Опишите примеры нетипичных случаев, которые встречаются редко и выбиваются из общей модели ответов и вопросов
    Обязательно укажите поведение, если такой случай встречается
    check mark button Если намерение клиента не относится ни к одному из существующих ("покупка", "продажа", "консультация", "оператор"), то определи в качестве намерения "по умолчанию"
    cross mark Намерение может не относится к перечисленным
  7. Разрешенные темы (англ. "Topic whitelisting")
    Опишите список разрешенных и для точности список абсолютно запрещенных тем, чтобы бот либо не выходил за рамки его роли
    Не ограничивайтесь только запрещенными темами, так как модель в таком формате может проигнорировать это правило (так как не знает, как действовать иначе)
    check mark button Не затрагивай темы политики и религии, отвечай только в рамках вопросов о компании и ни о чем другом
    cross mark Не затрагивай темы политики и религии

Пример запроса со всеми пунктами:

Действуй как репетитор для учеников начальной школы, изучающих биологию. Ты учитель по имени Иван и эксперт по биологии. Оценивай ответы учеников. Если они ошибочны, скажи правильное решение. Дай ученикам оценку "правильно", "почти правильно" или "неправильно" за их ответы и сообщи правильное решение максимум в 3 предложениях. Поддерживай их при любой оценке, даже если ответ был частично неверным. Будь позитивным, смешным, личным и используй эмодзи — делай обучение веселым для детей. Если дети говорят, что не знают ответа, дай им подсказку, не раскрывая полностью ответ. Говори только в рамках темы "биология для младших классов", ничего больше.

Второй подход: "CO-STAR"

CO-STAR - это аббревиатура, состоящая из первых букв правил формирования правильного промпта. 

Этот подход сильно проще предыдущего, но по факту содержит в общем и целом содержит те же правила.

В данной статье он приведен как простой пример запомнить правила первого подхода. 

  1. Контекст (Context) - Почему я хочу, чтобы модель это сделала?
  2. Задача (Objective) - Что я хочу, чтобы она сделала?
  3. Стиль (Style) - В каком стиле она должна писать?
  4. Тон (Ton) - Как передаются эмоции и настроение?
  5. Аудитория (Audience) - Кто целевая аудитория?
  6. Формат ответа (Response) - Как должен быть структурирован ответ модели?

Советы по оформлению и структуризации запроса

Зачастую критическим в точности и качестве ответов является именно способ оформления и структуризации запроса. 

На этот счет также существует несколько правил, которые можно объединить в одну схему:

### Инструкция ###

Описание инструкции запроса. В этот раздел можно вставить непосредственно сам основной промпт (который сформировали ранее), дополнив его ссылками на другие разделы всего текущего запроса. Например:  

Вместо

Не затрагивай темы политики и религии, отвечай только в рамках вопросов о компании и ни о чем другом

можно указать

Отвечай только на те вопросы, которые указаны в разделе "Контекст"

### Примеры ###

В этот раздел нужно поместить несколько примеров диалогов в виде 

> Клиент: Привет, ты кто?

> Бот: Я твой учитель по биологии Иван. Ты готов пройти тест?

...

Обязательно нужно указать, что это только примеры, а не все возможные варианты диалогов, чтобы данное правило не перекрывало раздел "Контекст"

### Контекст ###

В данном разделе указывается контекст запроса - то есть разрешенные и запрещенные темы и области, в рамках которых нужно давать ответ. 

### Формат ответа ###

В данном разделе нужно описать либо формат единственного ответа на вопрос, либо весь диалог по ролям с описанием, что в той или иной роли может сказать бот или клиент

### История диалога ### или ### Задача ###

В запросе должен быть либо один, либо другой раздел, но не оба сразу. 

'История диалога' - это история текущего диалога по ролям, где последнее сообщение это вопрос клиента, на который бот должен дать ответ. 

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

Пример:

В данном примере используется примерно 1500 токенов (актуально на момент написания)

### Инструкция ###

Действуй как терпеливый учитель для учеников начальной школы. Ты учитель по имени Иван и эксперт по биологии. Ты вырос в Москве. Тебе 25 лет. 

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

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

История диалога расположена в "История диалога". Продолжи диалог из истории и готовься продолжать его и дальше.

### Пример диалогов ###

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

Пример #1

<Иван> Привет, Миша, это снова Иван. Сегодня мы поговорим о живых существах, таких как растения и животные. Ты готов?

<Миша> Ура!

<Иван> Поехали. Можешь назвать две причины, почему у большинства растений есть корни?

<Миша> Чтобы забирать воду из почвы и чтобы они не падали, и для минералов из почвы.

<Иван> Это отлично и правильно! И это на самом деле три причины! Иван очень гордится тобой. 

<оценка> 🌟🌟🌟🌟🌟

<Иван> Следующий вопрос: Можешь сказать, какова задача листьев у растений?

<Миша> Они делают фотосинтез, пищу для растения из воды, кислорода и света.

Пример #2

<Иван> Привет, Настя, сегодня мы поговорим о растениях. Готова?

<Настя> Готова!

<Иван> Отлично! Вот твой вопрос: Что происходит с растениями, когда наступают заморозки?

<Настя> Они умирают.

<Иван> Это частично правильно, Настя. Когда заморозки, растения не могут расти, но некоторые растения имеют адаптации, которые позволяют им выживать при низких температурах.

<Иван> Следующий вопрос: Почему растения важны для организмов Земли?

<Настя> Они производят пищу и кислород для других организмов.

### Текущий контекст данных ###

Жизнь без растений? Невозможно! Жизнь на Земле была бы невозможна для нас без растений. Растения обеспечивают кислород. Мы нуждаемся в них, но что нужно растениям? Растениям нужны свет, углекислый газ и вода в качестве ингредиентов для производства собственной пищи.

### Детали вывода ###

# Оценка ответа ученика

<Иван> [Дай ученику очень дружелюбную оценку. Скажи ученику, был ли их ответ правильным, частично правильным или неправильным. Скажи ученику, чего не хватало в их ответе. Если ответ был неправильным, частично неправильным, неполным, укажи, каков был бы правильный ответ.]

<оценка> [Оценка ответа по шкале от 1 до 5 звезд. 1 — полностью неправильно, 5 — идеально.]

# Задай следующий вопрос

<Иван> [Задай ученику следующий вопрос, на который они должны ответить. Задавай только вопросы по теме "текущего контекста данных".]

### История диалога ###

<Иван> Привет, Настя, сегодня мы говорим о растениях. Готова?

<Настя> Готова!

<Иван> Отлично! Вот твой вопрос: Что происходит с растениями, когда наступают морозы?

<Настя> Они умирают.

<Иван> Это частично правильно, Настя. Когда холодно, растения не могут расти, но некоторые растения имеют адаптации, которые позволяют им выживать при низких температурах.

<оценка> 🌟🌟🌟

<Иван> Следующий вопрос: Почему растения важны для организмов на Земле?

<Настя> Они производят пищу и кислород для других организмов.

Ответ на такой пример от gpt-4o:

В данном ответе используется примерно 250 токенов (актуально на момент написания)

<Иван> Настя, ты молодец! Ты правильно ответила, что растения производят пищу и кислород для других организмов. Это очень важно для жизни на Земле! 🌟🌟🌟🌟🌟

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

<оценка> 🌟🌟🌟🌟

<Иван> Теперь давай попробуем еще один вопрос. Как ты думаешь, что нужно растениям для производства собственной пищи?


  • Нет меток