InlineAIPrompt

TsgcHTMLComponent_InlineAIPrompt: ein Popover, das den Assistenten genau dort befragt, wo der Benutzer arbeitet, neben einem Memo, einem Rich-Editor oder in der Kopfzeile einer Grid-Spalte, in Delphi, C++ Builder und .NET. Eine Person entscheidet, was behalten wird.

TsgcHTMLComponent_InlineAIPrompt

Ein Steuerelement nach dem Prinzip Human in the Loop. Der Prompt wird im Popover eingegeben, die Antwort wird darin angezeigt, und nur Übernehmen meldet die Antwort über OnAIAccept an Ihre Anwendung. Die Komponente schreibt nie in ein Dataset, ein Feld oder die Seite. Sie antwortet über ihre Eigenschaft AIAssistant, einen TsgcHTMLAIAssistant.

Komponentenklasse

TsgcHTMLComponent_InlineAIPrompt (Unit sgcHTML_Component_InlineAIPrompt)

Rendert

Eine Trigger-Schaltfläche und eine Popover-Karte mit dem Prompt-Feld, der Antwort sowie Übernehmen und Verwerfen

Familie

Chat & KI

Sprachen

Delphi, C++ Builder, .NET

Den Assistenten zuweisen, vier Aktionen weiterleiten, die Antwort übernehmen

Geben Sie dem Popover eine PromptID und einen TargetName, weisen Sie AIAssistant zu, füllen Sie Context mit den Zeilen, die der Assistent sehen darf, und leiten Sie die vier Aktionen, die es sendet, an Open, ProcessPrompt, Accept und Discard weiter. Was übernommen wurde, erreicht Sie 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);

Wichtige Eigenschaften & Methoden

Die Member, die Sie am häufigsten verwenden.

Human in the Loop

Der Prompt wird im Popover eingegeben, die Antwort wird darin angezeigt, und nur Accept meldet die Antwort über OnAIAccept an Ihre Anwendung. Discard schließt das Popover und verwirft die Antwort. Die Komponente schreibt nie in ein Dataset, ein Feld oder die Seite: Ihre Anwendung entscheidet, was mit dem Zurückgelieferten geschieht. Modelltext wird über die Node-Schicht geschrieben, sodass er maskiert wird und nie zu Markup werden kann.

Methoden

Open öffnet das Popover, ohne dass ein Prompt eingegeben ist. ProcessPrompt(aPrompt) fragt zuerst OnAIPrompt und, wenn dieses Ereignis ihn nicht beantwortet hat, den Assistenten über Context und lässt das Popover mit der Antwort in ResultText geöffnet. Accept meldet ResultText über OnAIAccept und schließt das Popover; ohne Antwort meldet es nichts. Discard schließt es.

Ereignisse

Mit OnAIPrompt(Sender, aPrompt, aResult, aHandled) kann Ihre Anwendung selbst antworten: Setzen Sie aResult und aHandled. Lassen Sie aHandled auf False, wird stattdessen der Assistent gefragt. OnAIAccept(Sender, aValue) wird ausgelöst, wenn eine Person auf Übernehmen drückt, und aValue ist die Antwort, die auf dem Bildschirm stand.

Der Assistent und Context

Weisen Sie einen TsgcHTMLAIAssistant der Eigenschaft AIAssistant zu, siehe AIAssistant. Das Popover ruft dessen SuggestColumnValues über Context auf, eine TStringList mit einer Zeile je Datenzeile. Das sind Zeilendaten: Solange beim Assistenten AllowRowDataToProvider auf False steht, wird nichts gesendet, und wenn Context leer ist und OnAIPrompt nicht geantwortet hat, wird überhaupt nichts gefragt.

Eigenschaften

PromptID (Standard sgcInlineAI) ist die ID des Popovers und der im Feld prompt gesendete Wert. TargetName benennt das Steuerelement, zu dem die übernommene Antwort gehört, und wird im Feld target gesendet, sodass Sie sie weiterleiten können. Title, Placeholder und ButtonText legen die Texte fest, IsOpen zeigt das Panel an, und PromptText und ResultText enthalten, was gefragt und geantwortet wurde.

Aktionen, die sie sendet

Es gibt keine HTTP-Route. Jedes Steuerelement ist ein data-sgc-ws-send-Formular: inlineAIOpen (Felder prompt, target), inlineAIAsk (zusätzlich text), inlineAIAccept und inlineAIDiscard. Verzweigen Sie anhand von action, prüfen Sie prompt, um zu wissen, welches Popover sie gesendet hat, und schicken Sie die neu gerenderte Komponente zurück. Ein Host, der eine Antwort streamt, rendert die Komponente mit jeweils mehr ResultText neu.

Ausgabe

Der Trigger wird immer gerendert. Ist IsOpen aktiviert, wird daneben eine Karte gerendert, mit dem Titel, dem Prompt-Feld, der Schaltfläche zum Fragen und, sobald es eine Antwort gibt, der Antwort mit den Steuerelementen Übernehmen und Verwerfen. Die Texte stammen aus den lokalisierten Zeichenfolgen AIAsk, AIAccept und AIDiscard.

Ein Benutzer pro Instanz

Die Komponente hält die Frage und die ausstehende Antwort zwischen zwei Nachrichten, daher entspricht eine Instanz einem Benutzer: In einer Mehrbenutzeranwendung halten Sie pro Sitzung eine eigene Instanz vor. Nachrichten werden nicht auf CSRF geprüft, wie jede andere htmx-WebSocket-Nachricht, daher sollten Sie die Autorisierung dessen, was OnAIAccept tut, auf dem Server halten.

Editionen und Plattformen

Die Unit kompiliert, wenn SGC_HTML definiert ist, was sgcVer.inc für Android und iOS nicht tut. 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. Diese Komponente hat keinen regelbasierten Fallback, daher antworten Sie auf anderen Plattformen oder ohne Provider selbst in OnAIPrompt.

Weiter entdecken

Online-HilfeVollständige API-Referenz und Verwendungshandbuch für diese Komponente.
Anleitung zum AI Data PackWie der Assistent, das Operationsmodell und die Datenkomponenten zusammenpassen und was den Rechner verlässt.
Alle sgcHTML-KomponentenDurchsuchen Sie die vollständige Funktionsmatrix von über 80 Komponenten.
Kostenlose Testversion herunterladenDie 30-Tage-Testversion enthält die 60.HTML-Demoprojekte, darunter 18.AIData, in dem ein Popover die Notiz eines Formulars entwirft.
PreiseSingle-, Team- und Site-Lizenzen mit vollständigem Quellcode.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit loszulegen?

Laden Sie die kostenlose Testversion herunter und beginnen Sie, Web-UIs in Delphi, C++ Builder und .NET zu erstellen.