# Общий промптинг

# Общие принципы

**Книги**

[Список книг](https://www.analyticsvidhya.com/blog/2024/04/top-best-prompt-engineering-books/)

**Обратная связь.**

Необходимо определить:

- Что понравилось в ответе
- Что не понравилось
- Что хотелось бы увидеть дополнительно

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

**Вариации**

При неуверенности что конкретно изменить, нужно попросить несколько вариаций.

```
Можешь предложить мне 3 варианта этого?
```

```
Этот вариант не очень броский. Можете ли вы создать пять вариантов, которые будут
более привлекательными, но при этом не будут слишком навороченными?
```

**Уточнение**

Ответ может быть неверным или отходящим от темы. Можно попросить уточнения связи с вопросом.

```
Можешь объяснить как приведенный пример связан с изначальным вопросом?
```

**Сохранение стабильности при изменениях**

При корректировке ответа, необходимо определить что точно нужно изменить. Иначе ИИ может изменить и другие аспекты.

```
Это было здорово! Попробуй сделать первое предложение немного более непринужденным,
но остальное оставь в том же духе.
```

```
Можете ли вы улучшить доступность языка этого текста? 
Следите за тем, чтобы не изменять содержание или структуру абзацев.
```

**Объяснение ответа.**

```
Спасибо, что написали этот фрагмент HTML-кода. Можете ли вы добавить к нему подробные
комментарии, которые понял бы даже 5-летний ребенок?
```

```
Спасибо, что переписали мою статью. Не могли бы вы добавить в скобках несколько
комментариев, объясняющих, почему вы внесли эти изменения?
```

**Корректировка длины ответа**

```
Это здорово, но не могли бы вы изложить это более кратко?
```

```
Можете ли вы развить эту идею дальше, используя яркий язык и аналогии?
```

# Определение роли

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

Роли можно определить по известным персонажам (имя персонажа, место работы) или настроить параметры роли вручную.

[Набор промптов](https://prompts.chat/)

```
Выступайте в роли менеджера по найму на собеседовании с кандидатом. Вас зовут Наталья.
```

Можно детализировать задачу

```
Можете ли вы задавать мне вопросы, чтобы понять, подхожу ли я на эту [Название должности] должность? 
Когда я отвечу, дайте мне обратную связь по поводу моего ответа. 
Задавайте по одному вопросу за раз. Вот описание работы: [Описание работы]. 
Кроме того, вот мое резюме: [CV].
```

Для персонализации можно также добавить описание должности, Еще пример:

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

**Примеры распространенных ролей по названиям:**

- Образовательные / Профессиональные роли:
    
    
    - Учитель / Репетитор — объясняет темы доступно, задаёт вопросы, проверяет знания.
    - Программист / Ментор по коду — помогает писать, разбирать и отлаживать код.
    - Юрист — объясняет законы, помогает составлять документы.
    - Психолог (не лицензированный) — помогает разобраться с чувствами, поддерживает.
    - Бизнес-консультант — анализирует идеи, помогает с маркетингом, стратегией.
    - Научный исследователь — помогает с литературным обзором, гипотезами, экспериментами.
    - Редактор / Писатель — помогает редактировать тексты, писать статьи, книги, сценарии.
- Творческие / Развлекательные роли:
    
    
    - Писатель-фантаст / Сказочник — создаёт фантастические миры, истории.
    - Игровой мастер (Dungeon Master) — ведёт текстовую ролевую игру (D&amp;D и другие).
    - Актёр / Персонаж из фильма / книги — может "играть" любого вымышленного героя.
    - Поэт / Лирик / Песенник — пишет стихи, песни в разных стилях.
- Специализированные стили взаимодействия:
    
    
    - Сократовский наставник — задаёт наводящие вопросы, не даёт готовых ответов.
    - Коуч — мотивирует, помогает ставить цели и искать решения.
    - Молчаливый помощник — отвечает только коротко, без лишних пояснений.
    - Дружелюбный собеседник — ведёт непринуждённый разговор.
- Языковые роли:
    
    
    - Переводчик — переводит текст, объясняет смысл, сравнивает варианты.
    - Преподаватель языка — помогает учить язык, даёт упражнения, проверяет ошибки.
    - Разговорный партнёр — практикует диалог на иностранном языке.

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

<table border="1" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%92%D0%B0%D1%80%D0%B8%D0%B0%D1%86%D0%B8%D0%B8-%D0%9E%D0%B1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22.409%;"></col><col style="width: 77.591%;"></col></colgroup><thead><tr><td class="align-center">Параметр</td><td class="align-center">Вариации</td></tr></thead><tbody><tr><td>Объём и формат ответа</td><td>**Длина ответа:** краткий / средний / развёрнутый / исчерпывающий

**Формат:** список / абзацы / таблица / код / диалог / Markdown / JSON / YAML и т.д.

**Стиль изложения:** формальный / неформальный / научный / разговорный / литературный / юмористический

</td></tr><tr><td>Корректировка и интерактивность</td><td>**Нужна ли обратная связь:** спрашивать, всё ли понятно, нужно ли продолжить, менять стиль

**Следует ли уточнять запрос:** переспрашивать при неясности или сразу делать предположение

**Исправлять ли ошибки собеседника:** Да / Нет / Только по запросу

</td></tr><tr><td>Глубина и способ мышления</td><td>Поверхностный обзор / Глубокий анализ / Формирование гипотез

**Цепочка рассуждений:** пошаговое объяснение логики

**Сократовский стиль:** через вопросы, без прямых ответов

**Эвристический подход:** давать наводящие идеи, а не готовые решения

</td></tr><tr><td>Тон и эмоциональный стиль</td><td>Дружелюбный, нейтральный, строгий, ободряющий, саркастичный, вдохновляющий, эмпатичный, “как стартапер” / “как профессор” / “как гик” и т. д.

</td></tr><tr><td>Язык и терминология</td><td>использовать профессиональные термины / избегать жаргона

объяснять термины / не объяснять очевидное

переводить или адаптировать под уровень пользователя

</td></tr><tr><td>Поведенческие особенности</td><td>**Инициативность:** предлагать темы, идеи, уточнения без запроса

**Настойчивость:** повторять важное, если оно игнорируется

**Гибкость:** быстро менять стиль / тему по ходу диалога

**Склонность к юмору:** использовать или избегать шуток, метафор

</td></tr><tr><td>Контекст и стиль памяти</td><td>помнить предыдущие ответы в рамках сессии (или нет)

ссылаться на прошлые выводы / строить цепочку рассуждений на истории диалога

запоминать стиль общения (если включена память)

</td></tr></tbody></table>

Пример настройки роли:

```
Роль: Строгий преподаватель логики
Стиль: Формальный, точный, без воды
Объём: Краткий, но аргументированный
Поведение: Исправляет ошибки, не льстит, требует точности
Интерактивность: Проверяет понимание после объяснения
```

# Личный стиль и длинные ответы.

**Личный стиль**

Использование данных модели называется "zero shot" промптинг. "One shot" - предоставление одного варианта и просьба написать в таком же стиле. "Multiple shot" - несколько вариантов.

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

```
Я собираюсь научить вас стилю Linkedin в профиле. Я дам вам профиль, а вы
запомните его, проанализируете стиль и сформулируете в уме, что
такое стиль Linkedin в профиле. Отвечайте только "понял" каждый раз, когда я оставляю вам анкету.
```

Естественно, необходимо предоставить достаточно материала для корректной работы. Затем пишем запрос типа

```
Теперь, когда вы понимаете стиль профилей, создайте новый профиль для Гарри Поттера.
```

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

```
Напишите рекламное электронное письмо о предстоящем фестивале под названием 
"Вечеринка на вечеринке". Используйте мой стиль письма, имитируйте мой голос. 

Напишите новостную статью о текущем климатическом кризисе. Используйте мой
стиль письма, имитируйте мой голос. Добавьте в скобках несколько
пояснений, почему у меня такой стиль письма.

Напишите стихотворение о двух кошках, которые постоянно играют и дерутся.  Используйте мой
стиль письма и убедитесь, что он рифмуется.
```

**Длинные ответы**

Точного ограничения нет. Нужно учесть, что 10+ страниц это уже много. Необходимо делить задачу. Пример стратегии деления больших задач:

- Получение общего списка блоков для задачи
- Корректировка (объединение или разбиение блоков)
- Получение подблоков по каждому из блоков, корректировка подблоков. И т д.

# Примеры запросов

У ChatGPT есть наборы примеров промптов для разных задач. [Ссылка на примеры](https://platform.openai.com/docs/examples) (через VPN). Но в связи с большим количеством практических примеров, поиск запросов для конкретной задачи становится сложным (парадокс).

**Роль генератора идей.**

Запрос начального уровня:

```
Перечислите 5 идей для нового подхода к устойчивому туризму, в котором участвуют ламы.
```

Интересно для поиграться. Но при практическом подходе впоследствии требуется сохранить идеи в каком-то формате (например, excel таблица), оценить идею по ряду параметров, сопоставить с собственными возможностями. Пример следующего шага для улучшения промпта:

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

Еще интересный подход для генерации нестандартных идей - просьба сгенерировать идеи, которые не будут работать. Например:

```
Давайте обсудим несколько идей для нового подхода к устойчивому туризму, в котором
участвуют ламы. Перечислите 5 идей, которые не сработают. Расставьте приоритеты в отношении безумных и
причудливых идей.
```

**Итоги и суммаризация.**

Первый уровень:

```
Кратко изложите суть этой статьи в одном абзаце.
```

Далее для больших текстов:

```
Выступайте в качестве моего составителя резюме. Я дам вам дополнительные указания в "", а вы обобщите их в
виде списка ключевых моментов и набора ключевых цитат. Вы можете сделать это для меня?
```

**Формирование списков**

Обычно ограничение в 30 элементов, но меняется от модели к модели. Обычно добавляются комментарии.

```
Составьте подробный список из 5 диснеевских персонажей мужского пола. 
В каждой строке укажите только имя персонажа. 
Никогда не указывайте название фильма для каждого диснеевского персонажа. 
Верните только диснеевских персонажей, не добавляйте никаких комментариев. 
Ниже приведен примерный список: * Аладдин * Симба * Чудовище * Геркулес * Тарзан
```

Иерархический список:

```
Создайте иерархический и очень подробный план статьи на тему: "В чем преимущества Data Science". 
Пример иерархической структуры: 
Название статьи: "В чем преимущества цифрового маркетинга?" 
* Введение 
а. Объяснение цифрового маркетинга 
б. Важность цифрового маркетинга в современном деловом мире 
* Повышение узнаваемости бренда 
a. Определение понятия "узнаваемость бренда" 
б. Как цифровой маркетинг помогает повысить узнаваемость бренда
```

**Помощь в написании текста**

```
Можете ли вы улучшить это для меня, сохранив доступность языка?: "   "
```

```
Я пишу абзац о том, как я использую chatGPT, чтобы помочь нам написать
абзац, когда я застреваю. Иногда у меня появляется идея, но я не могу найти правильный
способ ее высказать. В этом абзаце я хочу, чтобы читатель понял, что он может просто
ввести текст в chatGPT таким образом и ожидать, что результат может
оказаться полезным. 
Убедитесь, что вы используете доступный язык.
```

```
Можете ли вы написать абзац о том, как просьба chatGPT написать абзац для вас
может помочь вам генерировать ваши собственные творческие идеи?
```

**Помощь в поиске ссылок на документы**

```
Я пишу статью об охране окружающей среды на свободном рынке. Я хочу сосредоточиться на моральном
подходе и противопоставить его утилитарной перспективе. Можете ли вы порекомендовать список
научных книг, которые могли бы мне помочь?
```

```
Можете ли вы кратко изложить "Этику экологических добродетелей" Юджина Харгроува? Сосредоточьтесь на
том, как это соотносится с моей темой. Используйте 4 пункта в качестве ключевых и запишите 3 
ключевые цитаты с номерами страниц.
```

```
Можете ли вы составить список литературы на основе этого текста?
```

**Написание почтовых сообщений**

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

**Предложение рецептов в соответствии с наличием продуктов**

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