Fai una domanda alla tua grid Delphi in inglese semplice

· Componenti
Fai una domanda alla tua grid Delphi in inglese semplice

I tuoi utenti non vogliono una riga di filtro. Vogliono digitare importo maggiore di 500 ordinato per data desc e vedere la grid cambiare. sgcWebSockets 2026.10 aggiunge l'AI Data Pack a sgcHTML: una barra di query sopra la grid, la tabella dati e il pivot, che trasforma una frase in filtri, ordinamenti, un raggruppamento, evidenziazioni e un limite.

La parte interessante non è che venga chiamato un modello. È ciò che succede alla risposta prima che raggiunga i tuoi dati.

Due righe

uses
  sgcHTML_AI;

FAssistant := TsgcHTMLAIAssistant.Create(Self);
FAssistant.Provider := aiprOpenAI;
FAssistant.APIKey := ReadSetting('openai.key');

FGrid.AIAssistant := FAssistant;
FGrid.AIQueryEnabled := True;

Questo è tutto il collegamento. La barra appare sopra la grid, la domanda torna come un'etichetta che indica cosa è stato capito, e un controllo la cancella di nuovo.

Funziona anche senza alcuna chiave API

Lascia il provider non impostato e il pack risponde comunque. Un parser basato su regole nella libreria capisce le domande che le persone digitano davvero:

Lo stesso parser è il ripiego quando una chiamata al provider fallisce, ed è ciò che gira sulle piattaforme senza le unità AI. Così la funzione degrada verso qualcosa di utile invece che verso un errore, e puoi consegnarla a un cliente che non pagherà per i token.

Cosa esce dalla macchina

Per impostazione predefinita, le tue righe no. La richiesta porta i nomi delle colonne, le loro etichette, i loro tipi e tre valori di esempio. Nient'altro:

FAssistant.AllowRowDataToProvider := False;   { the default }
FAssistant.MaxRows := 50;                     { when it is True }

Questo conta per il motivo ovvio, e per uno meno ovvio: una richiesta più piccola è più economica e più veloce.

La validazione è il confine di sicurezza

Qualsiasi cosa torni viene verificata contro le tue stesse colonne prima che venga applicato qualcosa. Ogni nome di colonna contro la whitelist, ogni operatore contro un insieme chiuso, ogni valore forzato al tipo della sua colonna, ogni limite ridotto. Se nulla sopravvive, l'intero insieme viene cancellato, spiegazione inclusa, cosicché nessun testo del modello raggiunge mai la pagina.

La conseguenza merita di essere detta chiaramente: una domanda che cerca di infilare istruzioni non produce nulla. Non una pagina di errore, non un filtro parziale, nulla. L'abbiamo testato con prompt di injection e payload di script mentre lo costruivamo, ed è questo il comportamento che ora la suite di QA verifica.

Più della barra di query

Un assistente di colonna. Una colonna della grid può chiedere proposte, una per riga, e ogni proposta viene mostrata perché una persona la accetti o la rifiuti. Non viene scritto nulla finché una persona non lo decide.

Incolla intelligente in un modulo. Incolla un indirizzo, una firma email o una riga di un foglio di calcolo, e il modulo la mappa sui suoi campi e segna cosa è stato compilato.

Un prompt in linea. Il nuovo TsgcHTMLComponent_InlineAIPrompt è un piccolo popover accanto a un campo: chiedi, leggi la risposta, accetta o scarta.

Quale provider

Sette, ed è una sola proprietà: aiprOpenAI, aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok e aiprMistral. Con aiprOllama e una BaseUrl, tutto gira sull'hardware del cliente e niente esce dall'edificio.

Sotto c'è l'altra metà di questa versione: TsgcAIChat ora può chiedere a uno qualsiasi di quei provider di rispondere con JSON che segue uno schema fornito da te, tramite il nuovo metodo ChatJSON, che analizza la risposta e chiede di nuovo, con l'errore di parsing allegato, se non fosse leggibile. Questo è ciò che trasforma una risposta strutturata in qualcosa su cui puoi agire, invece che in qualcosa da raschiare a mano.

Guardalo su dati reali

La nuova demo 18.AIData serve quattro pagine su circa 26.000 righe d'ordine precaricate, gira senza chiave API, e stampa quale motore ha risposto a ciascuna domanda e quanti millisecondi ha impiegato il server. Il dataset è SQLite, creato al primo avvio, quindi non c'è nulla da installare.

Aggiornamento

Il pack fa parte di sgcHTML ed è inerte finché non viene assegnato un assistente: una grid senza AIAssistant renderizza esattamente il markup che renderizzava prima.

Continua a leggere

Guardalo in video

C'è un breve video su questo sul canale eSeGeCe.

Domande, feedback o aiuto per la migrazione? Mettiti in contatto — riceverai una risposta dalle persone che hanno scritto il codice.