AIAssistant
TsgcHTMLAIAssistant: 일상 언어로 입력한 질문을 그리드, 데이터 테이블, 피벗 또는 폼을 위한 검증된 작업 집합으로 변환하며, Delphi, C++ Builder 및 .NET에서 사용할 수 있습니다. 데이터셋을 건드리지 않고, SQL을 만들지 않으며, HTML을 출력하지 않습니다.
TsgcHTMLAIAssistant: 일상 언어로 입력한 질문을 그리드, 데이터 테이블, 피벗 또는 폼을 위한 검증된 작업 집합으로 변환하며, Delphi, C++ Builder 및 .NET에서 사용할 수 있습니다. 데이터셋을 건드리지 않고, SQL을 만들지 않으며, HTML을 출력하지 않습니다.
비시각 컴포넌트입니다. 질문을 닫힌 작업 집합으로 변환합니다. 그리드에는 필터, 정렬, 그룹화, 강조 표시, 제한이, 피벗에는 행, 열, 측정값, 집계가 포함되며, 데이터 컴포넌트가 이를 자신의 행에 적용합니다. 제공자는 선택 사항이며, 내장 파서는 API 키 없이 응답합니다.
TsgcHTMLAIAssistant(유닛 sgcHTML_AI, 비시각 컴포넌트, TsgcComponent_Base)
마크업 없음: 검증된 작업을 반환하며, 데이터 컴포넌트가 이를 렌더링합니다
Delphi, C++ Builder, .NET
필요하면 Provider, APIKey, Model로 제공자를 구성합니다. 어시스턴트를 데이터 컴포넌트의 AIAssistant 속성에 지정하고, 쿼리 바를 렌더링하도록 AIQueryEnabled를 설정한 다음, 바가 게시하는 액션을 라우팅합니다. 어시스턴트를 직접 호출할 수도 있습니다.
uses
sgcHTML_AI, sgcHTML_Component_Grid;
FAI := TsgcHTMLAIAssistant.Create(Self);
FAI.Provider := aiprOpenAI;
FAI.APIKey := 'API_KEY'; // optional, the built-in parser answers without it
FAI.Model := 'gpt-4o-mini';
FAI.AllowRowDataToProvider := False; // the default
oGrid.AIAssistant := FAI;
oGrid.AIQueryEnabled := True;
// in the message handler, action = gridAIQuery
oGrid.LoadAIQueryState(vState); // empty when the state lives in the session
oGrid.ProcessAIQuery(vQuery);
oGrid.LoadFromDataSource; // when the grid is bound to a dataset
oHTMX.PushFragment(vGuid, oGrid.HTML);
// Or call it directly and read the validated operations
oCols := TsgcHTMLAIColumns.Create;
oOps := TsgcHTMLGridOps.Create;
try
oCols.Add('Amount', aidtFloat, 'Order amount');
oCols.Add('Country', aidtString).AddSample('Spain');
oCols.Add('Date', aidtDate);
if FAI.QueryToGridOps('amount greater than 500 sort by date desc',
oCols, oOps) then
vText := oOps.ToText; // what survived validation, as text
finally
oOps.Free;
oCols.Free;
end;
// includes: sgcHTML_AI.hpp, sgcHTML_Component_Grid.hpp
FAI = new TsgcHTMLAIAssistant(this);
FAI->Provider = aiprOpenAI;
FAI->APIKey = "API_KEY"; // optional, the built-in parser answers without it
FAI->Model = "gpt-4o-mini";
FAI->AllowRowDataToProvider = false; // the default
oGrid->AIAssistant = FAI;
oGrid->AIQueryEnabled = true;
// in the message handler, action = gridAIQuery
oGrid->LoadAIQueryState(vState); // empty when the state lives in the session
oGrid->ProcessAIQuery(vQuery);
oGrid->LoadFromDataSource(); // when the grid is bound to a dataset
oHTMX->PushFragment(vGuid, oGrid->HTML);
// Or call it directly and read the validated operations
String vText;
TsgcHTMLAIColumns *oCols = new TsgcHTMLAIColumns();
TsgcHTMLGridOps *oOps = new TsgcHTMLGridOps();
try
{
oCols->Add("Amount", aidtFloat, "Order amount");
oCols->Add("Country", aidtString, "")->AddSample("Spain");
oCols->Add("Date", aidtDate, "");
if (FAI->QueryToGridOps("amount greater than 500 sort by date desc",
oCols, oOps))
vText = oOps->ToText(); // what survived validation, as text
}
__finally
{
delete oOps;
delete oCols;
}
using esegece.sgcWebSockets;
var ai = new TsgcHTMLAIAssistant();
ai.Provider = TsgcHTMLAIAssistant.TsgcHTMLAIProvider.aiprOpenAI;
ai.APIKey = "API_KEY"; // optional, the built-in parser answers without it
ai.Model = "gpt-4o-mini";
ai.AllowRowDataToProvider = false; // the default
grid.AIAssistant = ai;
grid.AIQueryEnabled = true;
// in the message handler, action = gridAIQuery
grid.LoadAIQueryState(state); // empty when the state lives in the session
grid.ProcessAIQuery(query);
grid.LoadFromDataSource(); // when the grid is bound to a dataset
htmx.PushFragment(guid, grid.HTML);
// Or call it directly and read the validated operations
var cols = new TsgcHTMLAIColumns();
var ops = new TsgcHTMLGridOps();
cols.Add("Amount", TsgcHTMLAIDataType.aidtFloat, "Order amount");
cols.Add("Country", TsgcHTMLAIDataType.aidtString).AddSample("Spain");
cols.Add("Date", TsgcHTMLAIDataType.aidtDate);
if (ai.QueryToGridOps("amount greater than 500 sort by date desc", cols, ops))
{
string text = ops.ToText(); // what survived validation, as text
}
가장 자주 사용하게 되는 멤버.
제공자에는 Enterprise 또는 All-Access 에디션 또는 sgcAI 팩의 AI 유닛이 필요하며, 이 유닛들은 Windows 전용입니다. 내장 파서는 제공자 없이 모든 플랫폼에서 응답합니다. 이 유닛은 SGC_HTML이 정의된 경우에 컴파일되며, sgcVer.inc는 Android와 iOS에는 이를 정의하지 않습니다. sgcHTML은 sgcWebSockets와 별도로 판매되는 단독 팩입니다.
AIAssistant는 TsgcHTMLComponent_Grid, TsgcHTMLComponent_DataTable, TsgcHTMLComponent_PivotTable, TsgcHTMLComponent_Form, TsgcHTMLComponent_InlineAIPrompt에 있습니다. AIQueryEnabled는 그리드, 데이터 테이블, 피벗에 있으며 쿼리 바, 해석 결과 칩, 지우기 컨트롤을 렌더링합니다. 폼에는 AIQueryEnabled가 없고 어시스턴트를 스마트 붙여넣기에 사용하며, InlineAIPrompt는 답변을 위해 이를 사용합니다. 어시스턴트가 지정되지 않은 동안 그리드는 AI 마크업을 전혀 렌더링하지 않습니다.
그리드 또는 피벗 질문은 열 이름, 캡션, 타입, 그리고 열마다 최대 세 개의 샘플 값(각각 40자로 잘림)을 전송합니다. 허용 설정과 관계없이 그 외에는 아무것도 전송하지 않습니다. 행은 행에 관한 호출을 통해서만, 그리고 AllowRowDataToProvider가 True일 때만 나가는데, 기본값은 그렇지 않습니다. 그 경우 SuggestColumnValues와 Summarize는 False를 반환하고 아무것도 전송하지 않으며, MaxRows가 이들이 담을 수 있는 양을 제한합니다. 스마트 붙여넣기는 사람이 붙여넣은 텍스트와 각 필드의 이름, 레이블, 타입을 전송하며, 폼의 값은 전송하지 않습니다.
제공자가 반환하는 모든 것은 악의적인 텍스트로 취급됩니다. 모든 열 이름은 이름이 정확히 같아야 하되 대소문자는 구분하지 않고 사용자의 화이트리스트와 일치해야 합니다. 모든 연산자는 TsgcHTMLAIOperator의 13개 중 하나여야 하고, 모든 집계는 sum, count, avg, min, max 중 하나여야 하며, 모든 값은 해당 열의 타입에 맞게 변환됩니다. 변환되지 않는 값은 그 작업 전체를 버립니다. 강조 스타일은 primary, secondary, success, danger, warning, info, light, dark 중 하나여야 합니다. 제한 값은 MaxLimit 값 이하로 조정되고, 필터, 정렬, 강조는 각각 최대 32개이며, 제어 문자는 제거되고, 알 수 없는 것은 조용히 버려집니다. 아무것도 남지 않으면 설명을 포함한 전체 집합이 지워집니다. 프롬프트 인젝션은 빈 집합이나 부분 집합을 만들 뿐 예외를 일으키지 않습니다.
TsgcHTMLGridOps는 Filters, Sorts, Highlights, GroupBy, Limit, Explanation을 갖습니다. TsgcHTMLPivotOps는 Rows, Columns, Measure, Aggregate, Explanation을 갖습니다. TsgcHTMLAIColumns는 화이트리스트이며, 열마다 Add(aName, aDataType, aCaption)을 호출하고 샘플에는 AddSample을 사용합니다. 두 작업 클래스 모두 IsEmpty, ToText, ToJSON을 제공하며, FromJSON은 열을 전달할 때에만 완전한 경계가 되므로, 브라우저에서 다시 읽은 내용은 모두 실시간 화이트리스트로 다시 검증하십시오.
Provider는 aiprOpenAI(기본값), aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok, aiprMistral 중 하나이며, TsgcAIChatProvider의 일곱 가지 값으로 sgcAI_Chat에 있습니다. APIKey 또는 BaseUrl을 설정하면 어시스턴트가 TsgcAI_Chat을 소유하며, 이는 Provider, APIKey, Model(비워 두면 채팅 기본값 유지), BaseUrl로 구성됩니다. 또는 AI 유닛이 컴파일되어 있는 경우에만 선언되는 Chat에 자신의 채팅 컴포넌트를 지정할 수도 있습니다. 각 호출은 JSON 스키마를 따르는 구조화된 출력을 요청하며, 그 후 채팅은 원래 상태로 복원됩니다. HasProvider는 어느 경우인지 알려 줍니다.
제공자가 없으면 어시스턴트는 자체 파서로 응답하며, UseRuleBasedFallback(기본적으로 켜짐)은 실패한 제공자 호출에도 어시스턴트가 응답하게 합니다. 이 파서는 and 또는 쉼표로 연결된 열 연산자 값 형태의 절, 그리고 sort by, group by, top N, between A and B, highlight를 읽으며, 피벗의 경우 행, 열, 집계를 읽습니다. 각 연산자의 일반적인 영어 표기와 두 가지 소수점 구분 기호를 모두 인식합니다. 이해하지 못하는 질문은 아무 작업도 만들지 않으며 페이지는 행을 그대로 유지합니다. SuggestColumnValues와 Summarize에는 폴백이 없습니다.
SmartPaste(aText, aFields, aValues)는 붙여넣은 텍스트를 필드 집합에 매핑합니다. SmartPasteEnabled를 TsgcHTMLComponent_Form에 설정하면 붙여넣기 영역이 렌더링되며, ProcessSmartPaste(aText)가 텍스트를 어시스턴트에 전달하고 돌아온 내용을 이름별로 필드에 기록하고, 레이블에 작은 배지를 붙여 AI가 채웠음을 표시합니다. 규칙 기반 파서는 제공자 없이도 이에 응답하며, 줄 바꿈은 서버까지 전달되어도 유지됩니다.
SuggestColumnValues(aPrompt, aRows, aValues)는 그리드 열 어시스턴트를 구동합니다. AIMode가 acOff가 아닌 열은 제안 컨트롤을 렌더링하고, ProcessAIColumnValues(aColumnName)은 한 번의 호출로 보이는 행마다 값 하나를 요청하며, 그 답변은 Accept 및 Reject 컨트롤이 있는 AIProposals가 됩니다. 라이브러리는 아무것도 기록하지 않습니다. 수락된 제안은 OnAIColumnValues를 발생시키며 그 값은 애플리케이션이 유지합니다. 이 호출은 행을 전송하므로 제공자가 필요하고 AllowRowDataToProvider가 켜져 있어야 합니다.
Language는 자유 텍스트의 언어를 설정하며, 비워 두면 요청 로캘을 뜻합니다. CacheMinutes(5)는 동일한 열 집합에 대한 동일한 질문에 캐시에서 응답하고, ClearCache는 캐시를 비웁니다. MaxLimit(1000)의 값은 1000을 넘겨 올릴 수 없습니다. OnBeforeQuery(Sender, aPrompt, aAllow)는 각 제공자 호출 전에 전체 프롬프트를 보며, aAllow를 False로 설정하면 호출을 차단합니다. 어떤 메서드도 예외를 발생시키지 않습니다. 제공자 실패는 OnAIError(Sender, E, aHandled)로 전달됩니다.
HTTP 라우트는 없습니다. 각 컨트롤은 data-sgc-ws-send 폼이며 애플리케이션은 action으로 분기합니다. gridAIQuery, gridAIClear, gridAIColumn, gridAIAccept, gridAIReject, pivotAIQuery, pivotAIClear, formSmartPaste, 그리고 인라인 프롬프트의 네 가지 액션이 있습니다. 다시 렌더링된 컴포넌트를 out-of-band 프래그먼트로 응답하십시오. 컴포넌트 한 세트는 사용자 한 명이므로 세션별로 키를 지정하고, 액션이 수행하는 일에 대한 권한 부여는 서버에서 유지하십시오.
| 온라인 도움말이 찱포넌트의 전체 API 참조 및 사용 가이드입니다. | 열기 | |
| AI Data Pack 가이드전체 그림: 모델이 받는 내용, 검증, 규칙 기반 파서, 호스트 계약, 제한 사항. | 열기 | |
| 모든 sgcHTML 컴포넌트80개 이상의 컴포넌트 전체 기능 매트릭스를 둘러보십시오. | 열기 | |
| 무료 체험판 다운로드30일 체험판은 60.HTML 데모 프로젝트를 포함하며, 그중 18.AIData는 그리드, 피벗, 폼에 일상 언어로 질문합니다. | 열기 | |
| 가격전체 소스 코드가 포함된 Single, Team 및 Site 라이선스. | 열기 |