Как агент решает, какую функцию вызвать, из каких полей состоит действие, какие типы шагов подтверждены в руководстве и что делать, если шаг вернул ошибку.
Действие — это шаг, который агент выполняет за пределами переписки: вызывает вебхук, обращается к таблице, переключает диалог на другого агента или создаёт ссылку на оплату. Какую функцию вызвать, агент определяет по описанию функции: название служит платформе только техническим идентификатором. Если шаг вернул ошибку или пустой ответ, дальше срабатывает правило, заданное заранее в настройках действия.
Агент подробно объяснил клиенту порядок возврата: куда обратиться, какие документы взять с собой, сколько ждать деньги на карту. Ответ был точным и вежливым, клиент поблагодарил и вышел из переписки. Заявку на возврат при этом никто не создал: такого шага в настройках агента просто не было, и вся работа осталась внутри диалога, откуда её ещё предстояло вручную перенести в CRM.
Разница проявляется не в качестве самого текста: она в том, добрался ли ответ до системы, где живут деньги и данные компании. Агент без действий работает с текстом переписки и базой знаний — что бы он ни написал, эта фраза останется внутри диалога. Агент с настроенными действиями умеет менять состояние других систем: создавать сделку в CRM, отправлять запрос в 1С, формировать ссылку на оплату, передавать разговор другому агенту.
Технически действие — это функция с именем, описанием и одним или несколькими шагами внутри неё. Модель вызывает такую функцию так же, как программист вызывает функцию в коде: с конкретными аргументами и ожиданием результата. Разница с обычным ответом ощутима именно на стороне бизнеса: после действия в CRM появляется новая сделка, и это происходит без участия человека.
Проверьте на своих диалогах.Регистрация без карты, 500 ₽ на тест по промокоду BLOG500
Собрать агентаРешение агент принимает по описанию функции — это единственное поле, которое объясняет модели смысл и момент применения шага. Название функции для семантики почти не используется: оно пишется латиницей с нижним подчёркиванием и служит техническим идентификатором, по которому платформа отличает одно действие от другого. Расплывчатое описание вроде «обработка запроса» агент понимает буквально так же плохо, как понял бы его новый сотрудник без пояснений.
У любого действия в Савви есть общий набор настроек, который заполняется независимо от того, что происходит внутри самих шагов.
| Поле | Что оно задаёт |
|---|---|
| Название действия | подпись для списка действий, служит только для ориентира при поиске |
| Название функции | идентификатор вызова: только латиница и нижнее подчёркивание |
| Описание функции | смысл и момент применения — по нему агент выбирает, вызывать ли шаг |
| Переменные действия (аргументы) | значения, которые агент собирает в диалоге и передаёт в шаг |
| Сообщение об ошибке | текст, который получит агент, если шаг завершится неудачно |
| Правила ответа агенту | из какого шага брать результат: из первого, из последнего или из всех |
Действие, настроенное для одного агента, переносится в другого через список действий: отметить нужное и нажать «Скопировать в агента». Полезно, когда несколько агентов компании обращаются к одному и тому же вебхуку или CRM: вебхук собирается один раз и расходится на всех, кому нужен.
Полный список настроек каждого типа — в разделе «Действия» руководства: здесь только те шаги, возможность которых подтверждена документацией на момент публикации.
| Тип шага | Когда он нужен |
|---|---|
| Вебхук (группа «API-вызовы») | обратиться к внешней системе по HTTP — своя CRM, база данных, любой сервис с собственным API |
| Чтение ссылок | получить содержимое веб-страницы по ссылке из диалога |
| Извлечь текст из файла | вытащить текст из документа, который прислал клиент: docx, pdf, rtf, txt и другие форматы |
| Отправить сообщение | выслать клиенту фиксированный или собранный по шаблону текст отдельным шагом действия |
| Вызов таблицы | подставить в ответ данные, которые быстрее и дешевле держать таблицей, чем внешним запросом |
| Вызов подчинённого агента / переключение действующего агента | разделить одну инструкцию между несколькими агентами |
| ЮKassa | сформировать ссылку на оплату и получить колбэк о её статусе |
Про связку с 1С через вебхук — с примером готового запроса и авторизацией — рассказано отдельно в статье про ИИ-агента и 1С: здесь эту настройку разворачивать незачем, принцип для любого вебхука одинаковый. Разница между вызовом подчинённого агента и переключением действующего агента разобрана в статье про систему из нескольких агентов — коротко: первый вариант поручает задачу и получает результат назад, второй передаёт диалог целиком.
Отдельно стоят шаги, которые появляются только внутри конкретной CRM-интеграции: Битрикс24 и amoCRM показывают в действии свои функции — создать контакт, изменить сделку, отправить сообщение в заметку. Как выглядит такая связка целиком, показано в статье про чат-бота и CRM.
Срабатывает то, что записано в поле «Сообщение об ошибке» конкретного шага — именно этот текст агент получит вместо ответа от внешней системы. Дополнительно можно включить флаг «Останавливать диалог при ошибке», и тогда агент вообще прекращает попытки продолжить разговор без результата, вместо того чтобы импровизировать дальше.
Без явного правила в инструкции модель на пустой или ошибочный ответ иногда реагирует правдоподобным текстом — заполняет пробел похожей на правду версией событий вместо честного «данные недоступны». Разбор того, откуда берётся эта привычка модели и как её остановить, есть в статье почему ИИ-агент выдумывает. Рабочее решение простое: прямо в инструкции указать, что при ошибке или пустом результате функции агент сообщает клиенту о временной недоступности данных и предлагает оставить контакт для обратной связи.
Лимит на одну функцию — десять вызовов за диалог, общий для платформы и не подстраивается индивидуально под задачу. Сценарий, где агент дёргает три системы на каждую реплику клиента, упирается в этот потолок раньше, чем кажется на этапе проектирования.
Отдельной строки расходов на вызов действия нет: считается общий диалог, тысяча токенов стоит 1 ₽, а обычный диалог с обращением во внешнюю систему обходится примерно в 15 ₽ — независимо от того, сколько шагов внутри него отработало.
Пройдите список настроенных действий и отметьте те функции, у которых описание короче одного предложения. Именно они обычно вызываются реже, чем должны бы, потому что агент при выборе шага опирается на этот текст, а других подсказок у него нет. Перепишите описание для одной такой функции сегодня и сравните частоту её вызовов в диалогах за неделю до и после правки — разница будет заметна без сложной аналитики.
По описанию функции. Это поле объясняет модели смысл шага и момент, в который его стоит применить. Название функции для этого почти не используется: оно нужно системе как технический идентификатор вызова, а подсказкой для агента служит именно описание.
Такое ограничение платформы: название функции допускает только символы английского алфавита и нижнее подчёркивание. Смысл действия целиком несёт описание функции: его можно и нужно писать подробно и по-русски.
Зависит от настройки «Правила ответа агенту»: можно передать ответ только первого шага, только последнего или сразу всех. По умолчанию берётся последний шаг: подходит для сценария, где первые шаги служебные, а результат формирует финальный запрос.
Десять раз. Лимит общий для платформы и не настраивается индивидуально, поэтому сценарий, где агент обращается к нескольким системам на каждую реплику клиента, упирается в этот потолок быстрее, чем кажется на старте.
То, что прописано в поле «Сообщение об ошибке» этого шага. Если инструкция агента отдельно не описывает такой случай, модель может попытаться заполнить пробел правдоподобным текстом. Это стоит закрыть прямым указанием сообщить о недоступности данных.
Да, через список действий: отметить нужное, нажать «Скопировать в агента» и выбрать агента-получателя из уже созданных на платформе. Это быстрее, чем собирать вебхук заново для каждого нового агента с похожей задачей.
Хотите сразу к продукту: Разработка чат-ботов для бизнеса