AI Prompt Engineering · Урок

Модульные разделы запроса

Чётко разделяйте контекст, инструкции, ограничения и формат вывода

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

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

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

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

  • Модели применяют правила не к тем разделам
  • Сложно определить, какая часть вызвала плохой результат
  • Строки промптов, которые невозможно поддерживать
  • Непоследовательное поведение в разных версиях модели

Модульные промпты решают все эти проблемы.

Пять основных разделов промпта

Хорошо структурированный промпт состоит из пяти отдельных разделов, каждый из которых имеет чёткое назначение:

  • Контекст — справочная информация, необходимая модели для понимания ситуации
  • Задача — что именно должна сделать модель, сформулированное ясно
  • Ограничения — правила и пределы, которым должен соответствовать ответ
  • Формат результата — структура, объём и схема ожидаемого ответа
  • Примеры — демонстрации правильного поведения

Не каждому промпту нужны все пять. Используйте только необходимые разделы.

Раздел контекста

Раздел контекста содержит справочную информацию и не указывает модели, что делать. Хороший контекст включает:

  • Кто конечный пользователь
  • Для какой платформы или продукта это предназначено
  • Релевантные знания предметной области
  • Предыдущее состояние, о котором модели следует знать
context_section = '''
<context>
You are assisting a customer support agent at a B2B SaaS company.
The company sells project management software used by engineering teams.
Customers are typically CTOs, engineering managers, or senior developers.
The support agent is handling a live chat conversation with a customer.
</context>
'''

print(context_section)

Раздел задачи

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

task_section = '''
<task>
Draft a response to the customer message below.
The response should:
1. Acknowledge the customer's issue
2. Provide a concrete next step
3. Set a realistic expectation for resolution time
</task>

<customer_message>
Our Gantt chart view stopped loading after the last update.
This is blocking our sprint planning session today.
</customer_message>
'''

print(task_section)

Раздел ограничений

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

constraints_section = '''
<constraints>
- Do not promise a fix by a specific date unless you are certain.
- Do not mention competitor products by name.
- Keep the response under 100 words.
- Use a professional but empathetic tone.
- Do not ask the customer for information already provided in their message.
</constraints>
'''

print(constraints_section)

Раздел формата результата

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

output_format_section = '''
<output_format>
Respond with a JSON object containing:
{
  "subject": "string (email subject line)",
  "body": "string (email body, plain text, under 150 words)",
  "priority": "high | medium | low",
  "escalate": true | false
}
Do not include any text outside the JSON object.
</output_format>
'''

print(output_format_section)

Раздел примеров

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

examples_section = '''
<examples>
  <example>
    <input>Customer: My invoices are not downloading.</input>
    <output>{
      "subject": "Invoice Download Issue",
      "body": "Thank you for reaching out. We see the issue with invoice downloads and our team is investigating. We expect a fix within 2 hours. We will email you once resolved.",
      "priority": "high",
      "escalate": true
    }</output>
  </example>
</examples>
'''

print(examples_section)

Сборка модульного промпта

Модульный подход упрощает сборку и редактирование. Каждый раздел можно изменять независимо.

def build_support_prompt(customer_message):
    context = '<context>B2B SaaS customer support for project management software.</context>'
    task = f'<task>Draft a JSON response to this customer message.</task>\n<customer_message>{customer_message}</customer_message>'
    constraints = '<constraints>Under 100 words. Professional tone. No competitor names.</constraints>'
    output_fmt = '<output_format>Return JSON: {"subject": str, "body": str, "priority": str, "escalate": bool}</output_format>'
    return '\n\n'.join([context, task, constraints, output_fmt])

message = 'The Gantt chart stopped loading after your last update.'
print(build_support_prompt(message))

Преимущества при отладке

Когда модульный промпт даёт плохой результат, можно изолировать проблемный раздел:

  • Выполнена не та задача? — Проверьте раздел «Задача»
  • Нарушено правило? — Проверьте раздел «Ограничения»
  • Неверная структура результата? — Проверьте раздел «Формат результата»
  • Низкое качество? — Проверьте раздел «Примеры» или добавьте контекст

Можно менять по одному разделу и повторно тестировать, не переписывая весь промпт.

Преимущества для поддержки

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

  • Обновляйте контекст при изменении продукта, не затрагивая логику задачи
  • Меняйте формат результата с JSON на Markdown, не изменяя ограничения
  • Тестируйте разные наборы примеров в формате A/B, сохраняя всё остальное неизменным
  • Осуществляйте независимое управление версиями отдельных разделов
class Prompt:
    def __init__(self):
        self.context = ''
        self.task = ''
        self.constraints = []
        self.output_format = ''
        self.examples = []

    def build(self):
        parts = []
        if self.context:
            parts.append(f'<context>\n{self.context}\n</context>')
        if self.task:
            parts.append(f'<task>\n{self.task}\n</task>')
        if self.constraints:
            c = '\n'.join(f'- {r}' for r in self.constraints)
            parts.append(f'<constraints>\n{c}\n</constraints>')
        if self.output_format:
            parts.append(f'<output_format>\n{self.output_format}\n</output_format>')
        return '\n\n'.join(parts)

Когда пропускать разделы

Не каждому промпту нужны все пять разделов. Руководствуйтесь следующими правилами:

  • Пропускайте контекст, если задача понятна сама по себе (например, переведите это предложение)
  • Пропускайте ограничения для простых задач извлечения данных без особых случаев
  • Пропускайте примеры, если задача проста или модель уже хорошо справляется с ней без обучения на примерах
  • Всегда включайте задачу и формат результата — это минимально необходимые разделы

Избыточная детализация простых промптов добавляет шум без пользы.

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

Модульный промпт создаёт неправильную структуру результата. Какой раздел следует проверить первым?

Модульные разделы — основные выводы

Модульные разделы промпта — основа разработки промптов, которые легко поддерживать и отлаживать:

  • Пять основных разделов: контекст, задача, ограничения, формат результата и примеры
  • У каждого раздела одна обязанность — их смешивание создаёт путаницу
  • Модульная структура позволяет отлаживать разделы по отдельности и проводить A/B-тестирование
  • Храните промпты как структурированные объекты или функции, а не как необработанные строки
  • Пропускайте ненужные разделы — избыточная детализация добавляет шум
  • Всегда включайте как минимум задачу и формат результата в каждый нетривиальный промпт
Можно начать бесплатно

Изучай 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 структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Модульные разделы запроса»?

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

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

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

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

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