InlineAIPrompt

TsgcHTMLComponent_InlineAIPrompt: popover, który pyta asystenta dokładnie tam, gdzie pracuje użytkownik, obok pola memo, edytora tekstu sformatowanego lub w nagłówku kolumny siatki, w Delphi, C++ Builder i .NET. To człowiek decyduje, co zachować.

TsgcHTMLComponent_InlineAIPrompt

Kontrolka z człowiekiem w pętli. Prompt wpisuje się w popoverze, odpowiedź jest w nim pokazywana, a tylko przycisk Akceptuj zgłasza odpowiedź Twojej aplikacji przez OnAIAccept. Komponent nigdy nie zapisuje do zestawu danych, pola ani strony. Odpowiada przez swoją właściwość AIAssistant, czyli TsgcHTMLAIAssistant.

Klasa komponentu

TsgcHTMLComponent_InlineAIPrompt (jednostka sgcHTML_Component_InlineAIPrompt)

Renderuje

Przycisk wyzwalający i karta popover z polem promptu, odpowiedzią oraz przyciskami Akceptuj i Odrzuć

Rodzina

Czat i AI

Języki

Delphi, C++ Builder, .NET

Przypisz asystenta, skieruj cztery akcje, zaakceptuj odpowiedź

Nadaj popoverowi PromptID i TargetName, przypisz AIAssistant, wypełnij Context wierszami, które asystent może zobaczyć, i skieruj cztery akcje, które odsyła, do Open, ProcessPrompt, Accept i Discard. To, co zaakceptowano, dociera do Ciebie w 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);

Kluczowe właściwości i metody

Składniki, po które sięgasz najczęściej.

Człowiek w pętli

Prompt jest wpisywany w popoverze, odpowiedź jest w nim pokazywana, a tylko Accept zgłasza odpowiedź Twojej aplikacji, przez OnAIAccept. Discard zamyka popover i wyrzuca odpowiedź. Komponent nigdy nie zapisuje do zestawu danych, pola ani strony: Twoja aplikacja decyduje, co zrobić z tym, co wróci. Tekst modelu jest zapisywany przez warstwę węzłów, więc jest escapowany i nigdy nie może stać się znacznikami.

Metody

Open otwiera popover bez wpisanego jeszcze promptu. ProcessPrompt(aPrompt) pyta najpierw OnAIPrompt, a gdy ten tego nie obsłużył, asystenta na podstawie Context, i zostawia popover otwarty z odpowiedzią w ResultText. Accept zgłasza ResultText przez OnAIAccept i zamyka popover, a gdy nie ma odpowiedzi, niczego nie zgłasza. Discard go zamyka.

Wydarzenia

OnAIPrompt(Sender, aPrompt, aResult, aHandled) pozwala Twojej aplikacji odpowiedzieć samodzielnie: ustaw aResult i aHandled. Zostaw aHandled jako False, a zamiast tego zostanie zapytany asystent. OnAIAccept(Sender, aValue) jest wywoływane, gdy człowiek naciśnie Akceptuj, a aValue to odpowiedź, która była na ekranie.

Asystent i Context

Przypisz TsgcHTMLAIAssistant do AIAssistant, zobacz AIAssistant. Popover wywołuje jego SuggestColumnValues na Context, czyli TStringList z jedną linią na każdy wiersz. To są dane wierszy: nic nie jest wysyłane, dopóki asystent ma AllowRowDataToProvider równe False, a gdy Context jest pusty i OnAIPrompt nie odpowiedziało, nie jest zadawane żadne pytanie.

Właściwości

PromptID (domyślnie sgcInlineAI) to identyfikator popovera i wartość odsyłana w polu prompt. TargetName nazywa kontrolkę, do której należy zaakceptowana odpowiedź, i jest odsyłane w polu target, dzięki czemu możesz ją skierować. Title, Placeholder i ButtonText ustawiają teksty, IsOpen pokazuje panel, a PromptText i ResultText przechowują to, o co zapytano, i odpowiedź.

Akcje, które odsyła

Nie ma trasy HTTP. Każda kontrolka to formularz data-sgc-ws-send: inlineAIOpen (pola prompt, target), inlineAIAsk (plus text), inlineAIAccept i inlineAIDiscard. Rozdziel według action, sprawdź prompt, aby wiedzieć, który popover to wysłał, i wypchnij z powrotem ponownie wyrenderowany komponent. Host, który przesyła odpowiedź strumieniowo, renderuje go ponownie z większą ilością ResultText.

Wynik

Wyzwalacz jest zawsze renderowany. Przy włączonym IsOpen obok niego renderowana jest karta z tytułem, polem promptu, przyciskiem zapytania i, gdy jest już odpowiedź, odpowiedzią z kontrolkami Akceptuj i Odrzuć. Teksty pochodzą ze zlokalizowanych napisów AIAsk, AIAccept i AIDiscard.

Jeden użytkownik na instancję

Komponent przechowuje pytanie i oczekującą odpowiedź między dwoma komunikatami, więc jedna instancja to jeden użytkownik: w aplikacji wieloużytkownikowej utwórz osobną instancję dla każdej sesji. Komunikaty nie są sprawdzane pod kątem CSRF, jak każdy inny komunikat WebSocket htmx, więc autoryzację tego, co robi OnAIAccept, zachowaj po stronie serwera.

Edycje i platformy

Jednostka kompiluje się, gdy zdefiniowane jest SGC_HTML, czego sgcVer.inc nie robi dla Androida i iOS. Dostawca wymaga jednostek AI z edycji Enterprise lub All-Access albo pakietu sgcAI, a działają one tylko w Windows. Ten komponent nie ma zapasowego mechanizmu opartego na regułach, więc na innych platformach lub bez dostawcy odpowiedz samodzielnie w OnAIPrompt.

Poznawaj dalej

Pomoc onlinePełna dokumentacja API i przewodnik użytkowania tego komponentu.
Przewodnik po AI Data PackJak asystent, model operacji i komponenty danych współpracują ze sobą oraz co opuszcza maszynę.
Wszystkie komponenty sgcHTMLPrzejrzyj pełną matrycę funkcji 80+ komponentów.
Pobierz bezpłatną wersję próbną30-dniowa wersja próbna zawiera projekty demonstracyjne 60.HTML, w tym 18.AIData, w którym popover przygotowuje szkic notatki formularza.
CennikLicencje Single, Team i Site z pełnym kodem źródłowym.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy, aby zacząć?

Pobierz bezpłatną wersję próbną i zacznij budować interfejsy webowe w Delphi, C++ Builder i .NET.