Функции AI-ассистента
В этой статье вы узнаете о возможностях AI-ассистента и увидите, как их можно применять на практике.
Как удалить историю чата с ИИ-ассистентом
clear_assistant_chat_history() — эта функция удаляет историю чата клиента с ассистентом. Она не принимает параметров.
Пример
Настройки блока конструктора

Настройки вкладки ИИ-ассистента

Как отправить вопрос ИИ-ассистенту
ai_context_answer(replica, prompt, ai_assistant_id, use_history, send_answer)
Параметры:
! replica
обязательный параметр, сообщение для ассистента
prompt
необязательный параметр, инструкции для ассистента
если параметр не указан, но указан параметр ai_assistant_id, будут использованы инструкции из настроек указанного ассистента
ai_assistant_id
ID ассистента, которому будет отправлен вопрос;
если не указан, будет использован ассистент без настроек по умолчанию
use_history
должен ли ассистент использовать историю чата при ответе на вопрос
True — использовать, False — не использовать. По умолчанию — True
send_answer
отправить ответ после истечения тайм-аута ассистента
Чтобы включить, передайте "1"
Подробнее о 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 в сообщение второго блока.

Настройка блока завершена.
Если ассистент не включён, перейдите на вкладку "AI Assistant" и включите ассистента, выбрав роль "disabled":

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

Бот сработал корректно.
Как работать с Google Sheets
get_info_from_table(sheet_id, number_sheet, sheet_json_keys, start_row, end_row, start_col, end_col) — эта функция предназначена для чтения данных из таблицы.
! sheet_id
id google-spreadsheet
number_sheet
номер листа в таблице; по умолчанию = 1
sheet_json_keys
необязательный параметр — ключ доступа к данным таблицы
start_row
необязательный параметр, целое число. Указывает начало диапазона строк.
Укажите номер строки, с которой следует читать значения таблицы включительно. Значение нужно передавать без кавычек.
end_row
необязательный параметр, целое число. Указывает конец диапазона строк. Укажите номер строки, до которой следует читать значения таблицы включительно. Значение нужно передавать без кавычек.
start_col
необязательный параметр, строка. Указывает начало диапазона столбцов. Укажите букву столбца, с которого следует читать значения таблицы включительно. Значение должно быть заключено в кавычки
end_col
необязательный параметр, строка. Указывает конец диапазона столбцов. Укажите букву столбца, до которой следует читать значения таблицы включительно. Значение должно быть заключено в кавычки.
Пример обозначения параметров:


Обратите внимание
Параметры для указания диапазона строк и столбцов (start_row, end_row, start_col, end_col) позволяют ассистенту читать данные таблицы, начиная с нужного места внутри таблицы.
Поведение функции при частичном указании диапазона следующее:
Если указано только начало: ассистент получит все данные от этой начальной точки и далее, без верхнего предела в указанном направлении.
Если указан только конец: ассистент будет читать данные с начала листа до указанной конечной точки.
Пример:
Вызов get_info_from_table('<<spreadsheet id>>', 2, None, 2, 5, 'a', 'd') получает все данные, начиная со строки 2, столбца 2 (B), до строки 5 и между столбцами A и D.
Обратите внимание
Для оптимизации производительности и надёжности мы рекомендуем кэшировать все данные из Google Sheet в переменные проекта при работе с ним.
Ключевые преимущества:
Повышенная производительность: значительно ускоряет время ответа чат-бота за счёт использования локальных переменных вместо обращения к внешней таблице при каждом запросе.
Повышенная надёжность: минимизирует ошибки, связанные с сетевой задержкой, квотами API или правами доступа к таблице.
Согласованность данных: хранение данных в настройках проекта обеспечивает одновременный и согласованный доступ для всех пользователей к одному и тому же набору данных, предотвращая расхождения при обновлениях.
Пример использования
Подробнее о get_info_from_table функции можно прочитать в статье "Google Sheets для AI Assistant."
Как управлять онлайн-бронированиями
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) создаёт запись в системе, используя данные, предоставленные ИИ-ассистентом. Она принимает три обязательных параметра для создания бронирования:
! service_name
обязательный параметр, название услуги
! date
дата в формате dd.mm.yyyy
! date_time
время услуги в формате hh:mm
company_id
ID филиала, необязательный. Если указан, бронирование будет создано для услуги с заданным названием, которая относится к этому конкретному филиалу. Этот параметр может быть необходим в случаях, когда в нескольких филиалах есть услуги с одинаковым названием.
Поскольку информация о доступных слотах больше не будет актуальной, для обновления доступных дат и времени бронирования используется та же переменная со встроенной функцией.

Обратите внимание
Если в расписании, сотрудниках или услугах есть изменения, запустите блок, содержащий переменную проекта со встроенной функцией, в тестовом режиме (см. рис. Блок 1).
Получение бронирования из таблицы
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
необязательный параметр, строка. Указывает конец диапазона столбцов.
Укажите букву столбца, до которой следует читать значения таблицы включительно. Указывается в кавычках.
Если указано только начало диапазона строк или столбцов, все данные от этой точки и далее будут получены без верхнего предела диапазона. Аналогично, можно опустить начало и указать только конец диапазона.
Пример (калькулятор)
Если вам нужно получить записи из таблицы, откройте раздел "Калькулятор" в настройках блока и введите функцию с нужными параметрами.

Чтобы передать параметры как переменную проекта, добавьте перед именем переменной, содержащей функцию, префикс project.

Вот пример таблицы.

Бот ответит следующим образом.

Последнее обновление