Menu

Шаблоны промптов: примеры и как сделать свой

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

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

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

Шаблон ниже объясняет любую тему программирования на вашем уровне. Впишите свои значения в поля, отключите часть, чтобы увидеть, что она даёт, а потом скопируйте шаблон или откройте его в чат-приложении.

Объясни тему на моём уровне
Fill in
Parts
Ты терпеливый репетитор для программистов-самоучек.
Объясни, что такое замыкания в JavaScript.
Я уже знаю переменные, функции и массивы. Лучше всего я учусь на небольшом примере, который могу запустить сам.
Ответь в трёх частях с жирными подзаголовками: идея в одном предложении, короткий пример кода с комментарием к ключевой строке и одна частая ошибка.
Уложись в 150 слов. Если нужен термин, которого нет в списке того, что я знаю, объясни его в нескольких словах.
Try it
Example replyReplies vary between models and runs.

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

Пример:

function makeCounter() {
  let count = 0;
  return function () {
    count += 1; // still sees count from makeCounter
    return count;
  };
}

const next = makeCounter();
console.log(next()); // 1
console.log(next()); // 2

Частая ошибка: ожидать, что два счётчика делят один общий итог. Каждый вызов makeCounter() создаёт новую count, поэтому у каждого счётчика своё значение.

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

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

Оставляйте пропуском только то, что меняется. Если ответ всегда нужен короче 150 слов, впишите 150 в постоянный текст. Каждый пропуск: это решение, которое придётся принимать заново при каждом использовании, а шаблон с десятью пропусками заполнять дольше, чем написать промпт с нуля.

Давайте каждому пропуску понятное имя и разумное значение по умолчанию. {{знаю}} подсказывает, что вписать; {{x}} нет. Значение по умолчанию показывает, какого рода значение ожидается, и позволяет один раз запустить шаблон, ничего не печатая.

Один шаблон на одну работу. Шаблон, который в зависимости от пропуска объясняет темы, проверяет код и пишет вопросы для теста, делает все три дела хуже, чем три отдельных шаблона. Чем конкретнее постоянный текст, тем больше он может сказать о формате и планке.

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

Примеры шаблонов промптов

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

Пересказ для конкретного читателя
Fill in
Перескажи текст внутри тегов <text> для руководителя, у которого есть две минуты. Используй не больше 3 пунктов списка. Начни с решения или действия, которое должен принять или сделать читатель, и опусти фон, который ему не нужен. <text> Вставьте текст сюда </text>
Try it
Написать небольшую функцию
Fill in
Напиши на Python функцию, которая принимает список чисел и возвращает медиану. Используй аннотации типов, если в языке они есть. Если вход пустой, выбрасывай ValueError. После функции добавь три примера вызова с ожидаемыми результатами в комментариях. Верни только код.
Try it
Example replyReplies vary between models and runs.
def median(numbers: list[float]) -> float:
    if not numbers:
        raise ValueError("median() needs at least one number")
    ordered = sorted(numbers)
    middle = len(ordered) // 2
    if len(ordered) % 2 == 1:
        return ordered[middle]
    return (ordered[middle - 1] + ordered[middle]) / 2


# median([3, 1, 2])     returns 2
# median([4, 1, 3, 2])  returns 2.5
# median([])            raises ValueError
Ответить на сообщение
Fill in
Напиши ответ на сообщение внутри тегов <message>. Цель: вежливо отказаться и предложить вместо этого дату в следующем месяце. Тон: дружелюбный и краткий. Уложись в 80 слов и не добавляй фактов, которых нет в сообщении или в цели. <message> Привет! Сможешь выступить с коротким докладом о своём проекте на нашем митапе 14-го? </message>
Try it
Example replyReplies vary between models and runs.

Привет! Спасибо за приглашение, мне приятно, что вы обо мне вспомнили. К сожалению, 14-го я не смогу. Может, подойдёт какая-нибудь дата в следующем месяце? Тогда я с удовольствием расскажу о проекте.

Всего доброго, [ваше имя]

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

Как сделать свой шаблон

  1. Начните с промпта, который сработал. Возьмите диалог, в котором ответ получился правильным, и соберите итоговую версию промпта, включая поправки, которые пришлось добавить в следующих сообщениях. Эти поправки: самая ценная часть, потому что они исправляют то, в чём ошиблась первая версия.
  2. Отметьте, что изменится в следующий раз. Прочитайте промпт и подчеркните каждое слово, которое вы поменяли бы при следующем использовании. Обычно это две-четыре вещи: тема, аудитория, длина, вставленные входные данные.
  3. Замените каждое именованным пропуском. Пишите пропуск так, как ожидает ваш инструмент, например [аудитория] для промпта, который вставляете вручную, или {audience} для кода.
  4. Проверьте на трёх разных заполнениях. Возьмите один типичный случай, один очень короткий или очень длинный вход и один необычный случай. Если один из них не срабатывает, постоянный текст всё ещё что-то предполагает о первом использовании. Меняйте по одному предложению за раз, как описано на странице доработка промптов.
  5. Сохраните туда, где найдёте. Подойдёт файл с заметками, программа для подстановки текста или менеджер сниппетов. Шаблон, который приходится искать, скоро перестанут использовать.

Шаблоны в коде

В программе шаблон: это строка с именованными полями. В Python их заполняет str.format():

SUMMARY_TEMPLATE = """Summarize the text inside the <text> tags for {audience}.
Use at most {bullets} bullet points and lead with any action the reader must take.

<text>
{text}
</text>"""

with open("notes.txt", encoding="utf-8") as f:
    meeting_notes = f.read()

prompt = SUMMARY_TEMPLATE.format(
    audience="a manager who has two minutes",
    bullets=3,
    text=meeting_notes,
)

Со str.format() каждую буквальную фигурную скобку в шаблоне нужно удваивать ({{ и }}), и это важно, когда в шаблоне есть пример JSON. Скобки внутри значений, которые вы подставляете, например код в meeting_notes, экранировать не нужно. В некоторых библиотеках для создания ИИ-приложений есть свои классы шаблонов, но они делают ту же работу, что и строка форматирования, с дополнительными возможностями вокруг.

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

Шаблон или системный промпт

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

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

Что такое шаблон промпта?

Шаблон промпта: это промпт для многократного использования с заполнителями, например [тема] или {language}, на месте частей, которые меняются от раза к разу. В постоянном тексте лежат уже проверенные инструкции; каждый раз вы заполняете пропуски, а не пишете промпт с нуля.

Как сделать свой шаблон промпта?

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

Где хранить шаблоны промптов?

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

Как использовать шаблон промпта в Python?

Храните шаблон как строку с именованными полями и заполняйте её через str.format() или f-строку. Со str.format() каждую буквальную фигурную скобку в шаблоне пишите дважды ({{ и }}), например когда в шаблоне есть пример JSON. Текст от пользователя кладите внутрь разделителей, чтобы он оставался отдельно от инструкций.

Coddy programming languages illustration

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

НАЧАТЬ