AI Prompt Engineering · Урок

Шаблон запроса «заголовок — основная часть — подвал»

Единообразная структура запроса, подходящая для сложных многоэтапных задач

Урок 3 из 413 шагов

«Шаблон запроса «заголовок — основная часть — подвал»» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.

Промпты как документы

Документы большого объёма — отчёты, статьи, электронные письма — используют структуру «Заголовок/Основная часть/Заключительная часть», поскольку по ней легко ориентироваться. Читатели знают, чего ожидать в каждой зоне.

Тот же принцип применим к промптам. Когда промпты становятся длиннее нескольких предложений, структура «Заголовок/Основная часть/Заключительная часть» делает их удобными для беглого просмотра, поддержки и единообразного использования.

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

Раздел заголовка

Заголовок отвечает на два вопроса: Кто Вы? и Какова задача?

Он задаёт идентичность модели (персону или роль) и формулирует основную цель промпта. Всё остальное строится на этой основе.

Хороший заголовок краток — обычно это 2–4 предложения. В нём нет примеров, ограничений или правил формирования результата.

header = '''
<header>
You are an expert technical writer specializing in API documentation.
Your task is to write clear, developer-friendly documentation
for the API endpoint described in the body of this prompt.
</header>
'''

print(header)

Раздел основной части

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

  • Исходные документы для обработки
  • История диалога
  • Структурированные данные (фрагменты JSON, CSV)
  • Справочные материалы
  • Фактические входные данные пользователя

Основная часть — самый большой раздел; чаще всего она динамически добавляется во время выполнения.

def build_body(endpoint_spec):
    return f'''
<body>
<endpoint_specification>
{endpoint_spec}
</endpoint_specification>
</body>
'''

spec = 'POST /api/v2/users\nRequest body: {email: string, role: admin|user}\nReturns: {id: string, created_at: ISO8601}'
print(build_body(spec))

Раздел заключительной части

Заключительная часть содержит инструкции по формату и схему результата. Она располагается последней, потому что:

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

Заключительная часть должна быть явной: Верните объект JSON с этими полями, а не красиво оформите.

footer = '''
<footer>
Format your response as a JSON object with these fields:
{
  "endpoint": "string",
  "summary": "string (one sentence)",
  "parameters": [{"name": "string", "type": "string", "required": true|false, "description": "string"}],
  "response_example": "string (JSON)",
  "error_codes": [{"code": "number", "meaning": "string"}]
}
Do not include any text outside the JSON object.
</footer>
'''

print(footer)

Сборка полного шаблона

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

def build_api_doc_prompt(endpoint_spec):
    header = '<header>\nYou are an expert technical writer. Document the API endpoint in the body.\n</header>'
    body = f'<body>\n<endpoint>\n{endpoint_spec}\n</endpoint>\n</body>'
    footer = '<footer>\nReturn JSON: {"summary": str, "parameters": [...], "response_example": str}\nNo text outside JSON.\n</footer>'
    return '\n\n'.join([header, body, footer])

spec = 'GET /api/products/:id\nReturns product details by ID'
print(build_api_doc_prompt(spec))

Почему такой порядок работает

Порядок «Заголовок/Основная часть/Заключительная часть» отражает способ обработки контекста моделями:

  1. Сначала заголовок — задаёт идентичность и цель, подготавливая модель к дальнейшему содержимому
  2. Затем основная часть — теперь модель обрабатывает содержимое через призму заданной роли и задачи
  3. В конце заключительная часть — инструкции по формату находятся непосредственно перед тем, как модель создаёт ответ, что усиливает их влияние на структуру результата

Размещение инструкций по формату в заголовке (в начале) приводит к тому, что к моменту подготовки ответа модель частично их забывает.

Масштабирование до сложных промптов

Паттерн «Заголовок/Тело/Подвал» естественным образом масштабируется по мере усложнения промптов:

def build_complex_prompt(persona, task, context_docs, constraints, output_schema):
    header = f'<header>\n{persona}\nTask: {task}\n</header>'

    docs = '\n'.join(f'<document id="{i+1}">\n{d}\n</document>' for i, d in enumerate(context_docs))
    body = f'<body>\n{docs}\n</body>'

    constraint_list = '\n'.join(f'- {c}' for c in constraints)
    footer = f'<footer>\n<constraints>\n{constraint_list}\n</constraints>\n<output_schema>\n{output_schema}\n</output_schema>\n</footer>'

    return '\n\n'.join([header, body, footer])

Повторное использование шаблонов подвала

Поскольку подвал задаёт структуру результата, это наиболее пригодная для повторного использования секция. Распространённые шаблоны подвала:

FOOTER_JSON = '<footer>\nReturn a valid JSON object. No text outside JSON. No markdown code fences.\n</footer>'

FOOTER_MARKDOWN = '<footer>\nFormat your response as markdown.\nUse ## for section headers.\nUse bullet points for lists.\nMaximum 500 words.\n</footer>'

FOOTER_STRUCTURED = '<footer>\nRespond using this exact structure:\n1. Summary (1 sentence)\n2. Key Findings (bullet list)\n3. Recommendation (1 paragraph)\n</footer>'

print('Footer templates ready for reuse.')

Внедрение динамического содержимого в тело

Тело — это секция, которую чаще всего формируют динамически во время выполнения. Рекомендации по внедрению динамического содержимого в тело:

  • Всегда оборачивайте внедряемое содержимое в именованные теги XML
  • Очищайте пользовательские данные перед внедрением, чтобы предотвратить атаки с внедрением инструкций в промпт
  • Обрезайте слишком длинные документы и отмечайте обрезание в теле
  • Чётко помечайте каждый внедряемый фрагмент (документ_1, запрос_пользователя, история_чата)
def safe_inject(user_content, max_chars=3000):
    safe = user_content.replace('<', '&lt;').replace('>', '&gt;')
    if len(safe) > max_chars:
        safe = safe[:max_chars] + '... [TRUNCATED]'
    return f'<user_input>\n{safe}\n</user_input>'

raw = 'User provided text here. Could be very long.'
print(safe_inject(raw))

Единообразная структура во всей кодовой базе

Настоящая сила паттерна «Заголовок/Тело/Подвал» проявляется, когда всё приложение последовательно использует одну и ту же структуру. Преимущества:

  • Новые участники команды сразу понимают назначение любого промпта
  • Проверять промпт при проверке кода проще — проверяющие точно знают, где искать
  • Автоматизированное тестирование может проверять каждую секцию независимо
  • Перенос промпта между моделями выполняется просто — меняется только содержимое, а не структура

Распространённые ошибки в структуре «Заголовок/Тело/Подвал»

Ошибки, снижающие эффективность паттерна:

  • Инструкции по формату в заголовке — слишком далеко от формирования ответа; модель частично их игнорирует
  • Описание задачи спрятано в теле — модель может воспринять его как данные для обработки, а не как указание
  • Ограничения распределены между секциями — их сложно проверять, что приводит к противоречиям
  • Отсутствие подвала — по мере усложнения промпта структура результата становится непредсказуемой

Быстрая проверка

Где в паттерне «Заголовок/Тело/Подвал» следует размещать инструкции по формату результата и почему?

Заголовок/Тело/Подвал — основные выводы

Паттерн «Заголовок/Тело/Подвал» привносит дисциплину структурирования документов в разработку промптов:

  • Заголовок: кто Вы и задача — задаёт рамки для всего последующего
  • Тело: содержимое и контекст — внедряются динамически и оборачиваются в смысловые теги XML
  • Подвал: инструкции по формату и схема результата — размещаются последними, чтобы максимально влиять на структуру результата
  • Паттерн естественным образом масштабируется от простых до очень сложных промптов
  • Шаблоны подвала можно повторно использовать в промптах с одинаковым типом результата
  • Единообразие во всей кодовой базе делает промпты удобными для проверки, тестирования и сопровождения
Можно начать бесплатно

Изучай AI Prompt Engineering с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
53
Уроки
199

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

Урок «Шаблон запроса «заголовок — основная часть — подвал»» бесплатный?

Да — полный текст урока «Шаблон запроса «заголовок — основная часть — подвал»» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.

Чему я научусь в уроке «Шаблон запроса «заголовок — основная часть — подвал»»?

Единообразная структура запроса, подходящая для сложных многоэтапных задач Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Prompt Engineering?

Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Шаблон запроса «заголовок — основная часть — подвал»»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Prompt Engineering?

Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Использование XML-тегов в качестве разделителей
  2. Модульные разделы запроса
  3. Шаблон запроса «заголовок — основная часть — подвал»
  4. Лучшие практики организации запросов
← Назад к AI Prompt Engineering