Referenz
Wichtige Eigenschaften & Methoden
Die Member, die Sie am häufigsten verwenden.
Ein Provider benötigt die KI-Units der Enterprise- oder All-Access-Edition oder das sgcAI-Paket, und diese gibt es nur für Windows. Der eingebaute Parser antwortet auf jeder Plattform ohne Provider. Die Unit kompiliert, wenn SGC_HTML definiert ist, was sgcVer.inc für Android und iOS nicht tut, und sgcHTML ist ein eigenständiges Paket, das unabhängig von sgcWebSockets verkauft wird.
Wo Sie ihn zuweisen
AIAssistant ist verfügbar bei TsgcHTMLComponent_Grid, TsgcHTMLComponent_DataTable, TsgcHTMLComponent_PivotTable, TsgcHTMLComponent_Form und TsgcHTMLComponent_InlineAIPrompt. AIQueryEnabled gibt es beim Grid, der Datentabelle und dem Pivot: Es rendert die Abfrageleiste, den Interpretiert-als-Chip und das Steuerelement zum Leeren. Das Formular hat kein AIQueryEnabled, es nutzt den Assistenten für Smart Paste, und InlineAIPrompt nutzt ihn für seine Antwort. Solange kein Assistent zugewiesen ist, rendert ein Grid überhaupt kein KI-Markup.
Was den Rechner verlässt
Eine Grid- oder Pivot-Frage sendet die Spaltennamen, die Beschriftungen, die Typen und bis zu drei Beispielwerte pro Spalte, jeweils auf 40 Zeichen gekürzt. Sonst nichts, unabhängig von der Freigabe. Zeilen verlassen den Rechner nur über die Aufrufe, die sich um Zeilen drehen, und nur, wenn AllowRowDataToProvider True ist, was standardmäßig nicht der Fall ist: Andernfalls geben SuggestColumnValues und Summarize False zurück und senden nichts, und MaxRows begrenzt, was sie tragen dürfen. Smart Paste sendet den Text, den eine Person eingefügt hat, sowie Name, Beschriftung und Typ jedes Feldes, aber keinen Wert des Formulars.
Die Validierung ist die Grenze
Alles, was ein Provider zurückliefert, wird als nicht vertrauenswürdiger Text behandelt. Jeder Spaltenname muss mit Ihrer Whitelist übereinstimmen, über den exakten Namen und ohne Beachtung der Groß- und Kleinschreibung. Jeder Operator muss einer der 13 aus TsgcHTMLAIOperator sein, jedes Aggregat eines von sum, count, avg, min und max, und jeder Wert wird nach dem Typ seiner Spalte umgewandelt: Ein Wert, der sich nicht umwandeln lässt, verwirft seine gesamte Operation. Ein Hervorhebungsstil muss einer von primary, secondary, success, danger, warning, info, light oder dark sein. Limits werden auf MaxLimit begrenzt, es gibt höchstens 32 Filter, 32 Sortierungen und 32 Hervorhebungen, Steuerzeichen werden entfernt, und alles Unbekannte wird stillschweigend verworfen. Bleibt nichts übrig, wird die gesamte Menge geleert, einschließlich der Erklärung. Eine Prompt-Injection erzeugt eine leere oder teilweise Menge, nie eine Exception.
Das Operationsmodell
TsgcHTMLGridOps enthält Filters, Sorts, Highlights, GroupBy, Limit und Explanation. TsgcHTMLPivotOps enthält Rows, Columns, Measure, Aggregate und Explanation. TsgcHTMLAIColumns ist die Whitelist: Add(aName, aDataType, aCaption) für jede Spalte, mit AddSample für die Beispiele. Beide Operationsklassen bieten IsEmpty, ToText und ToJSON, und FromJSON ist nur dann die vollständige Grenze, wenn Sie die Spalten übergeben, prüfen Sie daher alles, was aus einem Browser zurückgelesen wird, erneut gegen die aktuelle Whitelist.
Einen Provider wählen
Provider ist einer von aiprOpenAI (Standard), aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok und aiprMistral, den sieben von TsgcAIChatProvider in sgcAI_Chat. Setzen Sie APIKey oder BaseUrl, dann besitzt der Assistent ein TsgcAI_Chat, das aus Provider, APIKey, Model (leer behält den Chat-Standard) und BaseUrl konfiguriert wird. Oder weisen Sie Chat Ihre eigene Chat-Komponente zu. Die Eigenschaft ist nur dort deklariert, wo die KI-Units einkompiliert sind. Jeder Aufruf fordert strukturierte Ausgabe an, die einem JSON-Schema folgt, und Ihr Chat wird anschließend wiederhergestellt. HasProvider zeigt an, in welchem Fall Sie sich befinden.
Regelbasierter Fallback
Ohne Provider antwortet der Assistent mit seinem eigenen Parser, und UseRuleBasedFallback (standardmäßig aktiviert) lässt ihn auch einen fehlgeschlagenen Provider-Aufruf beantworten. Er liest Klauseln der Form Spalte Operator Wert, verbunden durch and oder ein Komma, dazu sort by, group by, top N, between A and B und highlight, und für ein Pivot die Zeilen, die Spalten und das Aggregat. Er akzeptiert die üblichen englischen Schreibweisen jedes Operators und beide Dezimaltrennzeichen. Eine Frage, die er nicht versteht, erzeugt keine Operation, und die Seite behält ihre Zeilen. SuggestColumnValues und Summarize haben keinen Fallback.
SmartPaste(aText, aFields, aValues) ordnet eingefügten Text einer Menge von Feldern zu. Setzen Sie SmartPasteEnabled an TsgcHTMLComponent_Form, dann rendert sie eine Einfügezone; ProcessSmartPaste(aText) übergibt den Text an den Assistenten, schreibt das Ergebnis nach Namen in die Felder und markiert sie als KI-befüllt, mit einem kleinen Abzeichen an der Beschriftung. Der regelbasierte Parser beantwortet es ohne Provider, und Zeilenumbrüche überstehen den Weg zum Server.
Spaltenassistent
SuggestColumnValues(aPrompt, aRows, aValues) steuert den Spaltenassistenten des Grids. Eine Spalte, deren AIMode nicht acOff ist, rendert ein Vorschlags-Steuerelement, ProcessAIColumnValues(aColumnName) fragt in einem einzigen Aufruf nach einem Wert pro sichtbarer Zeile, und die Antworten werden zu AIProposals mit den Steuerelementen Übernehmen und Ablehnen. Die Bibliothek schreibt nichts: Ein übernommener Vorschlag löst OnAIColumnValues aus, und Ihre Anwendung speichert ihn. Der Aufruf sendet Zeilen, daher benötigt er einen Provider und aktiviertes AllowRowDataToProvider.
Einstellungen und Ereignisse der Antwort
Language legt die Sprache des freien Texts fest, leer bedeutet die Locale der Anfrage. CacheMinutes (5) beantwortet eine identische Frage über einen identischen Spaltensatz aus dem Cache, und ClearCache leert ihn. MaxLimit (1000) kann nicht über 1000 erhöht werden. OnBeforeQuery(Sender, aPrompt, aAllow) sieht den vollständigen Prompt vor jedem Provider-Aufruf und blockiert ihn, wenn Sie aAllow auf False setzen. Keine Methode löst eine Exception aus: Ein Provider-Fehler erreicht OnAIError(Sender, E, aHandled).
Vertrag mit dem Host
Es gibt keine HTTP-Route. Jedes Steuerelement ist ein data-sgc-ws-send-Formular, und Ihre Anwendung verzweigt anhand von action: gridAIQuery, gridAIClear, gridAIColumn, gridAIAccept, gridAIReject, pivotAIQuery, pivotAIClear, formSmartPaste und die vier Aktionen des Inline-Prompts. Antworten Sie mit der neu gerenderten Komponente als Out-of-Band-Fragment. Ein Satz Komponenten entspricht einem Benutzer, legen Sie sie daher pro Sitzung an, und lassen Sie die Autorisierung dessen, was eine Aktion tut, auf dem Server.