Анализ данных в таблице через внешние сервисы (опция 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, но и создать свои сервисы, куда будет отправлена выборка и получен ответ. 

Параметры: 

Также в системе должен быть реализована 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

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

Нюансы: 

Страница-источник на сайте falconspace.ru