Stel je Delphi-grid een vraag in gewoon Engels

· Componenten
Stel je Delphi-grid een vraag in gewoon Engels

Je gebruikers willen geen filterrij. Ze willen bedrag groter dan 500 gesorteerd op datum aflopend typen en de grid zien veranderen. sgcWebSockets 2026.10 voegt het AI Data Pack toe aan sgcHTML: een zoekbalk boven de grid, de datatabel en de pivot, die een zin omzet in filters, sorteringen, een groepering, markeringen en een limiet.

Het interessante deel is niet dat er een model wordt aangeroepen. Het is wat er met het antwoord gebeurt voordat het je data bereikt.

Twee regels

uses
  sgcHTML_AI;

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

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

Dat is de hele bedrading. De balk verschijnt boven de grid, de vraag komt terug als een label dat zegt wat er begrepen is, en een besturingselement wist het weer.

Het werkt ook helemaal zonder API-sleutel

Laat de provider ongedefinieerd en het pack antwoordt nog steeds. Een regelgebaseerde parser in de library begrijpt de vragen die mensen daadwerkelijk typen:

Dezelfde parser is de terugval wanneer een aanroep naar de provider mislukt, en het is wat draait op platformen zonder de AI-units. De functie degradeert dus tot iets bruikbaars in plaats van tot een fout, en je kunt hem uitleveren aan een klant die niet voor tokens gaat betalen.

Wat de machine verlaat

Standaard je rijen niet. Het verzoek bevat de kolomnamen, hun bijschriften, hun typen en drie voorbeeldwaarden. Verder niets:

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

Dat is belangrijk om de voor de hand liggende reden, en om een minder voor de hand liggende: een kleiner verzoek is goedkoper en sneller.

Validatie is de veiligheidsgrens

Wat er ook terugkomt, wordt tegen je eigen kolommen gecontroleerd voordat er iets wordt toegepast. Elke kolomnaam tegen de whitelist, elke operator tegen een gesloten verzameling, elke waarde gedwongen naar het type van zijn kolom, elke limiet begrensd. Als niets overleeft, wordt de hele set gewist, uitleg inbegrepen, zodat er nooit modeltekst op de pagina terechtkomt.

Het gevolg is het waard om duidelijk te zeggen: een vraag die instructies probeert te smokkelen, levert niets op. Geen foutpagina, geen gedeeltelijk filter, niets. We hebben het tijdens de bouw getest met injectie-prompts en scriptpayloads, en dat is het gedrag dat de QA-suite nu bewaakt.

Meer dan de zoekbalk

Een kolomassistent. Een grid-kolom kan om voorstellen vragen, één per rij, en elk voorstel wordt getoond zodat iemand het kan accepteren of afwijzen. Er wordt niets geschreven totdat een mens dat zegt.

Slim plakken in een formulier. Plak een adres, een e-mailhandtekening of een regel uit een spreadsheet, en het formulier koppelt het aan zijn velden en markeert wat is ingevuld.

Een inline prompt. De nieuwe TsgcHTMLComponent_InlineAIPrompt is een kleine popover naast een veld: vraag het, lees het antwoord, accepteer of verwerp.

Welke provider

Zeven, en het is één eigenschap: aiprOpenAI, aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok en aiprMistral. Met aiprOllama en een BaseUrl draait het geheel op de eigen hardware van de klant en verlaat niets het gebouw.

Daaronder ligt de andere helft van deze release: TsgcAIChat kan nu elk van die providers vragen te antwoorden met JSON die een door jou aangeleverd schema volgt, via de nieuwe methode ChatJSON, die het antwoord parseert en nog een keer vraagt met de parse-fout erbij als het niet gelezen kon worden. Dat maakt van een gestructureerd antwoord iets waar je op kunt handelen, in plaats van iets wat je moet uitschrapen.

Bekijk het op echte data

De nieuwe demo 18.AIData serveert vier pagina's over ongeveer 26.000 aangemaakte orderregels, draait zonder API-sleutel, en print welke engine elke vraag beantwoordde en hoeveel milliseconden de server erover deed. De dataset is SQLite, aangemaakt bij de eerste start, dus er is niets te installeren.

Upgraden

Het pack maakt deel uit van sgcHTML en is inactief totdat er een assistent wordt toegewezen: een grid zonder AIAssistant rendert precies de markup die hij daarvoor rendeerde.

Lees verder

Bekijk het

Er is een korte video hierover op het eSeGeCe-kanaal.

Vragen, feedback of hulp bij migratie? Neem contact op — je krijgt antwoord van de mensen die de code hebben geschreven.