Falcon Space - платформа для создания сайтов с личными кабинетами
Анализ данных в таблице через внешние сервисы (опция 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 запрос).
Связанные статьи
— Оптимизация запроса SQL - извлечение данных для таблицы— Выполнение запросов SQL из кабинета админа
— Как быстро просматривать типовые отчеты с возможностью редактирования SQL
— Как улучшить свой код - заметки по ревизии кода
— Как сделать аналитический отчет или таблицу на сайте
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта