Разделители и секции

Разделители и секции

В прошлом уроке мы говорили, ЧТО нужно структурировать. Теперь разберём КАК. Самый простой и универсальный способ — разделители. Это символы или строки, которые явно отделяют одну секцию промпта от другой.

Зачем нужны разделители

Представь промпт, в котором ты даёшь модели документ для анализа:

Проанализируй текст и напиши краткое содержание. Текст: "В этой
статье мы рассмотрим основные принципы работы с базами данных.
Реляционные базы данных..." [ещё 500 слов статьи]

Где заканчивается инструкция и начинается текст статьи? Модель должна понять это по смыслу — и может ошибиться. Особенно если в самой статье встречаются слова «проанализируй» или «напиши».

Разделитель решает эту проблему однозначно:

Проанализируй текст и напиши краткое содержание.

Текст:
###
В этой статье мы рассмотрим основные принципы работы с базами данных.
Реляционные базы данных... [ещё 500 слов статьи]
###

Модель чётко видит границы текста для анализа.

Типы разделителей

1. Одинарные символы-разделители

Подходят для коротких данных (одно предложение, одно слово):

Переведи на английский: |Привет, как дела?|

Символ | отмечает начало и конец текста.

2. Повторяющиеся символы

Для данных средней длины (абзац, короткий документ):

Исправь ошибки в тексте:

---
я пошол в магозин и купил хлеп
---

Ответь только исправленным текстом.

--- — визуально заметен, модель редко генерирует три дефиса подряд самостоятельно.

3. Символы-ограничители (fences)

Для длинных документов или кода:

Напиши unit-тест для этой функции:

```javascript
function sum(a, b) {
  return a + b;
}

Тест должен проверять: положительные числа, отрицательные, ноль.


Тройные обратные кавычки — стандартный способ выделения кода, модель к ним привыкла.

**4. Кастомные текстовые разделители**

Для максимальной надёжности, когда внутри данных может быть что угодно:

Извлеки все даты из документа:

[ДОКУМЕНТ_НАЧАЛО] Договор заключён 15.01.2025. Срок действия — до 31.12.2026. Платёж должен быть произведён до 10.02.2025. [ДОКУМЕНТ_КОНЕЦ]

Верни даты списком.


Кастомные разделители `[ДОКУМЕНТ_НАЧАЛО]` и `[ДОКУМЕНТ_КОНЕЦ]` гарантируют, что модель не спутает границы, даже если внутри документа есть тройные кавычки или дефисы.

### Секции с заголовками

Для сложных промптов с несколькими блоками используй markdown-заголовки как секции:

РОЛЬ

Ты — технический писатель.

ЗАДАЧА

Напиши документацию для функции.

ДАННЫЕ

def calculate_discount(price, user_level):
    ...

Каждая секция — отдельный логический блок. Модель «читает» их как независимые части.

### Сравнение: с разделителями и без

**Без разделителей (вход):**

Ответь на вопрос клиента, используя информацию из базы знаний. Вопрос: как вернуть товар? База знаний: возврат товара возможен в течение 14 дней с момента покупки. Товар должен быть в оригинальной упаковке. Деньги возвращаются на карту в течение 5 рабочих дней. Чек обязателен. Ответь вежливо.


**Потенциальная проблема:** модель может вплести фразу «Ответь вежливо» в ответ клиенту.

**С разделителями (вход):**

Ответь на вопрос клиента, используя информацию из базы знаний.

[ВОПРОС] как вернуть товар? [/ВОПРОС]

[БАЗА_ЗНАНИЙ] Возврат товара возможен в течение 14 дней с момента покупки. Товар должен быть в оригинальной упаковке. Деньги возвращаются на карту в течение 5 рабочих дней. Чек обязателен. [/БАЗА_ЗНАНИЙ]

[ТРЕБОВАНИЯ]

  • Ответь вежливо, в стиле сотрудника поддержки.
  • Не выдумывай информацию, которой нет в базе знаний. [/ТРЕБОВАНИЯ]

Модель чётко видит: это вопрос, это знания, это требования к ответу.

### Правила хорошего разделителя

1. **Уникальность.** Разделитель не должен встречаться в данных. Не используй `---` как разделитель, если анализируешь Markdown-документ.
2. **Парность.** Открывающий и закрывающий разделители — лучше, чем один. Модель видит начало и конец блока.
3. **Осмысленность.** `[ДОКУМЕНТ]` лучше, чем `===`. Модель понимает семантику.
4. **Консистентность.** Одинаковый стиль разделителей во всех твоих промптах — тебе самому будет легче их читать.

### Проверь себя

Ты пишешь промпт для анализа юридического документа. В документе встречаются и тройные кавычки, и дефисы, и markdown-заголовки. Какой разделитель выберешь?

*Ответ: кастомные текстовые разделители `[ДОКУМЕНТ_НАЧАЛО]` и `[ДОКУМЕНТ_КОНЕЦ]`. Они гарантированно не встретятся в юридическом документе и явно обозначают границы.*

### Итог

- Разделители — простейший и самый надёжный способ структурирования промпта.
- Выбирай разделитель в зависимости от данных: `|` для коротких, `---` для средних, кавычки для кода, `[ТЕГ_НАЧАЛО]`/`[ТЕГ_КОНЕЦ]` для сложных документов.
- Кастомные текстовые разделители — самые надёжные: они не встречаются в данных и понятны модели.
- Используй парные разделители (открывающий + закрывающий) — модель видит начало и конец блока.
- Для сложных промптов комбинируй разделители с markdown-заголовками секций.

### Что дальше

Разделители — простой и мощный инструмент. Но есть ещё один подход, особенно полезный для сложных многоуровневых промптов: XML-теги. В следующем уроке разберём, как использовать XML-подобную разметку для организации контента.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике