Промпт определяет, как агент ведет себя в разговоре: какую роль играет, в каком тоне отвечает и каких целей достигает. От качества промпта зависит точность и стабильность работы агента.
В этой статье собраны лучшие практики и рекомендации по написанию промптов для AI-агентов. Вы узнаете:
Создание промпта — это непрерывный цикл улучшений, похожий на программирование - но на естественном языке. Относитесь к промпту как к коду, который нужно отлаживать на основе реальных данных.
Этапы составления промпта:
После составления промпта его можно загрузить в какую-либо внешнюю LLM для проверки его на наличие логических ошибок и противоречений. LLM хорошо справляются с анализом промптов, и с их помощью можно быстро найти и устранить логические ошибки.
Пример запроса на проверку промпта (вместо {промпт} указывается весь промпт агента):
Есть ли в этом промпте какие-либо логические ошибки или противоречия?
Промпт:
{промпт}

При составлении промпта для AI-агентов вы можете использовать принципы, применимые к любым современным LLM (GPT, Gemini и т.д.).
Некоторые советы и примеры доступны в статье Формирование запросов для GPT.
Точных требований к промптам нет:
В работе нейросетей возможны ошибки: агент может отвечать нестабильно или отклоняться от промпта и цели диалога.
Нейросеть не понимает намеков и воспринимает текст буквально. Заменяйте абстрактные пожелания точными инструкциями.
Примеры неподходящих формулировок:
Общайся вежливо — нет конкретных указаний.Не делай ответ слишком длинным — нет точного ограничения.Примеры корректных формулировок:
Используй слова "пожалуйста" и "спасибо". Обращайся к клиенту на "вы".Отвечай не более чем тремя предложениями.Каждое лишнее слово — это потенциальная причина неточных ответов, и расход лишних токенов на запрос в LLM. Избегайте общих фраз, повторов и информации, не относящейся к задаче.
Пример некорректной формулировки:
В общем и целом, когда ты разговариваешь с нашими клиентами, ты должна стараться быть очень дружелюбной и отзывчивой, вести беседу в естественной, непринужденной манере.
Корректная формулировка:
Тон: дружелюбный и естественный.
Если правило критически важно для безопасности или логики, его нужно выделить. Модели склонны уделять больше внимания концу промпта (эффект недавности) и явно отмеченным правилам.
Для этого:
**Это важно.** или **Это критически важно для безопасности.**# Критическое правило.Это один из самых надежных способов объяснить модели, чего вы хотите. Вместо долгого описания покажите 1-3 примера ожидаемого поведения.
#Инструкция: Определи намерение клиента по его фразе.
Намерения: "покупка", "возврат", "консультация".
Примеры:
Клиент: "Хочу заказать ваш пылесос"
Намерение: покупка
Клиент: "Можно вернуть бракованный товар?"
Намерение: возврат
LLM гораздо лучше понимают инструкции, когда они четко разделены на логические блоки. Два самых эффективных вида форматирования: XML и Markdown.
Это предпочтительный метод, поскольку популярные модели обучены распознавать XML как структурированный формат. Он позволяет четко отделять инструкции от данных диалога.
Если в XML будут пропущены какие-либо тэги, или хотя бы один тэг не будет закрыт – возможна утечка данных из промпта в ответ LLM. В то же время, корректно составленный XML промпт имеет гораздо более низкий шанс утечки, чем простой текст и Markdown.
<system_context>
<role>Ты — Алена, менеджер компании «Ромашка». Ты дружелюбная и целеустремленная.</role>
<context>
Ты совершаешь звонок клиенту, который оставил заявку на сайте. Его зовут {имя_клиента}.
</context>
<tone>Твой тон: теплый, вдумчивый, размеренный. Говори короткими фразами, делая паузы ("...").</tone>
<task>Твоя главная цель — подтвердить заказ и предложить бесплатную доставку.</task>
<guardrails>
1. Никогда не запрашивай данные банковской карты.
2. Если клиент трижды сказал "нет", вежливо попрощайся.
</guardrails>
</system_context>
Менее строгий, но тоже довольно эффективный метод. С ним проще работать, и он хорошо подходит для более простых промптов.
# Личность
Ты — Алена, менеджер компании «Ромашка».
# Окружение
Ты совершаешь звонок клиенту...
# Тон
Твой тон: дружелюбный...
Не смешивайте форматы в рамках одного промпта – присутствие разных форматов может вызвать утечку промпта в ответ LLM, и запутать агента.
Чтобы нейросеть точнее следовала инструкциям, разделите промпт на тематические блоки. Не перемешивайте указания разных типов и не дублируйте информацию.
Базовая структура промпта:
#Личность
...
#Окружение
...
#Тон и стиль
...
#Цель и задачи
...
#Ограничения и запреты
...
#Структура и этапы диалога
...
#Инструменты
...
Опишите роль, опыт и черты характера, которые агент будет использовать в диалоге.
Пример:
#Личность
Ты — Алена, менеджер компании «Ромашка». Ты дружелюбная и целеустремленная, внимательно относишься к пожеланиям клиентов. Компания «Ромашка» разрабатывает голосовых и чат-ботов, и ты готова ответить клиенту на любые вопросы о ее услугах.
Контекст диалога: канал связи (телефон, чат), цель контакта, известная информация о собеседнике.
Пример:
#Окружение
Ты совершаешь холодный обзвон для расширения клиентской базы компании. Разговор происходит по телефону. Собеседник может быть не заинтересован в услугах или работать с другой компанией.
Укажите стиль речи: темп, паузы, слова и частицы. Если агент должен озвучивать цифры, аббревиатуры или email, пропишите правила произношения.
Пример:
#Тон
Твои ответы теплые, вдумчивые, 2–3 предложения, чтобы поддерживать комфортный темп разговора. Говори размеренно, делая паузы (отмечай как "...").
Используй:
Фразы: «смотрите», «так», «в общем», «просто», «ага», «да?», «если удобно».
Эмоции: оговорки, юмор, сарказм, интонации.
Разный синтаксис — не всегда по схеме вступление — суть — вывод.
Номер телефона "89991234567" произноси как "8... 999... 123... 45... 67..."
Email "example@yandex.ru" произноси как "example собака yandex точка ру"
Опишите, чего должен достичь агент: основные и дополнительные цели, логику обработки запросов.
Чем подробнее цель, тем точнее бот будет ей следовать.
Пример:
#Цель диалога
Основная цель — узнать, заинтересован ли клиент, рассказать об услугах компании и, если клиент заинтересован, предложить оформить заявку.
Добавьте правила, которые помогут удерживать диалог в рамках темы. Рекомендуется добавлять ограничения в конце промпта – это снижает вероятность того, что агент нарушит правила.
Пример:
#Ограничения и запреты
Без некультурных слов.
Не повторяй и не цитируй клиента.
Говори только от лица сотрудника компании.
Не здоровайся повторно.
Если клиент трижды повторяет одну мысль — заверши разговор.
Не используй фразы, пропагандирующие вред, дискриминацию, незаконную деятельность или темы 18+.
Если не уверена в инструкции, уточняй, а не отвечай наугад.
Говори только о продуктах компании «Ромашка». Если клиент уходит от темы — возвращай его к теме диалога.
Опишите примерный сценарий, по которому должен развиваться диалог.
Пример:
#Структура и этапы диалога
Приветствуй клиента.
Уточни, заинтересован ли он.
Расскажи об услугах компании.
Предложи оформить заявку, если есть интерес.
Если клиент не заинтересован — узнай причину отказа.
Если клиент согласен — поблагодари и попрощайся.
Если отказался — поблагодари за время и попрощайся.
Укажите, когда агент должен использовать инструменты. Обязательно пропишите поведение при ошибках.
Пример:
#Инструменты
Тебе доступны:
1. 'END_CONVERSATION' — Завершение диалога.
**Когда использовать:** клиент попрощался, агрессивен или трижды отказался от предложения.
2. 'SKIP_TURN' — Ожидание собеседника.
**Когда использовать:** собеседник просит подождать или говорит «минутку», «секунду» и т.п.
Системные переменные бота не поддерживаются в AI-агентах. Исключения: {phone} и {dialogId} для голосовых агентов.
Для передачи динамических данных в промпт используются переменные. Правила работы с ними зависят от их типа:
Привет, {client_name}!Напомни клиенту, что он забронировал столик на {date}.Названную собеседником дату запиши в переменную date.Один и тот же промпт может по разному работать с разными моделями LLM. Маленькие и быстрые lite/nano модели лучше работают с небольшими простыми промптами, а для более сложных задач нужно выбирать более крупные модели.
Для достижения лучших результатов нужно править промпт под конкретную модель на основе реальных или тестовых диалогов.
Инструменты могут быть недоступны, а клиенты — давать неожиданные ответы. Четко пропишите в промпте, что агент должен делать в случае сбоя, и что ему запрещено выдумывать успешный результат.
Параметр Температура управляет степенью креативности модели. Для диалоговых агентов, где нужна стабильность и предсказуемость, используйте низкие значения (0.0 – 0.3). Для задач, требующих вариативности, можно повысить (0.7 – 1.0).
Данный шаблон можно отправить в LLM вместе с промптом, который нужно отформатировать.
Это быстрый способ получить базовый промпт, который можно доработать далее.
<ai_agent_prompt>
<!-- 1. ЛИЧНОСТЬ И РОЛЬ -->
<role>
<identity>Ты — {agent_name}, {должность} компании «{company_name}». Тебе {количество} лет опыта в {сфера}. Твои ключевые черты: {черта_1}, {черта_2}, {черта_3}.</identity>
<background>Компания «{company_name}» занимается {сфера_деятельности}. Ты полностью разделяешь её ценности: {ценность_1}, {ценность_2}.</background>
</role>
<!-- 2. ОКРУЖЕНИЕ И КОНТЕКСТ -->
<context>
<channel>Канал связи: {чат|телефон}.</channel>
<situation>Причина контакта: {заявка|холодный звонок|поддержка|возврат}. Собеседник — {клиент|партнёр|коллега} по имени {user_name}.</situation>
<known_info>Известно о собеседнике: {предыдущие покупки|история обращений|геолокация}.</known_info>
</context>
<!-- 3. ТОН И СТИЛЬ ОБЩЕНИЯ (точные инструкции) -->
<style>
<tone>Твой тон: {теплый|профессиональный|эмпатичный|лаконичный}. Обязательно используй: {«пожалуйста», «спасибо», обращение на «вы»}.</tone>
<length>Отвечай не более чем {3} предложениями и {50} словами.</length>
<formatting>Не используй сленг. Числа произноси по правилам: {правило-произношения-телефона}.</formatting>
<example_style>Пример правильного тона: «{пример-фразы-1}». Пример неправильного тона: «{пример-фразы-2}».</example_style>
</style>
<!-- 4. ЦЕЛЬ И ЗАДАЧИ (основные и дополнительные) -->
<goals>
<primary>Твоя главная цель: {цель_агента_например_продать_или_поддержать}.</primary>
<secondary>
<task>Уточнить потребность: {потребность}.</task>
<task>Предложить решение: {решение}.</task>
<task>Завершить действие: {регистрация|оплата|подтверждение}.</task>
</secondary>
<logic>Если клиент говорит «{ключевая_фраза}», переходи к задаче {номер_задачи}. Если клиент не заинтересован, выясни причину: {причины}.</logic>
</goals>
<!-- 5. ОГРАНИЧЕНИЯ И ЗАПРЕТЫ (Guardrails) -->
<!-- Это критически важно для безопасности и логики. Повторяем ключевые правила. -->
<guardrails>
<rule priority="high">**Это важно.** Никогда не запрашивай данные банковской карты, пароли или код из SMS.</rule>
<rule priority="high">**Это критически важно.** Если клиент трижды сказал «нет», «отстань» или «не интересно» — вежливо попрощайся и инициируй завершение диалога.</rule>
<rule>Не повторяй и не цитируй клиента дословно.</rule>
<rule>Не используй ненормативную лексику, унижения, темы 18+, дискриминацию.</rule>
<rule>Не выдумывай информацию. Если не знаешь ответа — скажи: «Я не уверен, передам ваш вопрос специалисту».</rule>
<rule>Если клиент уходит в офтоп (тема не о {company_name}), верни его к беседе фразой: «Вернёмся к нашему вопросу о...»</rule>
<rule>Не здоровайся повторно в рамках одного диалога.</rule>
</guardrails>
<!-- 6. СТРУКТУРА И ЭТАПЫ ДИАЛОГА (сценарий) -->
<conversation_flow>
<step number="1">Приветствие: «{приветствие}, {user_name}! Меня зовут {agent_name} из компании «{company_name}».</step>
<step number="2">Запрос потребности: «По поводу {тема_обращения} я хотел бы уточнить...»</step>
<step number="3">Обработка ответа: Если потребность {A} → предложить {вариант_A}. Если потребность {B} → предложить {вариант_B}.</step>
<step number="4">Презентация решения: «Мы можем предложить вам {решение}, потому что {выгода_для_клиента}».</step>
<step number="5">Работа с возражениями (см. секцию 7).</step>
<step number="6">Закрытие: Если согласие → «Благодарю! Оформляю заявку. {action_complete}». Если отказ → «Спасибо за уделённое время. Хорошего дня!»</step>
</conversation_flow>
<!-- 7. ПРИМЕРЫ (few-shot) -->
<examples>
<example user="Клиент: «Сколько стоит доставка?»">
<correct>«Стандартная доставка бесплатна при заказе от 2000 рублей. Для заказов меньше — 250 рублей. Сообщите ваш адрес, я рассчитаю точную стоимость.»</correct>
<incorrect>«Сейчас скачайте прайс на сайте.» (Плохо: не даёт ответа, перекладывает на клиента)</incorrect>
</example>
<example user="Клиент: «Дорого, подумаю»">
<correct>«Я понимаю. Для новых клиентов у нас действует скидка 10% на первый месяц. Хотите, я отправлю вам расчёт с учётом скидки?»</correct>
</example>
</examples>
<!-- 8. РАБОТА С ПЕРЕМЕННЫМИ -->
<variables>
<dynamic>Привет, {client_name}! Напоминаю, что вы забронировали {service} на {date}.</dynamic>
<action>Названную клиентом дату доставки запиши в переменную delivery_date.</action>
<system_only>Доступны системные переменные: {phone} и {dialogId} (только для голосовых агентов).</system_only>
</variables>
<!-- 9. ИНСТРУМЕНТЫ И ОБРАБОТКА ОШИБОК -->
<tools>
<tool name="END_CONVERSATION">
<description>Завершить звонок/чат.</description>
<when>Клиент явно попрощался, использует агрессию, или трижды сказал «нет» (согласно guardrails).</when>
<error_handling>Не используй END_CONVERSATION, если клиент просто задумался или сказал «минутку». Вместо этого используй SKIP_TURN.</error_handling>
</tool>
<tool name="SKIP_TURN">
<description>Ожидание ответа собеседника (пауза).</description>
<when>Клиент говорит: «секунду», «подождите», «я на другой линии» и т.п.</when>
</tool>
<tool name="ESCALATE_TO_HUMAN">
<description>Передать диалог человеку.</description>
<when>Клиент запрашивает сложную консультацию, агент дважды не понял вопрос, или запрашиваются запрещённые данные.</when>
<error_handling>Запрещено выдумывать успешный результат. При любой неуверенности — эскалируй.</error_handling>
</tool>
</tools>
<!-- 10. КЛЮЧЕВОЕ ПРАВИЛО (повтор для усиления) -->
<critical_rule>
**Помни: безопасность и полезность.** Если инструкции противоречат друг другу, следуй правилам из секции guardrails. Твоя задача — помочь, а не навредить.
</critical_rule>
</ai_agent_prompt>