Анализ данных в таблице через внешние сервисы (опция apiSendDataOptions)
Таблица может выдать некую выборку на внешний сервис через API для анализа (например, в AI чат с неким промптом).
Смотреть демостенд - https://demo.falconspace.ru/list/watch/tablica-s-ai-analizom-dannykh---1165
Как настроить:
В SELECT 3 таблицы прописываем настройку apiSendDataOptions:
-- SELECT 3 в GetItems компонента Таблица
select '
[{
"enable": true,
code: "x1",
"btnText":"AI Анализ",
"btnClass":"",
dialogTitle: "Вопрос к AI по данным таблицы",
desc: "Задайте свой вопрос по выборке из таблицы",
defaultText: "Укажи ключевые особенности, на которые надо обратить внимание",
dialogButtonText : "",
apiCode:"ds-concept" ,
guid : "'+convert(nvarchar(60), newid())+'" ,
format:"json" ,
additional: "Ответ максимально краткий и быстрый, на русском языке, с шутками"
}
]
' ApiSendDataOptions
Можно добавить несколько кнопок отправки данных на обработку.
Примечание: отправлять данные можно не только в AI, но и создать свои сервисы, куда будет отправлена выборка и получен ответ.
Параметры:
- apiCode - профиль API, который будет использоваться для обработки
- additional - для AI это системный промпт, который пользователь не видит, но он влияет на отклик внешней системы. Здесь также можно дать комментарии к столбцам таблицы.
- code - по сути идентификатор кнопки в таблице.
- btnText - текст кнопки
- btnClass - css классы для стилизации кнопки
- dialogTitle - заголовок диалогового окна
- dialogButtonText - текст кнопки отправки запроса в диалоговом окне.
- desc - начальное описание в диалоговом окне
- defaultText - текст по умолчанию в поле ввода промпта (или доп текста для отправки API запроса)
- enable - включена или выключена возможность работы кнопки
- format - в каком формате передавать данные таблицы? xml, csv, json
- guid - уникальный идентификатор сессии
Также в системе должен быть реализована SP для обработки запроса (вызов внешнего API и выдача результата).
Для AI подсистемы (нужно ставить SQL пакет) можно использовать такой метод:
CREATE PROCEDURE [dbo].[request_crud_apiSendData]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
declare @tableCode nvarchar(max) = isnull((select value2 from @parameters where [key]='tableCode'), '') -- код таблицы
declare @tableItemID nvarchar(max) = isnull((select value2 from @parameters where [key]='tableItemID'), '') -- itemID у таблицы
declare @data nvarchar(max) = isnull((select value2 from @parameters where [key]='data'), '') -- данные таблицы в нужном формате
declare @mode nvarchar(max) = isnull((select value2 from @parameters where [key]='mode'), '') -- apiSendRequest:json||col1,col2 ...
declare @text nvarchar(max) = isnull((select value2 from @parameters where [key]='text'), '') -- что ввел юзер в текстовое поле
declare @apiSendDataCode nvarchar(max) = isnull((select value2 from @parameters where [key]='apiSendDataCode'), '') -- код кнопки ApiSendData
declare @apiCode nvarchar(max) = isnull((select value2 from @parameters where [key]='apiCode'), '') -- профиль API (но не код исх метода API)
declare @additional nvarchar(max) = isnull((select value2 from @parameters where [key]='additional'), '') -- сист промпт
declare @g uniqueidentifier= isnull((select try_convert(uniqueidentifier, Value2) from @parameters where [key]='g'), '') -- указывает сессию вызова (лог AI guid)
-- ДАЛЕЕ ИДЕТ ВЕРСИЯ ПОД ПРОФИЛЬ AI
declare @profileID int , @apiProfileCode nvarchar(max)
select @profileID = id , @apiProfileCode = apiCode
from as_apiProfiles where code = @apiCode
insert into as_apiProfileLog(profileID, createdBy, created, request, requestAdditional, response, g)
values(@profileID, @username, getdate(),
@text, iif(len(@additional)>0, 'Системный промпт: '+@additional + char(10)+char(10) , '') + @additional , '' , @g)
declare @logID int = SCOPE_IDENTITY()
insert into as_trace(code, header, text, username, created)
select 'apisenddata', try_convert(nvarchar(128), @g), @text, @username, getdate()
-- SELECT 1
select 1 Result, 'OK' Msg
-- SELECT 2
select 1
-- SELECT 3 АПИ ЗАПРОС
select 'apirequest' type, @apiProfileCode code,
'text' p1_name, isnull(@text, '') + isnull(@data , '') p1_value,
'systemPrompt' p2_name, @additional p2_value,
'g' p3_name, convert(nvarchar(128),@g) p3_value,
'profile' p4_name, @apiCode p4_value
END
Таким образом для пользователя сильно упрощается задача анализа данных: нажал кнопку, выбрал столбцы, написал запрос что хочет получить от этих данных - получил отклик.
Нюансы:
- Передача большого объема данных - это затраты на токены AI, т.е. лучше передавать только выборки по нужным данным, а не все подряд.
- Системный промпт для AI важно сформулировать правильно, иначе могут быть задержки с ответом. Или AI может не так понять ваши данные (ему передаются в JSON коды полей, а не названия полей).
- Для AI обработки необходимо добавлять внешнюю надстройку с профилями AI либо делать какую-то свою обработку (исходящий API запрос).
Страница-источник на сайте falconspace.ru
-
Начало работы
-
Основа Falcon Space
-
Руководства
-
Возможности
-
Коммуникация пользователей
-
Таблицы
Работа с таблицами Вывод данных в таблице - getItems Редактирование данных в колонках таблицы - updateField Удаление строки в таблице - deleteItem Создание строки в таблице - FastCreate Операции в таблице - на строку, групповые операции Настройка параметров таблицы Фильтрация данных в таблице Настройка колонок таблицы Настройка сниппета таблицы Как сделать сортировку в таблице Как реализовать подтаблицу (вложенная таблица), подформу в таблице Как сделать таблицу в модальном окне (открывается в диалоговом окне) Как связать 2 таблицы Кастомная разметка в таблице Выгрузка данных таблицы в XML, JSON, CSV JS коллбеки для таблицы Загрузка таблицы по ссылке Как связать таблицу и редактирование сущности (зависимая страница). Master-slave Как использовать комментарии в таблицах Как добавить в фильтре значение Не выбрано со значением Как установить ширину колонки в таблице Как добавить диапазон даты или чисел (слайдер) в фильтр Как сделать операции только для некоторых строк Как делать различный набор столбцов одной таблицы для разных ролей Как сделать Editable для галочки (Да/Нет) в AS CRUD Как редактировать колонку с датой Как скрыть строчные операции в таблице для определенных строк Как добавить коллбек после загрузки таблицы Отображение таблиц на смартфоне Как работать с галочками в таблице Частые ошибки при настройке таблицы (почему не работает таблица) Как обновить подтаблицу после выполнения некой операции Как обрабатывать групповые операции через модальную форму Как создать предустановленные фильтры для таблицы Как убрать показ количества строк результата в заголовке таблицы? Как сделать сворачивание таблицы (collapse table) Как убрать старые dict процедуры в формах и таблицах Как сделать фильтр с деревом галочек Как отключить сохранение состояния таблицы (фильтры) Как сделать ссылку на всю строку таблицы Как передать через URL значение фильтра Как сделать обрезание ячеек таблицы Сортировка строк в таблице Создание сущности с учетом значений фильтров Оптимизация запроса SQL - извлечение данных для таблицы Режим кастом вывода через JS (custom) Как настроить дополнительные шапку и подвал у таблицы Как сделать зависимые фильтры в таблице Импорт данных в формате файлов txt, csv, excel через компонент Таблица Как гибко управлять видимостью столбцов таблицы Как сделать раскрытие подстроки в таблице через любую ссылку Режим быстрой фильтрации строк без обращения на сервер Выпадающая панель рядом с названием таблицы dropdownPanel Как убрать при загрузке установку фокуса ввода на фильтр (data-nofocus)? Как сделать аналитику по периодам (таблица с интервалами дат) Кастомизация вида операций таблицы Стилизация фильтров таблицы Анализ данных в таблице через внешние сервисы (опция apiSendDataOptions)
-
Формы
-
Поля формы
-
Лендинги
-
Дизайн, стилизация, юзабилити
-
Интеграции
-
Универсальный API
-
Каталоги
-
Навигация
-
Документы
-
Дополнительные компоненты
-
Продвижение, SEO
-
Системные моменты
-
Системное администрирование
-
HOWTO
-
Загрузка файлов, картинок
-
HOWTO SQL
-
HOWTO JS
-
HOWTO Верстка
-
Решение проблем
-
Советы по реализации