# Общие рекомендации по разработке промптов

## Начните с простого

***

При разработке промптов стоит помнить, что это итеративный процесс, требующий много экспериментов для достижения оптимальных результатов. Хорошей отправной точкой является использование простого плейграунда от OpenAI или Cohere.

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

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

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

***

Вы можете разрабатывать эффективные промпты для различных простых задач, используя команды для направления модели, такие как "Напиши", "Классифицируй", "Суммируй", "Переведи", "Упорядочь" и так далее.

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

Кроме того, стоит отметить, что некоторые рекомендуют размещать инструкции в начале промпта. Дополнительная рекомендация состоит в использовании четкого разделителя, например "###", чтобы выделить инструкцию и контекст.

Например:

*Промпт:*

{% hint style="info" %}
\###Инструкция###\
Переведи указанный ниже текст на испанский язык: \
Текст: "привет!"
{% endhint %}

*Результат:*

{% hint style="success" %}
¡Hola!
{% endhint %}

## Детализация

***

Когда разрабатываете промпт, важно быть максимально детализированными относительно инструкции и задачи, которую вы хотите, чтобы модель выполнила. Чем подробнее и детальнее будет промпт, тем лучше результаты. Это особенно актуально, если у вас есть определенный желаемый результат или стиль генерации. Не существует определенных слов или ключевых фраз, которые обязательно приведут к наилучшим результатам. Важнее иметь хороший формат и содержательный промпт. Фактически, предоставление примеров в промпте оказывается очень эффективным методом для достижения желаемых результатов в определенных форматах.

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

В качестве примера рассмотрим простой промпт для извлечения определенной информации из текста.

*Промпт:*

{% hint style="info" %}
Извлеките названия мест из следующего текста. \
Желаемый формат:\
Место: <список\_названий\_мест\_через\_запятую> \
Исходный текст: \
"Хотя эти разработки вдохновляют исследователей, многое остается загадкой. «Мы часто имеем черный ящик между мозгом и эффектом, который мы видим на периферии», говорит Генрик Вейга-Фернандеш, нейроиммунолог из Центра Шампалимауд для Неизведанного в Лиссабоне. «Если мы хотим использовать это в терапевтическом контексте, нам действительно нужно понять механизм».
{% endhint %}

*Результат:*

{% hint style="success" %}
Место: Центр Шампалимауд для Неизведанного, Лиссабон
{% endhint %}

Исходный текст взят из [этой статьи Nature](https://www.nature.com/articles/d41586-023-00509-z).

## Избегайте неточностей

***

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

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

{% hint style="info" %}
Объясни концепцию промпт-нжиниринга. Предоставь краткое объяснение, всего несколько предложений, и не углубляйтесь в подробности.
{% endhint %}

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

{% hint style="info" %}
С помощью 2-3 предложений объясни старшекласснику концепцию промпт-инжиниринга
{% endhint %}

## Делать или не делать?

***

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

Давайте рассмотрим пример ***неудачного чат-бота*** для рекомендации фильмов, который возник из-за того, что я сфокусировался на том, что не следует делать, при формулировании инструкции.

*Промпт:*

{% hint style="warning" %}
Ниже приведен пример работы чат-бота, который предоставляет рекомендации по фильмам клиентам. ПРОСЬБА НЕ ЗАПРАШИВАТЬ ИНТЕРЕСЫ. НЕ ЗАПРАШИВАТЬ ЛИЧНУЮ ИНФОРМАЦИЮ. \
Клиент: Пожалуйста, порекомендуйте фильм на основе моих интересов. \
Чат-бот:
{% endhint %}

*Результат:*

{% hint style="danger" %}
Конечно, я могу порекомендовать вам фильм на основе ваших интересов. Какой жанр фильма вы предпочитаете? Вам больше нравятся боевики, комедии, романтические фильмы или что-то другое?
{% endhint %}

Вот лучший промпт:

*Промпт:*

{% hint style="info" %}
Ниже представлен пример работы чат-бота, который рекомендует фильмы клиенту. Чат-бот отвечает за предоставление рекомендации из топовых мировых трендов. Чат-бот избегает запросов о предпочтениях пользователя и не просит предоставлять личную информацию. Если чат-бот не может порекомендовать фильм, он должен ответить: "Извините, сегодня не удалось найти подходящий фильм для рекомендации." \
Клиент: Пожалуйста, порекомендуйте фильм на основе моих интересов. \
Чат-бот:
{% endhint %}

*Результат:*

{% hint style="success" %}
Извините, у меня нет информации о ваших интересах. Однако вот список фильмов, которые в данный момент пользуются большой популярностью во всем мире: \[список фильмов]. Надеюсь, вы найдете что-то по своему вкусу!
{% endhint %}

Некоторые из приведенных примеров были взяты из статьи ["Best practices for prompt engineering with OpenAI API"](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api).
