13 | Документация

Добавление сервиса с новыми функциями

Виртуальный помощник по умолчанию использует доступные функции, указанные в п. 11 .
Если вам недостаточно имеющихся доступных функций для использования виртуального помощника, вы можете запрограммировать свои функции.
Функции, написанные на JavaScript, добавьте во вкладку HTML-кастомизация (см. п. 10.10 ). При этом в настройках ИИ-ассистента должна быть отмечена опция Разрешить использование кастомных функций из конструктора (см. п. 11.1 ).
DLL-библиотеку с функциями, написанными на C#, предварительно необходимо загрузить на ГИС-сервер.
Для дополнительной настройки запрограммированных функций вы можете:
  • создать и заполнить таблицу ваших новых функций (см. п. 11.2.1 );
  • создать и заполнить таблицу параметров новых функций (см. п. 11.2.2 );
  • опубликовать картографический сервис, содержащий эти таблицы;
    1. прописать при необходимости в таблице ваших функций имена настроенных ИИ-ассистентов, которым будут доступны настроенные функции (в поле engines );
    2. указать опубликованный сервис и сформированные таблицы в настройках ИИ-ассистентов (см. п. 11.2.3 ).
Для функций, написанных на C#, настройка картографического сервиса с таблицами функций и параметров функций необходима.
Теперь виртуальный помощник может использовать и ваши новые функции при ответе на запросы пользователей.
Обратите внимание, что запрограммированные функции должны возвращать в результате объект со следующими параметрами:
{
ok: true, // true -- функция успешно выполнена, false -- не успешно
data?: "ответ" // Ответ для агента, может быть как строкой, так и объектом,
error?: "ошибка" // в случае ошибки здесь можно указать на ошибку для агента
}

Создание таблицы функций

Таблица функций должна содержать следующие поля:
  • uid - тип GUID - уникальный идентификатор функции;
  • name - тип строка (String) - имя функции, заданное латиницей;
    Указывается имя JavaScript-функции, используемое в коде функции (пример имени см. в п. 10.10 ). По этому имени виртуальный помощник обращается к функции.
  • description - тип строка (String) - описание функции;
  • prompt_addition - тип строка (String) - дополнительный промпт для запуска функции;
  • is_final - тип Да/Нет (Boolean) - нужно ли запоминать контекст запроса после выполнения функции (значение Нет ) или контекст должен быть потерян (значение Да );
  • maps - тип строка (String) - идентификаторы ( ID ) карт, в которых можно использовать функцию;
    Идентификаторы карт указываются через запятую. Если поле не заполнено, функция может использоваться в любой карте.
  • languages - тип строка (String) - язык пользователя;
    Если поле не заполнено, функция применяется со всеми языками. Для ответа используется язык локали пользователя.
    Пример: ru .
  • engines - тип строка (String) - имена ИИ-агентов, которые могут использовать функцию;
    Имена указываются через запятую. Если поле не заполнено, функция может использоваться с любым ИИ-агентом.
  • dll_path - тип строка (String) - путь до DLL-библиотеки на ГИС-сервере, в которой содержится функция;
    Используется только для функций, написанных на C#.
    DLL-библиотека предварительно должна быть загружена на ГИС-сервер.
    Путь можно указывать полный (локальный) или относительный (относительно папки Customer на ГИС-сервере).
  • executor - тип строка (String) - тип обработчика функции;
    На поле должен быть наложен домен со следующими парами «код-значение»:
    • dotnet - Сервер (.NET);
      Используется для функций, написанных на C#.
    • javascript - Клиент (JavaScript);
      Используется для функций, написанных на JavaScript.
  • net_function_name - тип строка (String) - полное имя функции в DLL-библиотеке.
    Используется только для функций, написанных на C#.
Таблицу функций можно создать вручную.
Для создания таблицы в базе данных СУБД PostgreSQL вы можете использовать следующий скрипт:
CREATE TABLE ai_function_calling.ai_functions
(
oid serial PRIMARY KEY,
uid uuid NOT NULL DEFAULT public.gen_random_uuid(),
maps character varying(255),
name character varying(255) NOT NULL,
description text NOT NULL,
prompt_addition text,
engines text,
languages text,
is_final boolean NOT NULL DEFAULT true,
dll_path text,
executor text,
net_function_name text
);
Заполните таблицу. Опубликуйте на ГИС-сервере картографический сервис с подготовленными таблицами функций и параметров функций.

Создание таблицы параметров функций

Таблица параметров функций должна содержать следующие поля:
  • uid - тип GUID - уникальный идентификатор параметра;
  • function_uid - тип GUID - идентификатор функции, где используется параметр;
  • name - тип строка (String) - имя параметра, заданное латиницей;
    Указывается имя параметра, используемое в коде функции (пример имени параметра см. в п. 10.10 ).
  • description - тип строка (String) - описание параметра;
  • value_type - тип строка (String) - тип параметра;
    На поле должен быть наложен домен со следующими парами «код-значение»:
    • string - Строка;
    • enum - Выбор;
    • integer - Целое число;
    • number- Дробное число;
    • boolean - Да/Нет;
  • is_array - тип Да/Нет (Boolean) - набор значений или нет;
  • required - тип Да/Нет (Boolean) - обязательный параметр или нет;
  • default_value - тип строка (String) - значение параметра по умолчанию;
  • acceptable_values - тип строка (String) - допустимые строковые значения параметра$
  • format - тип строка (String) - формат строки;
  • pattern - тип строка (String) - шаблон строки в формате regex;
  • min_length - тип целочисленное (Integer) - минимальная длина строки;
  • max_length - тип целочисленное (Integer) - максимальная длина строки;
  • min_value - тип строка (String) - минимальное значение параметра;
  • max_value - тип строка (String) - максимальное значение параметра;
  • min_value_count - тип целочисленное (Integer) - минимально допустимое количество значений параметра;
  • max_value_count - тип целочисленное (Integer) - максимально допустимое количество значений параметра.
Таблицу параметров функций можно создать вручную.
Для создания таблицы в базе данных СУБД PostgreSQL вы можете использовать следующий скрипт:
CREATE TABLE ai_function_calling.ai_function_properties
(
oid serial PRIMARY KEY,
uid uuid NOT NULL DEFAULT public.gen_random_uuid(),
function_uid uuid,
description text,
required boolean NOT NULL DEFAULT false,
value_type character varying(50),
default_value character varying(255),
min_value text,
max_value text,
max_value_count integer,
acceptable_values text,
name character varying(255) NOT NULL,
min_length integer,
max_length integer,
pattern text,
format text,
min_value_count integer,
is_array boolean NOT NULL DEFAULT false
);
Заполните таблицу. Опубликуйте на ГИС-сервере картографический сервис с подготовленными таблицами функций и параметров функций.

Настройка сервиса функций

После подготовки таблиц и публикации картографического сервиса на ГИС-сервере перейдите в меню Администрирование > Настройки > ИИ-ассистенты (function calling) .
В группе параметров Зарегистрированные функции определите (см. Рисунок 720 ):
  • URL сервиса - выберите картографический сервис, в котором содержатся слои таблиц функций и таблиц параметров функций;
  • Таблиц функций - выберите из выпадающего списка слой таблиц функций;
    Вы можете ограничить используемые функции, задав определяющий запрос по кнопке .
  • Таблиц параметров функций - выберите из выпадающего списка слой параметров функций.
    Вы можете ограничить используемые параметры, задав определяющий запрос по кнопке .
Теперь виртуальный помощник может использовать и ваши новые функции при ответе на запросы пользователей.
Рисунок 720 - Определение зарегистрированных функций