Почему хорошие промпты почти всегда структурированы
Сообщество снова спорит о том, в каком формате писать промпты — HTML или Markdown. Год назад обсуждали Markdown против JSON. Но суть дискуссии не в формате. Markdown, JSON, HTML — все они работают хорошо по одной причине: структура. А конкретный выбор формата зависит лишь от того, какой из них чаще встречался в предобучении вашей модели.
Промпт-инжиниринг — это не про то, чтобы скормить модели больше информации. Это про то, чтобы помочь и модели, и человеку направить ограниченное внимание в нужное место. И структурированный язык делает именно это. Всего несколько символов разметки — и внимание уже распределено по тексту заранее, а не плывёт по нему вслепую.
Что структура делает с текстом
Обычный текст — это линейный поток слов, который течёт слева направо. У него нет иерархии, нет акцентов, нет явных связей между частями. И человеку, и LLM приходится тратить когнитивные ресурсы на то, чтобы самостоятельно вычленять главное из этой стены текста.
Структурированный текст через Markdown, JSON или HTML-теги перестаёт быть линейным. Он обретает иерархию, эмфазис, веса внимания и многомерную форму. Заголовки показывают, что важно. Списки группируют связанные элементы. Жирный шрифт кричит «обрати на это внимание». Курсив мягко подчёркивает нюанс.
И это меняет не только то, как модель обрабатывает текст. Это меняет и то, как вы сами его воспринимаете. Когда вы пишете структурированный промпт, вы вынуждены продумать, что действительно важно, а что второстепенно. Вы редактируете не только текст, но и собственное мышление.
Пример: пикник
Возьмём отрывок на естественном языке (пример из статьи Peng Qian, адаптирован на русский):
Мы едем на пикник 1 июля в Центральный парк. Добираемся на машинах. Ты поедешь по кольцевой с южной стороны, а я напрямую с севера. Встречаемся у входа №2 в 8 утра. Не забудь взять сэндвичи с тунцом, воду и Bluetooth-колонку. Я возьму плед, палатку, сэндвичи с курицей и спрей от насекомых. И заранее забронируй билеты в парк в приложении — бронировать можно только за день, введи в поиске «Центральный парк».
А теперь тот же текст в структурированном виде, с удалённой «связующей тканью» естественного языка — союзами, предлогами, лишними словами:
### Место пикника
Центральный парк
### Время и место встречи
- 1 июля, 8 утра
- **Вход №2** в парк
### Как добраться
- Ты: по кольцевой дороге
- Я: напрямую с севера
### Что взять
- Ты: сэндвичи с **тунцом**, вода, Bluetooth-колонка
- Я: сэндвичи с **курицей**, плед, палатка, спрей от насекомых
### Важное напоминание
- Забронировать заранее в приложении, найти *Центральный парк*
- **Бронировать можно только за день**
Разница очевидна. Если кто-то спросит «у какого входа встречаемся?», во втором варианте ответ находится мгновенно. В первом — нужно перечитать весь абзац, мысленно отфильтровать шум и только потом найти нужную информацию.
Всего несколько символов разметки делают эту магию:
### Заголовок
**Жирный**
*Курсив*
- Список
1. Нумерованный список
Почему это работает: внимание как валюта
У внимания есть два фундаментальных свойства.
Первое: внимание определяет, что произойдёт дальше. Модель (и человек) принимает решения на основе того, на что она обратила внимание. Если важная деталь зарыта в середине длинного абзаца, её могут просто не заметить — не потому что не могут прочитать, а потому что внимание ушло в другое место.
Второе: вниманием можно управлять. По крайней мере, до некоторой степени. Не нужно надеяться, что модель сама заметит список ингредиентов — можно явно указать на него в промпте.
Автор приводит бытовую аналогию. Вы идёте в магазин за пачкой макарон. Вы очень умны, но сейчас голодны. Ваше внимание падает на аппетитную фотографию на упаковке — и вы кладёте пачку в корзину не глядя. Рядом с вами стоит диетолог, чьё внимание направлено на состав и калорийность. Его реакция: «слишком калорийно, я на диете». Вы не пропустили калорийность потому, что не умеете читать этикетку. Вы пропустили её потому, что красивая картинка перехватила ваше внимание первой.
Эта история иллюстрирует ровно те же два пункта в другом контексте. И именно поэтому управление вниманием внутри промпта так важно. Вместо того чтобы надеяться, что LLM заметит «список ингредиентов» самостоятельно, просто укажите на него прямо:
### Обрати особое внимание!!
1. **Не фокусируйся** только на обложке.
2. **Всегда проверяй список ингредиентов**.
Вы помечаете это, потому что не оставляете важное на волю случая. Это и есть самая простая логика структурированных промптов — логика, которую способны понять и вы, и LLM.
Формат не важен, структура — важна
Так что возвращаясь к исходному вопросу: HTML или Markdown? Не имеет значения. Символы разметки — лишь инструмент. Главное — используете ли вы структуру для того, чтобы заякорить внимание модели и своё собственное.
Markdown удобен своей простотой и распространённостью в обучающих данных современных LLM. JSON хорош для строгих спецификаций и машинно-читаемых форматов. HTML — если модель обучалась на большом количестве веб-страниц. Но принцип везде один: структура создаёт иерархию, а иерархия направляет внимание.
Практические выводы
- Всегда структурируйте промпты, которые длиннее двух предложений. Заголовки, списки и эмфазис — минимально необходимый набор.
- Используйте жирный шрифт и заголовки для ключевых инструкций. Модель должна видеть их с первого взгляда, не продираясь через стену текста.
- Убирайте «связующую ткань» естественного языка. Союзы, вводные слова и вежливые обороты размывают внимание. Структура сама показывает связи — естественно-языковой клей больше не нужен.
- Выбирайте формат разметки под модель. Если модель обучалась на Markdown (большинство современных LLM) — используйте Markdown. Если на коде — JSON. Если на вебе — HTML.
- Пишите промпты так, как если бы вы писали их для самого себя. Структура помогает не только модели — она помогает вам продумать, что действительно важно.