Наименование организации:
ООО «Мой Софт»
40702810310000021416
Расчетный счет:
АО «ТИНЬКОФФ БАНК»
Банк:
044525974
БИК:
781101001
Корреспондентский счет:
7811616280
ИНН:
781101001
КПП:
1167847299410
ОГРН:
ОКПО:
03614300
Бесщетников Антон Игоревич
Генеральный директор:
192019, г. Санкт-Петербург, ул. Мельничная, д. 18, литер А, пом. 18-H 10, оф. 805
Юридический адрес:
Почтовый адрес:
192019, г. Санкт-Петербург, а/я 2
Реквизиты компании ООО «Мой Софт»
Инструкции и промпты

Переменные ИИ-агента: как бот запоминает данные клиента

Фиксированные и динамические переменные, функция memorize и куда значение уходит дальше: в вебхук, фоллоу-ап, рассылку или уведомление.

Команда платформы СаввиОбновлено 15 сентября 20266 мин чтения
Пластилиновые именные бирки разного цвета раскладываются по ячейкам картотечного ящика
Коротко

Переменная — это ячейка, куда агент кладёт одно значение из диалога: имя, дату, номер заказа. Фиксированные переменные проверяют тип и формат и годятся для передачи во внешние сервисы. Динамические сохраняют произвольную строку через функцию memorize, когда важнее смысл, чем формат. Готовое значение подставляется в аргументы действий и вебхуков, в фоллоу-апы, в условия рассылок и в шаблоны уведомлений.

Агент за диалог узнаёт десяток вещей: как зовут собеседника, что он ищет, на какую сумму рассчитывает, когда ему удобно приехать. Без переменной каждая из них живёт ровно один ответ и исчезает. С переменной — сохраняется и переезжает туда, где нужна: в следующую реплику, в вызов функции, в карточку CRM.

Переменная — это память агента внутри одного диалога

Переменная хранит одно значение, которое агент получил из канала или узнал у собеседника сам. Записывается она в фигурных скобках, например {имя_переменной}, а заполняется автоматически в момент ответа: вы пишете в инструкции current_datetime, модель получает уже готовую строку с датой и временем.

Все переменные делятся на три группы по тому, кто их заполняет: платформа подставляет системные, подключённый канал приносит канальные, а агент сам записывает пользовательские в ходе разговора. Первые две группы разберём короче, они пришли готовыми, вся сложность в третьей.

Фиксированные переменные: агент переспрашивает, пока формат не сойдётся

Фиксированная переменная создаётся заранее с указанным типом: строка, целое число, целое или дробное, булево значение. Она нужна там, где известно, какого рода ответ ждать, и где этот ответ потом уйдёт дальше по цепочке — в CRM, в таблицу, в платёжный сервис.

В инструкции указывается, что именно запросить и в каком формате сохранить, а сохранение идёт через функцию set_fields_values. Если клиент присылает дату рождения без разделителей или имя вместо ожидаемого числа, значение не проходит проверку, и агент, следуя инструкции, уточняет формат и просит повторить. Только корректный по типу ответ попадает в переменную — на другом конце маршрута гарантированно не окажется строки там, где ждут число.

!
Где это особенно важно

Если фиксированная переменная дальше идёт в аргумент вебхука или в поле CRM, проверка формата защищает от ошибки на приёме. Внешний сервис, получивший вместо даты произвольный текст, чаще всего просто откажет в запросе.

Динамические переменные и функция memorize

Динамическая переменная не имеет типа и всегда хранится как строка. Решение, что именно запомнить, модель принимает сама — по инструкции можно только направить её внимание: «сохрани финансовую цель клиента через memorize». Сохранённое значение годится для генерации ответа и для контекста. Для прямой передачи во внешний сервис, где нужна гарантированная структура, работают фиксированные переменные.

Разница между двумя режимами — это разница между анкетой и заметкой на полях. Анкета не примет неверный формат и требует уточнения. Заметка на полях запишет мысль своими словами и не станет её проверять.

Фиксированная переменнаяДинамическая переменная
Тип данныхстрока, число, целое/дробное, булевовсегда строка
Кто решает, что сохранитьзаранее заданное поле в инструкциимодель по ходу диалога
Проверка форматаесть, неверный ответ агент переспрашиваетнет
Функция сохраненияset_fields_valuesmemorize
Куда годитсявебхуки, CRM, внешние сервисыконтекст ответа, память диалога

Проверьте на своих диалогах.Регистрация без карты, 500 ₽ на тест по промокоду BLOG500

Собрать агента

Системные и канальные переменные приходят без вопросов клиенту

Часть переменных агенту не нужно запрашивать вообще — они уже известны платформе или пришли вместе с обращением. Системные доступны в любом агенте: current_datetime и current_datetime_iso для даты и времени, current_year для года, chat_link для ссылки на диалог в кабинете, channel_name для кодового имени канала, instance_max_answer_tokens для лимита токенов на ответ.

Канальные переменные приносит подключённый канал: имя собеседника, его логин, а из CRM ещё и идентификатор сделки, этап воронки, сумму. Набор зависит от канала и не совпадает даже между похожими системами: entity_id в Битрикс24 и lead_id в amoCRM про одно и то же, но называются и выглядят по-разному. Устройство самих каналов раскрывают действия ИИ-агента; здесь достаточно помнить, что переменная, которой канал не передал значение, подставится пустой, и это стоит предусмотреть в инструкции отдельной фразой на случай пустоты.

3 вида системные, канальные и пользовательские переменные
2 режима фиксированные с проверкой и динамические через memorize
4 места куда ещё подставляется значение, кроме ответа клиенту
Источник: документация Савви, раздел «Переменные»

Куда ещё уходит значение, кроме ответа клиенту

Переменная подставляется в аргументы действий и вебхуков, причём прямо в строку URL запроса: идентификатор сделки из CRM превращается в часть адреса, по которому внешний сервис узнаёт, о какой именно сделке речь. Значение подставляется в текст фоллоу-апов, поэтому напоминание обращается к клиенту по имени и упоминает то, что он уже назвал. Оно участвует в условиях отбора диалогов для рассылок и в шаблонах уведомлений, так менеджер получает сообщение со ссылкой на конкретный чат вместо общего «кто-то написал».

Один раз узнанное значение переезжает во все эти места без повторного вопроса. Отдельно: движок шаблонов, который собирает инструкцию по условиям вроде дня недели или канала, пока в бета-тестировании — перед боевым запуском такую инструкцию стоит прогнать на тестовом диалоге.

Попросите агента показать, что он на самом деле запомнил

Есть простой способ увидеть, как переменные работают на практике, не читая руководство до конца: открыть тестовый диалог, назвать в нём имя, а через пару реплик спросить у агента то же самое, что он уже слышал. Если инструкция и переменные настроены верно, агент ответит по сохранённому значению без повторного вопроса: повторный вопрос означает, что значение никуда не записалось, и стоит проверить, какой функцией оно должно сохраняться.

Ровно так и начался один разбор: имя спросили дважды за один диалог, потому что фиксированная переменная стояла с типом «целое число» вместо «строка», и ни один ответ не проходил проверку формата. Правка одного поля убрала повторный вопрос полностью.

После проверки на тестовом диалоге откройте экспорт любого живого разговора: в шапке видно, какие переменные передал канал и что из них агент записал сам. По этому же экспорту удобно свериться, если следующий шаг — квалификация лида: там переменные читаются уже как ответы клиента, без привязки к технической стороне настройки.

Частые вопросы

Что такое переменная у ИИ-агента

Место, куда агент кладёт одно значение, узнанное в диалоге или полученное из канала, чтобы использовать его позже — в инструкции, в вызове функции или в вебхуке. Хранится строкой, числом или логическим значением в зависимости от того, как переменная создана.

Чем фиксированная переменная отличается от динамической

Фиксированная имеет тип и проверку формата: агент переспросит клиента, если ответ не подходит по виду. Динамическая хранит любую строку, которую сама модель сочтёт важной сохранить, без проверки формата.

Что будет, если клиент назвал дату в неправильном формате

Фиксированная переменная с типом не примет значение, и агент, следуя инструкции, попросит назвать дату ещё раз в нужном виде. Так на другом конце не окажется значения, которое сломает приём в CRM или внешнем сервисе.

Можно ли передать переменную во внешний сервис

Да, значения подставляются в аргументы действий и вебхуков, включая саму строку URL запроса. Для этого подходят фиксированные и системные переменные — у них известен тип и формат.

Куда ещё, кроме ответа клиенту, подставляются переменные

В текст фоллоу-апов, в условия отбора диалогов для рассылок и в шаблоны уведомлений. Один и тот же набор данных работает во всех этих местах без повторного запроса у клиента.

Что делает функция memorize

Записывает информацию в динамическую переменную по решению модели, без заранее заданного типа. Используется, когда важен смысл сказанного, а строгий формат значения не нужен.

Команда платформы СаввиПишем о том, как бизнес внедряет ИИ-агентов, на данных платформы. Обновлено 15 сентября 2026.
BLOG500
Собрать агента