InlineAIPrompt

TsgcHTMLComponent_InlineAIPrompt: een popover die de assistent bevraagt precies waar de gebruiker werkt, naast een memo, een rich editor of in de kop van een rasterkolom, in Delphi, C++ Builder en .NET. Een persoon beslist wat er blijft.

TsgcHTMLComponent_InlineAIPrompt

Een human-in-the-loop-besturingselement. De prompt wordt in de popover getypt, het antwoord wordt erin getoond, en alleen Accept geeft het antwoord via OnAIAccept door aan je applicatie. Het component schrijft nooit in een dataset, een veld of de pagina. Het antwoordt via zijn eigenschap AIAssistant, een TsgcHTMLAIAssistant.

Componentklasse

TsgcHTMLComponent_InlineAIPrompt (unit sgcHTML_Component_InlineAIPrompt)

Rendert

Een triggerknop en een popoverkaart met het promptvak, het antwoord, Accept en Discard

Familie

Chat en AI

Talen

Delphi, C++ Builder, .NET

Wijs de assistent toe, routeer vier acties, accepteer het antwoord

Geef de popover een PromptID en een TargetName, wijs de AIAssistant toe, vul Context met de rijen die de assistent mag zien, en routeer de vier acties die de popover post naar Open, ProcessPrompt, Accept en Discard. Wat is geaccepteerd, bereikt je in 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);

Belangrijkste eigenschappen en methoden

De members die je het vaakst gebruikt.

Human-in-the-loop

De prompt wordt in de popover getypt, het antwoord wordt erin getoond, en alleen Accept geeft het antwoord via OnAIAccept door aan je applicatie. Discard sluit de popover en gooit het antwoord weg. Het component schrijft nooit in een dataset, een veld of de pagina: je applicatie beslist wat er met het teruggekomen antwoord gebeurt. Modeltekst wordt via de node-laag geschreven, dus die wordt geëscaped en kan nooit markup worden.

Methoden

Open opent de popover zonder dat er al een prompt is getypt. ProcessPrompt(aPrompt) vraagt eerst OnAIPrompt en, wanneer die het niet afhandelde, de assistent over Context, en laat de popover open met het antwoord in ResultText. Accept geeft ResultText via OnAIAccept door en sluit de popover, en geeft niets door wanneer er geen antwoord is. Discard sluit die.

Events

OnAIPrompt(Sender, aPrompt, aResult, aHandled) laat je applicatie zelf antwoorden: stel aResult en aHandled in. Laat je aHandled op False, dan wordt in plaats daarvan de assistent gevraagd. OnAIAccept(Sender, aValue) wordt aangeroepen wanneer een persoon op Accept drukt, en aValue is het antwoord dat op het scherm stond.

De assistent en Context

Wijs een TsgcHTMLAIAssistant toe aan AIAssistant, zie AIAssistant. De popover roept de SuggestColumnValues ervan aan over Context, een TStringList met één regel per rij. Dat zijn rijgegevens: er wordt niets verstuurd zolang AllowRowDataToProvider van de assistent False is, en er wordt helemaal niets gevraagd wanneer Context leeg is en OnAIPrompt niet antwoordde.

Eigenschappen

PromptID (standaard sgcInlineAI) is de id van de popover en de waarde die in het veld prompt wordt gepost. TargetName geeft de naam van het besturingselement waartoe het geaccepteerde antwoord behoort en wordt gepost in het veld target, zodat je het kunt routeren. Title, Placeholder en ButtonText bepalen de teksten, IsOpen toont het paneel, en PromptText en ResultText bevatten wat is gevraagd en beantwoord.

Acties die het post

Er is geen HTTP-route. Elk besturingselement is een data-sgc-ws-send-formulier: inlineAIOpen (velden prompt, target), inlineAIAsk (plus text), inlineAIAccept en inlineAIDiscard. Verdeel op basis van action, controleer prompt om te weten welke popover het verstuurde, en push het opnieuw gerenderde component terug. Een host die een antwoord streamt, rendert het opnieuw met meer ResultText.

Uitvoer

De trigger wordt altijd gerenderd. Met IsOpen aan wordt ernaast een kaart gerenderd met de titel, het promptvak, de vraagknop en, zodra er een antwoord is, het antwoord met een Accept- en een Discard-knop. De teksten komen uit de gelokaliseerde strings AIAsk, AIAccept en AIDiscard.

Eén gebruiker per instantie

Het component bewaart de vraag en het openstaande antwoord tussen twee berichten, dus één instantie is één gebruiker: houd in een applicatie met meerdere gebruikers per sessie een eigen instantie aan. Berichten worden niet op CSRF gecontroleerd, zoals elk ander htmx-WebSocket-bericht, dus houd de autorisatie van wat OnAIAccept doet op de server.

Edities en platforms

De unit compileert wanneer SGC_HTML is gedefinieerd, wat sgcVer.inc niet doet voor Android en iOS. Een provider heeft de AI-units van de Enterprise- of All-Access-editie nodig, of het sgcAI-pack, en die zijn alleen voor Windows. Dit component heeft geen regelgebaseerde terugval, dus antwoord op andere platforms, of zonder provider, zelf in OnAIPrompt.

Blijf ontdekken

Online helpVolledige API-referentie en gebruikshandleiding voor dit onderdeel.
AI Data Pack-handleidingHoe de assistent, het bewerkingenmodel en de datacomponenten in elkaar passen, en wat de machine verlaat.
Alle sgcHTML-componentenBlader door de volledige functiematrix van 80+ componenten.
Download gratis proefversieDe proefversie van 30 dagen bevat de 60.HTML-demoprojecten, waaronder 18.AIData, waarin een popover de notitie van een formulier opstelt.
PrijzenSingle-, Team- en Site-licenties met volledige broncode.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om te beginnen?

Download de gratis proefversie en begin met het bouwen van web-UI's in Delphi, C++ Builder en .NET.