사용자는 필터 행을 원하지 않습니다. 금액이 500보다 크고 날짜 내림차순으로 정렬이라고 입력해서 그리드가 바뀌는 것을 보고 싶어 합니다. sgcWebSockets 2026.10은 sgcHTML에 AI Data Pack을 추가합니다. 그리드, 데이터 테이블, 피벗 위에 놓이는 쿼리 바로, 문장을 필터, 정렬, 그룹화, 강조 표시, 개수 제한으로 바꿔 줍니다.
흥미로운 부분은 모델을 호출한다는 사실이 아닙니다. 그 답변이 데이터에 도달하기 전에 일어나는 일입니다.
단 두 줄
uses
sgcHTML_AI;
FAssistant := TsgcHTMLAIAssistant.Create(Self);
FAssistant.Provider := aiprOpenAI;
FAssistant.APIKey := ReadSetting('openai.key');
FGrid.AIAssistant := FAssistant;
FGrid.AIQueryEnabled := True;
배선은 이게 전부입니다. 바가 그리드 위에 나타나고, 질문은 무엇을 이해했는지 알려 주는 칩으로 돌아오며, 하나의 컨트롤로 다시 지울 수 있습니다.
API 키가 전혀 없어도 작동합니다
공급자를 설정하지 않아도 팩은 여전히 답합니다. 라이브러리에 내장된 규칙 기반 파서가 사람들이 실제로 입력하는 질문을 이해합니다:
금액이 500보다 크고 날짜 내림차순으로 정렬(amount greater than 500 sort by date desc)국가별로 그룹화상위 10개A와 B 사이, 쉼표로 된 소수 포함- 강조 표시 요청
같은 파서는 공급자 호출이 실패했을 때의 대체 수단이자, AI 유닛이 없는 플랫폼에서 실행되는 바로 그 파서이기도 합니다. 그래서 이 기능은 오류로 저하되는 대신 여전히 쓸모 있는 무언가로 저하되며, 토큰 비용을 지불하지 않을 고객에게도 제공할 수 있습니다.
기기를 떠나는 것
기본적으로 행 데이터는 떠나지 않습니다. 요청에는 열 이름, 열 캡션, 열 유형, 그리고 샘플 값 세 개만 담깁니다. 그 외에는 아무것도 없습니다:
FAssistant.AllowRowDataToProvider := False; { the default }
FAssistant.MaxRows := 50; { when it is True }
이는 분명한 이유 때문이기도 하고, 덜 분명한 이유 때문이기도 합니다. 더 작은 요청은 더 저렴하고 더 빠릅니다.
검증이 곧 보안 경계입니다
무엇이 돌아오든, 적용되기 전에 여러분 자신의 열을 기준으로 검사됩니다. 모든 열 이름은 화이트리스트와 대조되고, 모든 연산자는 닫힌 집합과 대조되며, 모든 값은 해당 열의 유형으로 강제 변환되고, 모든 제한값은 잘립니다. 아무것도 통과하지 못하면 전체 결과가 설명과 함께 지워지므로, 모델이 생성한 텍스트는 결코 페이지에 도달하지 않습니다.
그 결과는 분명히 말해 둘 가치가 있습니다. 지시를 몰래 끼워 넣으려는 질문은 아무것도 만들어 내지 못합니다. 오류 페이지도, 부분적인 필터도, 아무것도 없습니다. 우리는 이를 만드는 동안 인젝션 프롬프트와 스크립트 페이로드로 테스트했고, 이제 QA 스위트가 이 동작을 지켜 줍니다.
쿼리 바 그 이상
열 어시스턴트. 그리드 열은 행마다 하나씩 제안을 요청할 수 있고, 모든 제안은 사람이 수락하거나 거부할 수 있도록 표시됩니다. 사람이 결정하기 전까지는 아무것도 쓰이지 않습니다.
폼에 붙여넣는 스마트 붙여넣기. 주소, 이메일 서명, 스프레드시트의 한 줄을 붙여넣으면, 폼이 그것을 해당 필드에 매핑하고 무엇이 채워졌는지 표시합니다.
인라인 프롬프트. 새로운 TsgcHTMLComponent_InlineAIPrompt는 필드 옆의 작은 팝오버입니다. 질문하고, 답을 읽고, 수락하거나 버립니다.
어떤 공급자
일곱 개이며, 속성 하나로 결정됩니다: aiprOpenAI, aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok, aiprMistral. aiprOllama와 BaseUrl을 사용하면, 전체가 고객 자신의 하드웨어에서 실행되어 건물 밖으로 아무것도 나가지 않습니다.
그 아래에는 이번 릴리스의 나머지 절반이 있습니다. TsgcAIChat은 이제 새로운 ChatJSON 메서드를 통해 이러한 공급자 중 누구에게든 여러분이 제공한 스키마를 따르는 JSON으로 답하도록 요청할 수 있습니다. 이 메서드는 답변을 파싱하고, 읽을 수 없었다면 파싱 오류를 첨부하여 한 번 더 요청합니다. 이것이 구조화된 답변을 직접 긁어내야 하는 것이 아니라 곧바로 활용할 수 있는 것으로 만들어 줍니다.
실제 데이터로 확인하기
새로운 데모 18.AIData는 약 26,000개의 미리 채워진 주문 행에 대해 네 개의 페이지를 제공하며, API 키 없이 실행되고, 어떤 엔진이 각 질문에 답했는지와 서버가 몇 밀리초 걸렸는지를 출력합니다. 데이터셋은 SQLite이며 처음 시작할 때 생성되므로 설치할 것이 없습니다.
업그레이드
이 팩은 sgcHTML의 일부이며 어시스턴트가 할당되기 전까지는 비활성 상태입니다. AIAssistant가 없는 그리드는 이전과 정확히 같은 마크업을 렌더링합니다.
다음 읽을거리
- Delphi에서 닫힌 브라우저에 도달하기
- ChatGPT와 Claude 안에서 Delphi 앱 실행하기
- sgcWebSockets 2026.10, 이번 릴리스의 나머지 모든 것
영상으로 보기
이에 관한 짧은 영상이 eSeGeCe 채널에 있습니다.
질문, 피드백, 마이그레이션 도움이 필요하신가요? 문의하기 — 코드를 작성한 사람들에게서 직접 답변을 받으실 수 있습니다.
