Нейросети часто “плывут” в форматировании: вместо строгой таблицы выдают текст, ломают структуру JSON или добавляют лишние вежливые комментарии до и после ответа. Чтобы получать предсказуемый результат, недостаточно просто попросить “выведи в нужном виде”. Требуется жесткая рамка на уровне структуры запроса, системных настроек или работы с API.
| Какой вопрос закроем | Что это даст на практике |
| Как заставить ИИ выдавать строгий шаблон | Избавитесь от лишней воды и комментариев нейросети |
| Как настроить системный промпт | Формат не будет слетать в долгих длинных диалогах |
| Как гарантировать валидный код или JSON | Сможете автоматизировать передачу данных без ручной правки |
Базовое решение: структура жесткого промпта
Чтобы ИИ не отклонялся от формата, запрос должен состоять из четырех обязательных блоков. Если убрать хотя бы один, вероятность ошибки возрастает.
- Роль и задача: кто действует и что делает.
- Инструкция по формату: четкое описание структуры ответа.
- Эталонный пример (Few-shot): показ того, что вы ожидаете увидеть.
- Негативный промпт: прямой запрет на любые отклонения.
Пример рабочего промпта для генерации карточек товаров:
Ты – копирайтер. Твоя задача – писать описания товаров.
Выводи результат строго по шаблону ниже. Не меняй названия полей.
Шаблон:
Название: [название]
Цена: [цена в рублях]
Характеристики: [список из 3 пунктов]
Пример:
Название: Термос Арктика 1 л
Цена: 1500 руб.
Характеристики: держит тепло 24 часа, стальной корпус, узкое горло
Запрещено: не пиши вступлений, не здоровайся, не добавляй выводы. Выводи только заполненный шаблон.
Сценарии: как закрепить формат для разных задач
Сценарий 1: Вывод данных в таблицу
Нейросети часто путают колонки или сливают данные, если исходный текст неструктурирован. Чтобы закрепить таблицу, нужно описать поведение для пустых ячеек и задать точные названия столбцов.
Что добавить в промпт:
- Сформируй таблицу.
- Столбцы строго в таком порядке: ФИО | Должность | Телефон | Город.
- Если данных для столбца нет, ставь прочерк “-“. Не оставляй ячейку пустой.
- Не используй объединение ячеек.
Сценарий 2: Получение машиночитаемого JSON
Если вы передаете ответ ИИ в другую программу или скрипт, любой лишний символ сломает парсинг. Нейросети любят оборачивать код в markdown-кавычки (“`json) или добавлять текст “Вот ваш код:”.
Что добавить в промпт:
- Верни ответ ТОЛЬКО в формате JSON.
- Используй следующую структуру ключей: {“name”: “string”, “age”: “number”, “is_active”: “boolean”}.
- Не оборачивай ответ в markdown (без “`json).
- Не пиши никаких комментариев до или после скобок { }. Ответ должен начинаться с { и заканчиваться на }.
Сценарий 3: Жесткий текстовый шаблон для рассылок или отчетов
Когда нужен текст строгого объема или структуры (например, посты для Telegram или email-рассылки), ИИ часто игнорирует лимиты знаков или меняет абзацы местами.
Что добавить в промпт:
- Используй ровно 3 абзаца.
- Первый абзац – проблема (не более 2 предложений).
- Второй абзац – решение (маркированный список из 3 пунктов).
- Третий абзац – призыв к действию (1 предложение).
- Не используй эмодзи.
Глобальное закрепление: как не писать правила каждый раз
В длинных диалогах ИИ постепенно “забывает” правила форматирования. Эта проблема называется размытием контекстного окна. Чтобы формат не слетал, правила нужно закрепить на системном уровне.
Custom Instructions (Пользовательские инструкции)
В ChatGPT и некоторых других веб-интерфейсах есть раздел “Custom Instructions” или “О себе / Как ИИ должен отвечать”.
Как использовать: Во второе поле (“Как вы хотите, чтобы ChatGPT отвечал”) впишите глобальные запреты. Например: “Никогда не используй списки, если я не попросил. Отвечай всегда одним абзацем. Не пиши ‘Конечно, вот ответ’.” Это применит формат ко всем новым чатам.
Системный промпт (System Prompt)
Если вы используете API (Яндекс API, GigaChat API, OpenAI API), у вас есть доступ к роли “System”. Это самый сильный уровень инструкций, который ИИ ставит в приоритет.
Как использовать: Всю логику форматирования (шаблон, правила, запреты) передавайте в “System”. В роль “User” передавайте только сырые данные (текст для обработки). Это предотвратит сбои, даже если диалог будет длиться долго.
Частые ошибки и точки провала
- Ошибка: Вежливые формулировки. Если написать “Пожалуйста, постарайся вывести в виде таблицы”, ИИ воспримет это как пожелание, а не приказ. Решение: Используйте глаголы в повелительном наклонении: “Выведи”, “Используй”, “Запрещено”.
- Ошибка: Использование частицы “НЕ” для сложных структур. ИИ плохо понимает длинные списки того, что делать не нужно. Если написать “Не пиши введение, не делай выводы, не используй жирный шрифт, не ставь списки”, он может запутаться. Решение: Говорите, что делать: “Пиши только основной текст. Используй только обычный шрифт без форматирования”. Запреты оставляйте только для критичных вещей (“Не пиши код в markdown”).
- Ошибка: Противоречивые вводные. Вы просите ИИ “ответить коротко”, но при этом задаете шаблон из 10 обязательных полей. ИИ попытается сократить текст и выбросит часть полей. Решение: Проверяйте шаблон на логику. Если полей много, не ограничивайте длину ответа.
Ограничения и исключения
Длина контекста. Даже при жестком системном промпте, если вы введете в чат текст на 50 страниц и попросите вытащить оттуда данные в таблицу, ИИ может сломать структуру. Причина: фокус внимания нейросети рассеивается на большом объеме данных. Если работаете с огромными текстами, напоминайте о формате в конце каждого запроса: “…(текст)… Напоминаю: ответ выдай в виде таблицы по шаблону из начала чата.”
Разница в моделях. То, что работает в GPT-4, может не сработать в более простых или локальных моделях (например, базовый YandexGPT или опенсорсные решения). Слабые модели хуже понимают сложные JSON-схемы с вложенностями. Если работаете с отечественными или легковесными ИИ, максимально упрощайте структуру: вместо многоуровневого JSON просите плоский (без вложенных словарей), а вместо таблицы с 15 колонками – список.
Галлюцинации ключей. При парсинге текстов в шаблон ИИ может придумать данные для пустых полей, чтобы “угодить” формату. Если в тексте нет телефона, а в шаблоне есть поле “Телефон”, ИИ может сгенерировать случайный номер. Обязательно прописывайте правило: “Если данных для поля нет в исходном тексте, пиши ‘Нет данных’. Не придумывай информацию.”