Шаблон запроса «заголовок — основная часть — подвал»
Единообразная структура запроса, подходящая для сложных многоэтапных задач
«Шаблон запроса «заголовок — основная часть — подвал»» — бесплатный урок 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))Почему такой порядок работает
Порядок «Заголовок/Основная часть/Заключительная часть» отражает способ обработки контекста моделями:
- Сначала заголовок — задаёт идентичность и цель, подготавливая модель к дальнейшему содержимому
- Затем основная часть — теперь модель обрабатывает содержимое через призму заданной роли и задачи
- В конце заключительная часть — инструкции по формату находятся непосредственно перед тем, как модель создаёт ответ, что усиливает их влияние на структуру результата
Размещение инструкций по формату в заголовке (в начале) приводит к тому, что к моменту подготовки ответа модель частично их забывает.
Масштабирование до сложных промптов
Паттерн «Заголовок/Тело/Подвал» естественным образом масштабируется по мере усложнения промптов:
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('<', '<').replace('>', '>')
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 — локальная установка не требуется.
Все уроки этого курса
- Использование XML-тегов в качестве разделителей
- Модульные разделы запроса
- Шаблон запроса «заголовок — основная часть — подвал»
- Лучшие практики организации запросов