Referentie
Belangrijkste eigenschappen en methoden
De members die je het vaakst gebruikt.
Een provider heeft de AI-units van de Enterprise- of All-Access-editie nodig, of het sgcAI-pack, en die zijn alleen voor Windows. De ingebouwde parser antwoordt op elk platform zonder provider. De unit compileert wanneer SGC_HTML is gedefinieerd, wat sgcVer.inc niet doet voor Android en iOS, en sgcHTML is een zelfstandig pack, los van sgcWebSockets verkocht.
Waar je het toewijst
AIAssistant bestaat op TsgcHTMLComponent_Grid, TsgcHTMLComponent_DataTable, TsgcHTMLComponent_PivotTable, TsgcHTMLComponent_Form en TsgcHTMLComponent_InlineAIPrompt. AIQueryEnabled bestaat op het raster, de datatabel en de pivot: het rendert de querybalk, de chip 'geïnterpreteerd als' en de wis-knop. Het formulier heeft geen AIQueryEnabled, het gebruikt de assistent voor slim plakken, en InlineAIPrompt gebruikt die voor zijn antwoord. Zolang er geen assistent is toegewezen, rendert een raster helemaal geen AI-markup.
Wat de machine verlaat
Een vraag over een raster of pivot verstuurt de kolomnamen, de titels, de typen en maximaal drie voorbeeldwaarden per kolom, elk afgekapt tot 40 tekens. Verder niets, ongeacht de instelling. Rijen verlaten de machine alleen via de aanroepen die over rijen gaan, en alleen wanneer AllowRowDataToProvider True is, wat standaard niet zo is: zolang dat niet zo is, geven SuggestColumnValues en Summarize False terug en versturen niets, en MaxRows begrenst wat ze mogen bevatten. Slim plakken verstuurt de tekst die een persoon heeft geplakt en de naam, het label en het type van elk veld, en geen enkele waarde van het formulier.
Validatie is de grens
Alles wat een provider teruggeeft, wordt behandeld als vijandige tekst. Elke kolomnaam moet overeenkomen met je whitelist, op exacte naam en zonder onderscheid tussen hoofdletters en kleine letters. Elke operator moet een van de 13 van TsgcHTMLAIOperator zijn, elke aggregatie een van sum, count, avg, min en max, en elke waarde wordt gedwongen naar het type van zijn kolom: een waarde die zich niet laat omzetten, laat de hele bewerking vervallen. Een markeringsstijl moet een van primary, secondary, success, danger, warning, info, light of dark zijn. Limieten worden begrensd op MaxLimit, er zijn maximaal 32 filters, 32 sorteringen en 32 markeringen, stuurtekens worden verwijderd en alles wat onbekend is, wordt stilzwijgend weggegooid. Als er niets overblijft, wordt de hele set leeggemaakt, inclusief de toelichting. Een prompt injection levert een lege of gedeeltelijke set op, nooit een exceptie.
Het bewerkingenmodel
TsgcHTMLGridOps bevat Filters, Sorts, Highlights, GroupBy, Limit en Explanation. TsgcHTMLPivotOps bevat Rows, Columns, Measure, Aggregate en Explanation. TsgcHTMLAIColumns is de whitelist: Add(aName, aDataType, aCaption) voor elke kolom, met AddSample voor de voorbeeldwaarden. Beide bewerkingsklassen bieden IsEmpty, ToText en ToJSON, en FromJSON is alleen de volledige grens wanneer je de kolommen meegeeft, dus valideer alles wat uit een browser wordt teruggelezen opnieuw tegen de actuele whitelist.
Een provider kiezen
Provider is een van aiprOpenAI (de standaard), aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok en aiprMistral, de zeven van TsgcAIChatProvider in sgcAI_Chat. Stel APIKey of BaseUrl in en de assistent bezit een TsgcAI_Chat, geconfigureerd op basis van Provider, APIKey, Model (leeg behoudt de standaard van de chat) en BaseUrl. Of wijs je eigen chatcomponent toe aan Chat, dat alleen wordt gedeclareerd waar de AI-units zijn meegecompileerd. Elke aanroep vraagt om gestructureerde uitvoer die een JSON-schema volgt, en je chat wordt daarna hersteld. HasProvider vertelt in welk geval je zit.
Regelgebaseerde terugval
Zonder provider antwoordt de assistent met zijn eigen parser, en met UseRuleBasedFallback (standaard aan) kan die ook een mislukte provideraanroep beantwoorden. De parser leest clausules van de vorm kolom operator waarde, verbonden door and of een komma, plus sort by, group by, top N, between A and B en highlight, en voor een pivot de rijen, de kolommen en de aggregatie. De parser accepteert de gebruikelijke Engelse schrijfwijzen van elke operator en beide decimaalscheidingstekens. Een vraag die de parser niet begrijpt, levert geen bewerking op en de pagina behoudt haar rijen. SuggestColumnValues en Summarize hebben geen terugval.
SmartPaste(aText, aFields, aValues) verdeelt geplakte tekst over een set velden. Stel SmartPasteEnabled in op TsgcHTMLComponent_Form en het rendert een plakzone; ProcessSmartPaste(aText) geeft de tekst aan de assistent, schrijft wat terugkwam op naam in de velden en markeert ze als door AI ingevuld, met een kleine badge op het label. De regelgebaseerde parser beantwoordt het zonder provider, en regeleinden blijven behouden op weg naar de server.
Kolomassistent
SuggestColumnValues(aPrompt, aRows, aValues) stuurt de kolomassistent van het raster aan. Een kolom waarvan AIMode niet acOff is, rendert een suggestieknop, ProcessAIColumnValues(aColumnName) vraagt in één aanroep om één waarde per zichtbare rij, en de antwoorden worden AIProposals met een Accept- en een Reject-knop. De bibliotheek schrijft niets: een geaccepteerd voorstel roept OnAIColumnValues op en je applicatie legt het vast. De aanroep verstuurt rijen, dus die vereist een provider en AllowRowDataToProvider ingeschakeld.
Antwoordinstellingen en gebeurtenissen
Language bepaalt de taal van de vrije tekst, leeg betekent de locale van het verzoek. CacheMinutes (5) beantwoordt een identieke vraag over een identieke kolomset uit de cache, en ClearCache leegt die. MaxLimit (1000) kan niet boven 1000 worden verhoogd. OnBeforeQuery(Sender, aPrompt, aAllow) ziet de hele prompt vóór elke provideraanroep en blokkeert die wanneer je aAllow op False zet. Geen enkele methode veroorzaakt een exceptie: een providerfout komt terecht in OnAIError(Sender, E, aHandled).
Contract met de host
Er is geen HTTP-route. Elk besturingselement is een data-sgc-ws-send-formulier en je applicatie verdeelt op basis van action: gridAIQuery, gridAIClear, gridAIColumn, gridAIAccept, gridAIReject, pivotAIQuery, pivotAIClear, formSmartPaste en de vier acties van de inline prompt. Antwoord met het opnieuw gerenderde component als out-of-band-fragment. Eén set componenten is één gebruiker, dus houd per sessie een eigen set aan, en houd de autorisatie van wat een actie doet op de server.