InlineAIPrompt

TsgcHTMLComponent_InlineAIPrompt : un popover qui interroge l'assistant là où travaille l'utilisateur, à côté d'un mémo, d'un éditeur riche ou dans l'en-tête d'une colonne de grille, en Delphi, C++ Builder et .NET. Une personne décide de ce qu'elle garde.

TsgcHTMLComponent_InlineAIPrompt

Un contrôle avec un humain dans la boucle. Le prompt est saisi dans le popover, la réponse y est affichée, et seul Accepter transmet la réponse à votre application via OnAIAccept. Le composant n'écrit jamais dans un jeu de données, un champ ou la page. Il répond via sa propriété AIAssistant, un TsgcHTMLAIAssistant.

Classe du composant

TsgcHTMLComponent_InlineAIPrompt (unité sgcHTML_Component_InlineAIPrompt)

Produit

Un bouton déclencheur et une carte popover avec la zone de prompt, la réponse, Accepter et Rejeter

Famille

Chat & IA

Langages

Delphi, C++ Builder, .NET

Affectez l'assistant, acheminez quatre actions, acceptez la réponse

Donnez au popover un PromptID et un TargetName, affectez l'AIAssistant, remplissez Context avec les lignes que l'assistant peut voir, et acheminez les quatre actions qu'il envoie vers Open, ProcessPrompt, Accept et Discard. Ce qui a été accepté vous parvient dans OnAIAccept.

uses
  sgcHTML_AI, sgcHTML_Component_InlineAIPrompt;

FAI := TsgcHTMLAIAssistant.Create(Self);
FAI.Provider := aiprOpenAI;
FAI.APIKey := 'API_KEY';
FAI.AllowRowDataToProvider := True;   // the answer is drafted over Context

FPrompt := TsgcHTMLComponent_InlineAIPrompt.Create(Self);
FPrompt.PromptID := 'notePrompt';
FPrompt.TargetName := 'Note';
FPrompt.Title := 'Draft the note';
FPrompt.Placeholder := 'e.g. write a short delivery note';
FPrompt.AIAssistant := FAI;
FPrompt.Context.Add('Customer=Northwind');   // the rows the assistant may see
FPrompt.OnAIAccept := PromptAccept;

Response := FPrompt.HTML;   // the trigger, and the popover while IsOpen

// only when a human presses Accept, aValue is the answer that was on screen
procedure TMain.PromptAccept(Sender: TObject; const aValue: string);
begin
  SaveNote(aValue);   // your application writes it where it belongs
end;

// in the message handler, one call for each action the popover posts
if vAction = 'inlineAIOpen' then
  FPrompt.Open
else if vAction = 'inlineAIAsk' then
  FPrompt.ProcessPrompt(vText)
else if vAction = 'inlineAIAccept' then
  FPrompt.Accept
else if vAction = 'inlineAIDiscard' then
  FPrompt.Discard;
oHTMX.PushFragment(vGuid, FPrompt.HTML);
// includes: sgcHTML_AI.hpp, sgcHTML_Component_InlineAIPrompt.hpp

FAI = new TsgcHTMLAIAssistant(this);
FAI->Provider = aiprOpenAI;
FAI->APIKey = "API_KEY";
FAI->AllowRowDataToProvider = true;   // the answer is drafted over Context

FPrompt = new TsgcHTMLComponent_InlineAIPrompt(this);
FPrompt->PromptID = "notePrompt";
FPrompt->TargetName = "Note";
FPrompt->Title = "Draft the note";
FPrompt->Placeholder = "e.g. write a short delivery note";
FPrompt->AIAssistant = FAI;
FPrompt->Context->Add("Customer=Northwind");   // the rows the assistant may see
FPrompt->OnAIAccept = PromptAccept;

String html = FPrompt->HTML;   // the trigger, and the popover while IsOpen

// only when a human presses Accept, aValue is the answer that was on screen
void __fastcall TMain::PromptAccept(TObject *Sender, const String aValue)
{
  SaveNote(aValue);   // your application writes it where it belongs
}

// in the message handler, one call for each action the popover posts
if (vAction == "inlineAIOpen")
  FPrompt->Open();
else if (vAction == "inlineAIAsk")
  FPrompt->ProcessPrompt(vText);
else if (vAction == "inlineAIAccept")
  FPrompt->Accept();
else if (vAction == "inlineAIDiscard")
  FPrompt->Discard();
oHTMX->PushFragment(vGuid, FPrompt->HTML);
using esegece.sgcWebSockets;

var ai = new TsgcHTMLAIAssistant();
ai.Provider = TsgcHTMLAIAssistant.TsgcHTMLAIProvider.aiprOpenAI;
ai.APIKey = "API_KEY";
ai.AllowRowDataToProvider = true;   // the answer is drafted over Context

var prompt = new TsgcHTMLComponent_InlineAIPrompt();
prompt.PromptID = "notePrompt";
prompt.TargetName = "Note";
prompt.Title = "Draft the note";
prompt.Placeholder = "e.g. write a short delivery note";
prompt.AIAssistant = ai;
prompt.Context.Add("Customer=Northwind");   // the rows the assistant may see
prompt.OnAIAccept += PromptAccept;

string html = prompt.HTML;   // the trigger, and the popover while IsOpen

// only when a human presses Accept, value is the answer that was on screen
void PromptAccept(object sender, string value)
{
    SaveNote(value);   // your application writes it where it belongs
}

// in the message handler, one call for each action the popover posts
if (action == "inlineAIOpen")
    prompt.Open();
else if (action == "inlineAIAsk")
    prompt.ProcessPrompt(text);
else if (action == "inlineAIAccept")
    prompt.Accept();
else if (action == "inlineAIDiscard")
    prompt.Discard();
htmx.PushFragment(guid, prompt.HTML);

Propriétés & méthodes clés

Les membres que vous utilisez le plus souvent.

Un humain dans la boucle

Le prompt est saisi dans le popover, la réponse y est affichée, et seul Accept transmet la réponse à votre application, via OnAIAccept. Discard ferme le popover et abandonne la réponse. Le composant n'écrit jamais dans un jeu de données, un champ ou la page : votre application décide de ce qu'il faut faire de ce qui revient. Le texte du modèle est écrit par la couche de nœuds, il est donc échappé et ne peut jamais devenir du balisage.

Méthodes

Open ouvre le popover sans prompt saisi pour l'instant. ProcessPrompt(aPrompt) interroge d'abord OnAIPrompt et, si celui-ci ne l'a pas traité, l'assistant sur Context, et laisse le popover ouvert avec la réponse dans ResultText. Accept transmet ResultText via OnAIAccept et ferme le popover, et ne transmet rien lorsqu'il n'y a pas de réponse. Discard le ferme.

Événements

OnAIPrompt(Sender, aPrompt, aResult, aHandled) permet à votre application de répondre elle-même : définissez aResult et aHandled. Laissez aHandled à False et l'assistant est interrogé à la place. OnAIAccept(Sender, aValue) se déclenche lorsqu'une personne appuie sur Accepter, et aValue est la réponse qui était à l'écran.

L'assistant et Context

Affectez un TsgcHTMLAIAssistant à AIAssistant, voir AIAssistant. Le popover appelle son SuggestColumnValues sur Context, une TStringList avec une entrée par ligne de données. Ce sont des données de lignes : rien n'est envoyé tant que l'assistant a AllowRowDataToProvider à False, et rien n'est demandé du tout lorsque Context est vide et que OnAIPrompt n'a pas répondu.

Propriétés

PromptID (sgcInlineAI par défaut) est l'identifiant du popover et la valeur envoyée dans le champ prompt. TargetName nomme le contrôle auquel appartient la réponse acceptée et est envoyé dans le champ target, ce qui vous permet de l'acheminer. Title, Placeholder et ButtonText définissent les textes, IsOpen affiche le panneau, et PromptText et ResultText contiennent ce qui a été demandé et répondu.

Actions envoyées

Il n'y a pas de route HTTP. Chaque contrôle est un formulaire data-sgc-ws-send : inlineAIOpen (champs prompt, target), inlineAIAsk (plus text), inlineAIAccept et inlineAIDiscard. Aiguillez selon action, consultez prompt pour savoir quel popover l'a envoyé, et renvoyez le composant réaffiché. Un hôte qui diffuse une réponse en flux la réaffiche avec davantage de ResultText.

Sortie

Le déclencheur est toujours affiché. Avec IsOpen activé, une carte est affichée à côté avec le titre, la zone de prompt, le bouton de demande et, dès qu'il y a une réponse, la réponse avec un contrôle Accepter et un contrôle Rejeter. Les textes proviennent des chaînes localisées AIAsk, AIAccept et AIDiscard.

Un utilisateur par instance

Le composant conserve la question et la réponse en attente entre deux messages, donc une instance correspond à un utilisateur : créez-en une par session dans une application multi-utilisateurs. Les messages ne sont pas vérifiés par CSRF, comme tout autre message WebSocket htmx, gardez donc côté serveur l'autorisation de ce que fait OnAIAccept.

Éditions et plateformes

L'unité se compile lorsque SGC_HTML est défini, ce que sgcVer.inc ne fait pas pour Android et iOS. 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. Ce composant n'a pas de repli à base de règles, donc sur les autres plateformes, ou sans fournisseur, répondez vous-même dans OnAIPrompt.

Continuez l'exploration

Aide en ligneRéférence API complète et guide d’utilisation pour ce composant.
Guide de l'AI Data PackComment l'assistant, le modèle d'opérations et les composants de données s'articulent, et ce qui quitte la machine.
Tous les composants sgcHTMLParcourez la matrice complète des fonctionnalités de plus de 80 composants.
Télécharger la version d'essai gratuiteLa version d'essai de 30 jours fournit les projets de démonstration 60.HTML, dont 18.AIData, où un popover rédige la note d'un formulaire.
TarifsLicences Single, Team et Site avec code source complet.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à démarrer ?

Téléchargez la version d'essai gratuite et commencez à créer des interfaces web en Delphi, C++ Builder et .NET.