Menu

Как написать промпт для ИИ: 6 частей и примеры

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

Каждый промпт на этой странице можно изменить и открыть в ChatGPT, Claude или другом ИИ-приложении.

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

Большинство полезных промптов собираются из одних и тех же шести частей. В блоке ниже есть все шесть. Отключайте части, чтобы увидеть промпт без них, подставьте свой язык программирования, а потом откройте результат в ChatGPT или Claude и сравните.

Объяснить сообщение об ошибке
Fill in
Parts
Ты терпеливый преподаватель программирования для тех, кто учится первый месяц.
Объясни, что означает эта ошибка Python и как её исправить.
Я прохожу курс для начинающих. Я знаю переменные, строки, списки и циклы for. Классы и исключения я ещё не проходил.
Мой код:age = 30 print("Age: " + age)Ошибка:TypeError: can only concatenate str (not "int") to str
Ответь в трёх коротких частях с жирными подзаголовками: что означает ошибка, почему её вызвал мой код и исправленный код.
Используй простые слова и никаких понятий, которые я ещё не проходил. Весь ответ: не больше 120 слов.
Try it
Example replyReplies vary between models and runs.

Что это значит: + умеет склеивать две строки или складывать два числа, но не может склеить строку с числом. Python не угадывает, что вы имели в виду, поэтому останавливается.

Почему это вызвал ваш код: "Age: " это строка, а в age лежит число 30. Строка кода просит Python склеить их через +.

Исправленный код: сначала превратите число в текст с помощью str():

age = 30
print("Age: " + str(age))

Этот код выведет Age: 30.

Шесть частей

Роль говорит модели, чьим голосом и чьими суждениями пользоваться. «Терпеливый преподаватель для новичков» и «старший инженер, который проверяет продакшен-код» дадут на один и тот же вопрос очень разные ответы. Роль полезнее всего, когда за ней стоят аудитория и уровень требований; где она помогает, а где нет, разобрано на странице ролевой промптинг.

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

Контекст: всё, что модель не может угадать. Кто вы, что вы уже знаете, для чего нужен результат и что вы уже пробовали. В примере строка «Классы и исключения я ещё не проходил» не даёт модели ответить через try и except.

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

Формат говорит, как должен выглядеть ответ: список, таблица, три части с подзаголовками, JSON, одна строка. Без него модель выберет форму сама, а чат-модели склонны выбирать длинную. Если ответ должна читать программа, смотрите страницу структурированный вывод.

Ограничения: это рамки. Длина, словарь, чего избегать, что должно остаться без изменений. Число («не больше 120 слов») работает лучше прилагательного («коротко»), потому что «коротко» разные читатели понимают по-разному, и модель одна из них.

Расплывчато против конкретно

Вот один и тот же запрос, написанный двумя способами. Переключайте вкладки и сравнивайте ответы.

Напиши функцию, которая сортирует список.
Try it
Example replyReplies vary between models and runs.

Вот простая функция сортировки на Python:

def sort_list(items):
    return sorted(items)

Её можно вызвать так: sort_list([3, 1, 2]), и она вернёт [1, 2, 3].

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

Привычки, которые улучшают промпты

  • Называйте задачу в начале и ещё раз после длинного материала. В коротком промпте начинайте с задачи, чтобы следующий за ней фон читался с понятной целью. Когда вставляете длинный документ, ставьте его первым, а вопрос в конце и повторите там ключевые ограничения, чтобы инструкция стояла рядом с тем местом, где модель начинает писать.
  • Говорите, что делать, а не только чего избегать. «Пиши простым языком для 12-летнего» даёт модели цель. «Не слишком технически» исключает лишь одно направление и оставляет остальные открытыми.
  • Отделяйте инструкции от материала. Когда вставляете письмо или файл, отметьте, где он начинается и заканчивается, чтобы модель не приняла фразу внутри за инструкцию. Варианты описаны на странице разделители и XML-теги.
  • Покажите один пример результата, если формат необычный. Пример показывает форму быстрее, чем абзац её описывает. Это few-shot промптинг.
  • Дорабатывайте промпт, а не переписку. Если первый ответ неверен, найдите недостающий контекст или ограничение, исправьте промпт и запустите снова. Длинная цепочка поправок тоже работает, но в итоге у вас есть результат и нет промпта, который можно использовать повторно.

Чек-лист перед отправкой

  1. Могу ли я сформулировать задачу одним предложением, которое начинается с глагола?
  2. Поймёт ли посторонний человек, для кого ответ и что я уже знаю?
  3. Вставил ли я настоящий материал, а не его описание?
  4. Сказал ли я, какой длины должен быть ответ и какую форму принять?
  5. Есть ли что-то, что ответ не должен менять или использовать?

Пять ответов «да» не гарантируют идеальный ответ, но «нет» чаще всего и оказывается причиной плохого.

Часто задаваемые вопросы

Что делает промпт для ИИ хорошим?

Хороший промпт формулирует задачу одним ясным предложением, даёт контекст, который модель не угадает (кто вы, что вы уже знаете, для чего нужен результат), содержит материал для работы и говорит, как должен выглядеть ответ: длина, структура и тон. Большинство слабых промптов проваливаются на контексте и формате, а не на формулировках.

Какой длины должен быть промпт?

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

Нужно ли быть вежливым с ChatGPT или Claude?

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

Есть ли шаблон для написания промптов?

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

Почему один и тот же промпт каждый раз даёт разные ответы?

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

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ