Промпт задаёт модели три вещи одновременно: что она должна сделать, в каком контексте и в каком виде выдать результат. За несколько лет работы с GPT, Claude и локальными моделями я вывел для себя правило: качество ответа процентов на семьдесят зависит не от выбора модели, а от того, как собран запрос. Когда я подключаю Claude API к боту на aiogram или строю RAG-поиск по базе знаний клиента, один и тот же вопрос, заданный в свободной форме и оформленный по чёткой структуре, выдаёт совершенно разные по пользе ответы. Дальше разберу, из каких блоков состоит рабочий промпт и почему порядок этих блоков решает больше, чем формулировки внутри них.
По теме статьи
Готовое решение
AI-чатбот для сайта на Claude - отвечает как ваш менеджер, работает 24/7
Подключу к вашему сайту чат-бота на Claude API. Бот отвечает на вопросы клиентов голосом вашего бренда, знает каталог и условия доставки, забирает лиды в CRM или Telegram.
от25 000 ₽
AI / Claude API
Искусственный интеллект для бизнеса
AI-чатбот на сайт с базой знаний, автообработка заявок, генерация контента, умный парсинг. Claude API, OpenAI, RAG.
от50 000 ₽
Из каких блоков состоит промпт
На практике промпт для рабочей задачи, а не для разового вопроса в чат, собирается из шести элементов. Не все нужны всегда, но если ответ модели плывёт, я в первую очередь ищу, какого блока не хватает.
- Роль. Кем модель должна себя вести: редактором, юристом, аналитиком данных, ассистентом поддержки. Роль задаёт словарь и уровень детализации ответа.
- Контекст. Факты, которые модель не может знать сама: данные о продукте, фрагмент документа, история переписки, ограничения проекта.
- Задача. Конкретное действие: не «расскажи про доставку», а «сформируй ответ клиенту про сроки доставки СДЭК по его региону на основе таблицы ниже».
- Формат ответа. JSON, таблица, три пункта списка, текст без markdown - модель держит формат заметно лучше, если он описан явно, а не подразумевается.
- Ограничения. Что нельзя делать: не придумывать цифры, не выходить за 200 слов, не использовать данные вне контекста.
- Примеры. Эталонный ответ или пара «вопрос-ответ», особенно если формат нестандартный.
Когда я собираю системный промпт для чат-бота с базой знаний, все шесть блоков идут в системную часть, а в пользовательскую попадает только сам вопрос. Для разовой задачи в интерфейсе Claude или ChatGPT обычно хватает роли, контекста и задачи, формат и ограничения можно держать в голове и поправить руками, если ответ не подошёл.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Почему порядок частей запроса к нейросети меняет ответ
Модель читает промпт последовательно и держит больший вес у того, что стоит ближе к концу запроса и в самом начале, а середина длинного текста теряется первой. Это видно на практике при работе с RAG: если в промпт подмешать десять фрагментов документа, а инструкцию по формату ответа поставить в самое начало, до документов, модель к третьему абзацу успевает про неё забыть.
Правило, которое я применяю в проектах: контекст (документы, данные, история переписки) идёт первым, задача и формат ответа - последними, прямо перед вопросом пользователя. Так модель видит инструкцию, когда уже «прогрелась» на контексте, и не теряет её за объёмом данных.
| Промпт без структуры | Промпт со структурой |
|---|---|
| Роль, задача и формат перемешаны в одном абзаце | Роль, контекст, задача и формат разнесены на отдельные блоки |
| Модель додумывает формат ответа сама, результат нестабилен от запуска к запуску | Формат задан явно, ответ повторяем при одинаковом входе |
| Длинный контекст «съедает» инструкцию, стоящую перед ним | Инструкция стоит после контекста, модель её не теряет |
| Ограничения приходится добавлять постфактум, правкой готового ответа | Ограничения заданы заранее, меньше повторных запросов |
На объёмных задачах разница ощутима в деньгах, если считать в токенах: неструктурированный промпт часто требует двух-трёх итераций с уточнениями, а при работе через API это лишние токены в счёте за каждый повторный запрос.
Системный промпт и пользовательский: разная работа с контекстом
В API Claude и OpenAI промпт физически делится на роли: system, user, assistant. Системная часть задаёт модели устойчивое поведение на весь диалог, тон, границы, формат, доступные инструменты. Пользовательская меняется от сообщения к сообщению.
Смешивать их - частая ошибка при первой сборке бота. Если инструкцию «отвечай только по базе знаний, не выдумывай факты» положить в пользовательское сообщение, при следующем вопросе клиента она может потерять вес, потому что модель обрабатывает диалог целиком, а системная часть держит приоритет стабильнее реплики из середины переписки. В системном промпте это правило действует на весь диалог по умолчанию.
Когда я собираю бота на aiogram с интеграцией Claude API, системный промпт обычно занимает 40-60 строк: роль ассистента, список того, что он умеет и не умеет, формат ответа под мессенджер, короткие абзацы без markdown-таблиц, которые Telegram не рендерит, и жёсткое ограничение по теме разговора. Пользовательская часть - только текст от клиента плюс, если нужно, последние сообщения переписки для контекста.
Для задач сложнее чат-бота с FAQ, например ассистента, который достаёт данные из CRM и отвечает с учётом истории заказов, структура промпта усложняется, и здесь я закладываю отдельный слой на разработку AI-интеграций с Claude API и RAG, а не пытаюсь впихнуть всю логику в один системный промпт без внешней памяти.
Примеры и техники: когда промпту нужен few-shot
Роль, контекст и задача закрывают процентов восемьдесят случаев. Оставшиеся двадцать, там где формат ответа нестандартный или задача требует рассуждения в несколько шагов, решаются техниками посложнее.
| Техника | Что это | Когда применяю |
|---|---|---|
| Zero-shot | Задача без примеров, только описание | Простые однозначные запросы: перевод, короткое summary, классификация |
| Few-shot | Один-три примера «вход - ожидаемый выход» прямо в промпте | Нестандартный формат ответа, специфичный стиль, парсинг в строгую структуру |
| Chain-of-thought | Просьба рассуждать по шагам перед финальным ответом | Расчёты, многошаговая логика, задачи с условиями |
| Структурные теги | Разметка частей промпта тегами вроде <context>, <task>, <format> | Длинные промпты с несколькими источниками данных, RAG-системы |
Few-shot особенно выручает, когда нужно, чтобы модель стабильно возвращала JSON нужной формы для дальнейшей обработки скриптом. Я так делаю в связках с n8n: промпт содержит два примера входного текста и точного JSON на выходе, и нода дальше по цепочке разбирает результат без дополнительных проверок на битый формат. Без примеров модель через раз меняет названия полей или добавляет пояснение перед JSON, и это ломает автоматизацию.
Частые ошибки в структуре промпта
Список того, что чаще всего чиню в чужих промптах на консультациях.
- Задача сформулирована через отрицание. «Не пиши длинно» модель понимает хуже, чем «уложись в 100 слов», положительная формулировка работает надёжнее.
- Формат ответа не описан явно. Ожидается таблица, а модель выдаёт текст, потому что нигде не сказано, в каком виде нужен результат.
- Контекст без источника. В промпт вставлен кусок текста без пометки, что это цитата или данные, и модель путает его с частью инструкции.
- Один промпт на две задачи. «Переведи текст и заодно проверь орфографию» размывает фокус, лучше разбить на два вызова или на две чётких секции.
- Нет ограничения на выдумывание фактов. Для задач с базой знаний фраза «отвечай только на основе предоставленного контекста, если ответа нет - сообщи об этом» заметно снижает число придуманных ответов.
- Инструкция теряется в объёме контекста. Актуально для RAG: если инструкция стоит перед пятью абзацами документов, к концу модель учитывает её уже не так строго.
Каждая из этих ошибок чинится без смены модели, простой перестановкой и уточнением блоков. Время экономится именно на этом этапе, а не на подборе более дорогой модели под ту же задачу.
Частые вопросы
Чем промпт отличается от обычного вопроса нейросети?
Формально ничем, любой ввод в чат уже промпт. Разница в том, что случайный вопрос модель дополняет предположениями, а собранный по структуре запрос убирает пространство для догадок: роль, контекст, формат и ограничения заданы заранее, и модели не приходится решать за пользователя, что он имел в виду.
Нужно ли писать промпт на английском для лучшего результата?
Для Claude и GPT разница в качестве между русским и английским промптом на моей практике минимальна для большинства задач. Английский иногда даёт небольшой выигрыш в задачах с кодом или узкоспециализированной терминологией, но структура запроса влияет на результат сильнее, чем язык, на котором она написана.
Сколько должен весить системный промпт для чат-бота?
Зависит от задачи. Для простого FAQ-бота хватает 15-20 строк: роль, тема, формат, ограничения. Для ассистента с доступом к базе знаний или CRM системный промпт у меня обычно вырастает до 40-80 строк за счёт правил обращения с контекстом и примеров формата ответа. Дальше этого объёма логику разумнее выносить во внешние инструменты, а не раздувать один текстовый блок.
Как проверить, что структура промпта реально работает?
Прогоняю один и тот же промпт на 10-15 разных входных данных и смотрю на стабильность формата и фактов в ответах. Если структура рабочая, ответы отличаются содержанием, но не расползаются по формату. Если формат каждый раз новый, значит, инструкция сформулирована нечётко или стоит не на том месте в тексте промпта.