mirror of
https://github.com/dair-ai/Prompt-Engineering-Guide
synced 2024-11-02 15:40:13 +00:00
114 lines
5.8 KiB
Plaintext
114 lines
5.8 KiB
Plaintext
|
# Основы промптинга
|
|||
|
|
|||
|
## Основные промпты
|
|||
|
|
|||
|
Вы можете достичь многого с помощью простых промптов, но качество результатов зависит от того, сколько информации вы предоставляете и насколько хорошо он составлен. Промпт может содержать информацию, такую как *инструкция* или *вопрос*, который вы передаете модели, и включать другие детали, такие как *контекст*, *входные данные* или *примеры*. Вы можете использовать эти элементы, чтобы лучше указать модели, что от нее требуется, и в результате получить лучшие результаты.
|
|||
|
|
|||
|
Давайте начнем с примера простого промпта:
|
|||
|
|
|||
|
*Промпт*
|
|||
|
```
|
|||
|
The sky is
|
|||
|
```
|
|||
|
|
|||
|
*Результат:*
|
|||
|
```
|
|||
|
blue
|
|||
|
|
|||
|
The sky is blue on a clear day. On a cloudy day, the sky may be gray or white.
|
|||
|
```
|
|||
|
|
|||
|
Как видите, языковая модель выводит продолжение строк, которое имеет смысл в контексте `"The sky is"`. Результат может быть неожиданным или далеким от задачи, которую вы хотите выполнить.
|
|||
|
|
|||
|
Этот простой пример также подчеркивает необходимость предоставления большего контекста или инструкций о том, что именно вы хотите достичь.
|
|||
|
|
|||
|
Давайте попробуем немного улучшить его:
|
|||
|
|
|||
|
*Промпт:*
|
|||
|
```
|
|||
|
Complete the sentence:
|
|||
|
|
|||
|
The sky is
|
|||
|
```
|
|||
|
|
|||
|
*Результат:*
|
|||
|
|
|||
|
```
|
|||
|
so beautiful today.
|
|||
|
```
|
|||
|
|
|||
|
Уже лучше, не так ли? Вы сказали модели завершить предложение, поэтому результат выглядит гораздо лучше, так как он точно следует вашей инструкции ("Complete the sentence"). Такой подход к проектированию оптимальных промптов для указания модели выполнения задачи называется **промпт инжинирингом**.
|
|||
|
|
|||
|
Приведенный выше пример - это базовая иллюстрация того, что сегодня возможно с помощью LLM (Large Language Models). Современные LLM могут выполнять самые разные задачи, начиная от суммирования текста и математического рассуждения, и заканчивая генерацией кода.
|
|||
|
|
|||
|
## Форматирование промптов
|
|||
|
|
|||
|
Вы попробовали очень простой промпт выше. Стандартный формат промпта имеет следующую структуру:
|
|||
|
|
|||
|
```
|
|||
|
<Question>?
|
|||
|
```
|
|||
|
|
|||
|
или
|
|||
|
|
|||
|
```
|
|||
|
<Instruction>
|
|||
|
```
|
|||
|
|
|||
|
Вы можете отформатировать его в формат вопроса и ответа (QA), который является стандартным для многих наборов данных QA, следующим образом:
|
|||
|
|
|||
|
```
|
|||
|
Q: <Question>?
|
|||
|
A:
|
|||
|
```
|
|||
|
|
|||
|
При применении такого форматирования промпта это также называется *промптингом без примеров* (zero-shot prompting), то есть вы напрямую запрашиваете ответ у модели без предоставления каких-либо примеров или демонстраций задачи, которую вы хотите выполнить. Некоторые большие языковые модели имеют возможность выполнять промптинг без примеров, но это зависит от сложности и знания задачи.
|
|||
|
|
|||
|
Учитывая стандартный формат выше, одна популярная и эффективная техника промптинга называется *промптинг с несколькими примерами* (few-shot prompting), где вы предоставляете примеры (т.е. демонстрации). Вы можете отформатировать промпты с несколькими примерами следующим образом:
|
|||
|
|
|||
|
```
|
|||
|
<Question>?
|
|||
|
<Answer>
|
|||
|
|
|||
|
<Question>?
|
|||
|
<Answer>
|
|||
|
|
|||
|
<Question>?
|
|||
|
<Answer>
|
|||
|
|
|||
|
<Question>?
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
В версии в формате вопроса и ответа (QA) это будет выглядеть так:
|
|||
|
|
|||
|
```
|
|||
|
Q: <Question>?
|
|||
|
A: <Answer>
|
|||
|
|
|||
|
Q: <Question>?
|
|||
|
A: <Answer>
|
|||
|
|
|||
|
Q: <Question>?
|
|||
|
A: <Answer>
|
|||
|
|
|||
|
Q: <Question>?
|
|||
|
A:
|
|||
|
```
|
|||
|
|
|||
|
Имейте в виду, что использование формата вопроса и ответа (QA) не является обязательным. Формат промпта зависит от задачи. Например, вы можете выполнить простую задачу классификации и дать образцы, демонстрирующие задачу, следующим образом:
|
|||
|
|
|||
|
*Промпт:*
|
|||
|
```
|
|||
|
This is awesome! // Positive
|
|||
|
This is bad! // Negative
|
|||
|
Wow that movie was rad! // Positive
|
|||
|
What a horrible show! //
|
|||
|
```
|
|||
|
|
|||
|
*Результат:*
|
|||
|
```
|
|||
|
Negative
|
|||
|
```
|
|||
|
|
|||
|
Промпты с несколькими примерами позволяют учиться в контексте, что означает, что языковые модели могут обучаться задачам на основе нескольких демонстраций.
|