Référence
Propriétés & méthodes clés
Les membres que vous utilisez le plus souvent.
Un fournisseur nécessite les unités IA de l'édition Enterprise ou All-Access, ou le pack sgcAI, et elles ne sont disponibles que sous Windows. L'analyseur intégré répond sur toutes les plateformes sans fournisseur. L'unité se compile lorsque SGC_HTML est défini, ce que sgcVer.inc ne fait pas pour Android et iOS, et sgcHTML est un pack autonome, vendu indépendamment de sgcWebSockets.
Où l'affecter
AIAssistant existe sur TsgcHTMLComponent_Grid, TsgcHTMLComponent_DataTable, TsgcHTMLComponent_PivotTable, TsgcHTMLComponent_Form et TsgcHTMLComponent_InlineAIPrompt. AIQueryEnabled existe sur la grille, le tableau de données et le tableau croisé : il affiche la barre de requête, la pastille « interprété comme » et le contrôle d'effacement. Le formulaire n'a pas de AIQueryEnabled, il utilise l'assistant pour le collage intelligent, et InlineAIPrompt l'utilise pour sa réponse. Tant qu'aucun assistant n'est affecté, une grille n'affiche aucun balisage IA.
Ce qui quitte la machine
Une question sur une grille ou un tableau croisé envoie les noms de colonnes, les libellés, les types et jusqu'à trois valeurs d'exemple par colonne, chacune tronquée à 40 caractères. Rien d'autre, quel que soit ce réglage. Les lignes ne partent que via les appels qui portent sur les lignes, et seulement lorsque AllowRowDataToProvider vaut True, ce qui n'est pas le cas par défaut. Sinon, SuggestColumnValues et Summarize renvoient False et n'envoient rien, et MaxRows plafonne ce qu'ils peuvent transporter. Le collage intelligent envoie le texte qu'une personne a collé ainsi que le nom, le libellé et le type de chaque champ, et aucune valeur du formulaire.
La validation est la frontière
Tout ce qu'un fournisseur renvoie est traité comme un texte hostile. Chaque nom de colonne doit correspondre à votre liste blanche, par nom exact et sans distinguer les majuscules des minuscules. Chaque opérateur doit être l'un des 13 de TsgcHTMLAIOperator, chaque agrégat l'un de sum, count, avg, min et max, et chaque valeur est convertie selon le type de sa colonne : une valeur qui ne se convertit pas fait abandonner toute son opération. Un style de mise en évidence doit être l'un de primary, secondary, success, danger, warning, info, light ou dark. Les limites sont bornées à MaxLimit, il y a au plus 32 filtres, 32 tris et 32 mises en évidence, les caractères de contrôle sont supprimés, et tout ce qui est inconnu est écarté en silence. Si rien ne survit, l'ensemble entier est vidé, explication comprise. Une injection de prompt produit un ensemble vide ou partiel, jamais une exception.
Le modèle d'opérations
TsgcHTMLGridOps contient Filters, Sorts, Highlights, GroupBy, Limit et Explanation. TsgcHTMLPivotOps contient Rows, Columns, Measure, Aggregate et Explanation. TsgcHTMLAIColumns est la liste blanche : Add(aName, aDataType, aCaption) pour chaque colonne, avec AddSample pour les échantillons. Les deux classes d'opérations offrent IsEmpty, ToText et ToJSON, et FromJSON n'est la frontière complète que si vous passez les colonnes, revalidez donc tout ce qui est relu depuis un navigateur par rapport à la liste blanche courante.
Choisir un fournisseur
Provider est l'un de aiprOpenAI (par défaut), aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok et aiprMistral, les sept de TsgcAIChatProvider dans sgcAI_Chat. Définissez APIKey ou BaseUrl et l'assistant possède un TsgcAI_Chat configuré à partir de Provider, APIKey, Model (s'il est vide, la valeur par défaut du chat est conservée) et BaseUrl. Ou affectez votre propre composant de chat à Chat, qui n'est déclaré que là où les unités IA sont compilées. Chaque appel demande une sortie structurée qui suit un schéma JSON, et votre chat est restauré ensuite. HasProvider indique dans quel cas vous vous trouvez.
Repli basé sur des règles
Sans fournisseur, l'assistant répond avec son propre analyseur, et UseRuleBasedFallback (activé par défaut) lui permet aussi de répondre après l'échec d'un appel au fournisseur. Il lit des clauses de la forme colonne opérateur valeur reliées par « and » ou par une virgule, ainsi que « sort by », « group by », « top N », « between A and B » et « highlight », et pour un tableau croisé les lignes, les colonnes et l'agrégat. Il accepte les orthographes anglaises usuelles de chaque opérateur et l'un ou l'autre séparateur décimal. Une question qu'il ne comprend pas ne produit aucune opération et la page conserve ses lignes. SuggestColumnValues et Summarize n'ont pas de repli.
SmartPaste(aText, aFields, aValues) associe un texte collé à un ensemble de champs. Définissez SmartPasteEnabled sur TsgcHTMLComponent_Form et il affiche une zone de collage ; ProcessSmartPaste(aText) transmet le texte à l'assistant, écrit ce qui revient dans les champs par nom et les marque comme remplis par l'IA, avec un petit badge sur le libellé. L'analyseur à base de règles y répond sans fournisseur, et les sauts de ligne survivent au trajet jusqu'au serveur.
Assistant de colonne
SuggestColumnValues(aPrompt, aRows, aValues) pilote l'assistant de colonne de la grille. Une colonne dont AIMode n'est pas acOff affiche un contrôle de suggestion, ProcessAIColumnValues(aColumnName) demande une valeur par ligne visible en un seul appel, et les réponses deviennent des AIProposals avec un contrôle Accepter et un contrôle Rejeter. La bibliothèque n'écrit rien : une proposition acceptée déclenche OnAIColumnValues et votre application l'enregistre. L'appel envoie des lignes, il nécessite donc un fournisseur et AllowRowDataToProvider activé.
Paramètres de réponse et événements
Language définit la langue du texte libre, vide signifiant les paramètres régionaux de la requête. CacheMinutes (5) répond depuis le cache à une question identique sur un ensemble de colonnes identique, et ClearCache le vide. MaxLimit (1000) ne peut pas être porté au-delà de 1000. OnBeforeQuery(Sender, aPrompt, aAllow) voit le prompt complet avant chaque appel au fournisseur et le bloque lorsque vous définissez aAllow à False. Aucune méthode ne lève d'exception : un échec du fournisseur aboutit à OnAIError(Sender, E, aHandled).
Contrat avec l'hôte
Il n'y a pas de route HTTP. Chaque contrôle est un formulaire data-sgc-ws-send et votre application aiguille selon action : gridAIQuery, gridAIClear, gridAIColumn, gridAIAccept, gridAIReject, pivotAIQuery, pivotAIClear, formSmartPaste et les quatre actions du prompt intégré. Répondez avec le composant réaffiché sous forme de fragment hors-bande. Un ensemble de composants correspond à un utilisateur, créez-le donc par session, et gardez côté serveur l'autorisation de ce que fait une action.