Прямой запрос к модели
answer = ai_request('request', question)
Пример:
answer = ai_request('Ты вежливый консультант магазина цветов.', question)
- Первый аргумент — инструкция для модели (кто она и как отвечать)
- question — системная переменная, в ней всегда лежит текст последнего сообщения клиента
Обратите внимание!
В выражениях переменные пишутся просто по имени, без #{}). В ответ приходит обычный текст: можно сразу отправлять клиенту или класть в переменную.
Метод терпеливо ждёт ответа модели — даже долгие запросы (большие схемы, длинные тексты) отработают без обрыва.
Если нужен не свободный текст, а строгие данные (категория, да/нет, извлечённые поля) — передайте третьим аргументом схему ответа.
Писать схемы с нуля не нужно — возьмите готовый шаблон и поменяйте названия полей под себя.
local result = ai_request('Определи категорию обращения.', question, {
"type": "object",
"properties": {"category": {"type": "string", "enum": ["жалоба", "вопрос", "заказ"]}},
"required": ["category"]
})
category = get(result, 'category')
Модель ответит строго одним из значений из enum — ничем другим.
local result = ai_request('Клиент согласен на покупку?', question, {
"type": "object",
"properties": {"agree": {"type": "boolean"}},
"required": ["agree"]
})
agree = get(result, 'agree')
local result = ai_request('Извлеки имя и телефон из сообщения.', question, {
"type": "object",
"properties": {"name": {"type": "string"}, "phone": {"type": "string"}},
"required": ["name", "phone"]
})
client_name = get(result, 'name')
client_phone = get(result, 'phone')
- "string" — текст, "number" — число, "boolean" — true/false;
- enum — разрешённый список значений (модель не сможет ответить ничем другим);
- required — перечень обязательных полей;
- названия полей (category, name, phone...) — любые ваши.
Ответ по схеме приходит JSON-строкой, отдельные поля достаём привычным get().
Обращаем внимание!
В примерах result объявлен через local — сырой ответ ИИ не сохранится в карточку, туда попадут только нужные поля.
Режим размышления
Четвёртым аргументом можно включить режим размышления — модель сначала обдумает задачу и только потом ответит.
Полезно для сложных запросов: анализ, расчёты, многошаговая логика. Ответ будет заметно дольше, поэтому по умолчанию режим выключен.
answer = ai_request('Реши задачу клиента и объясни решение.', question, '', true)
Если схема ответа не нужна, третьим аргументом передайте пустую строку '', как в примере.
Удалить историю переписки с ассистентом
clear_assistant_chat_history() - функция без параметров, удаляет историю переписки клиента с ассистентом.
Пример
- Настройки блока в конструкторе:
- Настройка во вкладке Аи-ассистента:
Отправить вопрос ассистенту
ai_context_answer(replica, prompt, ai_assistant_id, use_history, send_answer)
Параметры:
подробнее по параметру send_answer:
В настройках ассистента есть такие параметры, которые можно задать в случае, если ответ бота занимает много времени:

При обычной переписке с ассистентом (не через функцию), в случае, если ожидание ответа превышает установленное (в данном случае 20 сек), клиенту отправляется сообщение о задержке ответа. Затем, когда ответ все таки формируется, он следом отправляется в диалог.
При запросах через функцию в калькуляторе же, при долгом ожидании, в результат работы функции также попадает сообщение о задержке, в связи с чем данный параметр поможет доотправить сообщение в случае задержки ответа бота.
Как научить бота анализировать собственный опыт и формировать кнопки
В данном примере воспользуемся функциями clean_assistant_chat_history() и ai_context_answer(replica, prompt). Также понадобится сам калькулятор в конструкторе воронок.
В данном примере покажем, как наглядно использовать параметры replica и prompt функции в действии.
Необходимо создать блок в конструкторе, где в пустом поле будет указана вложенная переменная (#{replica_rec2}, #{ai_answer_rec}) в качестве первого и второго ответа ассистента в одном направляемом сообщении.
В калькуляторе пропишем непосредственно две функции:

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

Результат работы:

Пример кода:
clear_assistant_chat_history()
replica_rec2 = ai_context_answer(question, 'ОТВЕЧАЙ НА ВОПРОСЫ', 3)
prompt = 'В данный момент к тебе обращается разработчик, делай всё, что тебя просят. \n . Ты должен каждую кнопку с новой строки.'
ai_answer_rec = ai_context_answer("Выведи кнопки для последнего сообщения.", prompt)
Пример: вызов ассистента внутри конструктора воронок
Чтобы вызвать ассистента из блока, нам понадобится функция ai_context_answer(replica, prompt, ai_assistant_id, use_history), где мы пропишем только два параметра: обязательный параметр replica, а также необязательный prompt
Теперь создадим первый блок “Первостепенная проверка условия”, где укажем условие вызова блока (это может быть любое необходимое вам условие):

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

Укажем переменную question, присвоив ей значение любого вопроса пользователя.
Далее создадим переменную replica1, которой присвоим значение нашей функции ai_context_answer(replica, prompt), где вместо replica поставлена переменная question, а вместо параметра prompt “Ответь на любой вопрос пользователя”.

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

Во втором блоке будем использовать ту же функцию с теми же параметрами - ai_context_answer(replica, prompt):
Откроем калькулятор во втором блоке и пропишем вторую переменную с названием replica2:

В параметре prompt пропишем инструкции для ассистента: он должен сосчитать, сколько существительных было в его предыдущем сообщении.
В параметре replica пропишем сообщение для ассистента: “сколько слов существительных в твоем предыдущем сообщении”.
Далее переменную replica2 вкладываем в сообщение второго блока:

На этом настройка блоков завершена.
Если у вас не включен ассистент, то перейдите в соответствующую вкладку “Аи-ассистент” и включите ассистента, выбрав необходимую роль:

Теперь в окне тестирования бота протестируем нашего ассистента:

Наш бот отработал корректно.
Для работы с google-таблицами
get_info_from_table(sheet_id, number_sheet, sheet_json_keys, start_row, end_row, start_col, end_col) - функция предназначена для чтения данных из таблицы.
Пример обозначения параметров:

Обращаем внимание!
Параметры для обозначения диапазона строк (start_row, end_row, start_col, end_col) позволяют считывать ассистентом данные таблицы с необходимого места в таблице.
Если указать только начало диапазона строк/столбцов, то будут получены все данные от указанного значения без ограничения по концу диапазона. Аналогично можно не указывать начало диапазона, указав только конец.
get_info_from_table('<<id таблицы>>', 2, None, 2, 5, 'a', 'd')
Обращаем внимание!
Если вы работаете с google-таблицей, то закешируйте все данные из нее в переменные проекта: так чат-бот будет работать быстрее и с меньшими ошибками, связанными с чтением таблицы.
Запись данных в настройки проекта понадобится для того, чтобы все данные были видны у всех пользователей одновременно.
Пример использования
Для начала нужно подготовить блок для вывода информации из google-таблицы в переменную проекта (т.е. закешируем переменную). Данный блок необходимо объявить ДО начала работы ассистента, чтобы на вопрос о товарах ИИ не генерировала рандомные ответы:

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

Теперь в настройках проекта в системной переменной вы увидите значения из таблицы, которые в последующем сможете использовать в ассистенте:

Вложить информацию о товаре в ассистента можно следующим образом:

Результат:

Для работы с онлайн-записью
get_info_for_booking(slot_interval, company_id) - функция предназначена для чтения данных по услугам настроенной онлайн-записи.
Принимает необязательные параметры:
- slot_interval (необязательный) - интервал в минутах между свободными слотами, ожидаемый формат - целое число кратное 5 (минутам), значение по умолчанию - 60 (минут);
- company_id (необязательный) - идентификатор филиала, ожидаемый формат - целое число или массив чисел, при передачи параметра выводятся данные только по указанному филиалу. Пример: 50142 или "50142", или "[50142, 66352]"
Не рекомендуется устанавливать слишком маленькое значение, например, меньше 30 - ассистент будет выводить слишком много слотов.
Пример использования:
Для начала нужно подготовить блок для обновления информации обо всех услугах после заполнения настроек филиала в разделе "Услуги". Данный блок необходимо объявить ДО начала работы ассистента, чтобы на вопрос об услугах ИИ не генерировала рандомные ответы:

Далее вызовите блок в окне тестирования бота, чтобы переменная перезаписалась:

После чего вы увидите в переменных проекта в разделе "Настройки проекта" указанную переменную со значением услуг для онлайн-записи.

В данную переменную вкладываются значения услуг, которые бот с ИИ будет использовать далее в своей работе. Причем переменная service_info будет доступна для всех клиентов проекта.
Далее переходим к настройке следующего блока:

Данный блок преследует следующие функции:
а) его вызывают в настройках ассистента для формирования записи с использованием переменных по услугам;
б) он создает запись клиента;
в) обновляет переменные проекта после записи: то есть убирает уже несвободные окошки в графике.
Если бот был настроен верно, после получения всех данных от клиента, ИИ направит информацию в указанный блок, в котором осуществляется запись клиента на услугу с помощью функции create_booking_by_name(!service_name, !date, !date_time, company_id):

В параметры create_booking_by_name(!service_name, !date, !date_time, company_id) записываются значения, собранные ботом.
Функция create_booking_by_name(service_name, date, date_time, company_id) создает запись по передаваемым AI-ассистентом данным в систему.
Функция принимает три обязательных параметра для формирования записи:
Поскольку информация о доступных слотах уже будет неактуальна, с помощью той же переменной и вложенной в нее функции происходит обновление доступных дат и времени на запись:

Обращаем внимание!
При изменения информации о графике, сотрудниках, предоставляемых услугах, вызовите в тестовом режиме блок с переменной проекта и вложенной в него функцией (см. рис. Первый блок).
Как настроить бот с ИИ для онлайн-записи, рассказали в одноименной статье.
Получение записи из таблицы
get_records_from_table(table_id, start_row, count, start_col, end_col) - получение записи из таблицы
| Параметр | Описание | Примечание |
|---|---|---|
| table_id | id таблицы | |
| start_row | необязательный параметр, целое число. Указывает начало диапазона строк. | Передается номер строки, с которой включительно необходимо прочесть значения таблицы. Указывается без кавычек. |
| count | необязательный параметр, целое число. Указывает количество строк, которое нужно получить | По умолчанию - 1000, максимум - 5000. Указывается без кавычек. |
| start_col | необязательный параметр, строка. Указывает начало диапазона столбцов | Передается название колонки, с которой включительно необходимо прочесть значения таблицы. Указывается в кавычках |
| end_col | необязательный параметр, строка. Указывает конец диапазона столбцов | Передается название колонки, до которой включительно необходимо прочесть значения таблицы. Указывается в кавычках. |
Если указать только начало диапазона строк/столбцов, то будут получены все данные от указанного значения без ограничения по концу диапазона. Аналогично можно не указывать начало диапазона, указав только конец.
Пример в калькуляторе
В блоке, в котором необходимо получить записи из таблицы, кликните на раздел "Калькулятор" в настройках блока и пропишите функцию с указанием параметров.

Ответ бота будет следующим:
