InlineAIPrompt

TsgcHTMLComponent_InlineAIPrompt: um popover que consulta o assistente exatamente onde o usuário trabalha, ao lado de um memo, de um editor rico ou no cabeçalho de uma coluna de grid, em Delphi, C++ Builder e .NET. Uma pessoa decide o que manter.

TsgcHTMLComponent_InlineAIPrompt

Um controle com humano no circuito. O prompt é digitado no popover, a resposta é exibida nele, e só Accept informa a resposta à sua aplicação por meio de OnAIAccept. O componente nunca escreve em um dataset, em um campo ou na página. Ele responde por meio da sua propriedade AIAssistant, um TsgcHTMLAIAssistant.

Classe do componente

TsgcHTMLComponent_InlineAIPrompt (unit sgcHTML_Component_InlineAIPrompt)

Renderiza

Um botão de gatilho e um card popover com a caixa de prompt, a resposta, Accept e Discard

Família

Chat & IA

Linguagens

Delphi, C++ Builder, .NET

Atribua o assistente, encaminhe quatro ações, aceite a resposta

Dê ao popover um PromptID e um TargetName, atribua o AIAssistant, preencha Context com as linhas que o assistente pode ver e encaminhe as quatro ações que ele envia para Open, ProcessPrompt, Accept e Discard. O que foi aceito chega a você em 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);

Principais propriedades & métodos

Os membros que você usa com mais frequência.

Humano no circuito

O prompt é digitado no popover, a resposta é exibida nele, e só Accept informa a resposta à sua aplicação, por meio de OnAIAccept. Discard fecha o popover e descarta a resposta. O componente nunca escreve em um dataset, em um campo ou na página: a sua aplicação decide o que fazer com o que volta. O texto do modelo é escrito pela camada de nós, então é escapado e nunca pode virar markup.

Métodos

Open abre o popover sem nenhum prompt digitado ainda. ProcessPrompt(aPrompt) consulta primeiro OnAIPrompt e, quando ele não tratou o pedido, o assistente sobre Context, e deixa o popover aberto com a resposta em ResultText. Accept informa ResultText por meio de OnAIAccept e fecha o popover, e não informa nada quando não há resposta. Discard o fecha.

Eventos

OnAIPrompt(Sender, aPrompt, aResult, aHandled) permite que a sua aplicação responda por conta própria: defina aResult e aHandled. Deixe aHandled como False e o assistente é consultado em seu lugar. OnAIAccept(Sender, aValue) dispara quando uma pessoa pressiona Accept, e aValue é a resposta que estava na tela.

O assistente e o Context

Atribua um TsgcHTMLAIAssistant a AIAssistant, veja AIAssistant. O popover chama o SuggestColumnValues dele sobre Context, uma TStringList com um item de texto para cada linha de dados. Isso são dados de linhas: nada é enviado enquanto o assistente tem AllowRowDataToProvider em False, e nada é perguntado quando Context está vazio e OnAIPrompt não respondeu.

Propriedades

PromptID (padrão sgcInlineAI) é o id do popover e o valor enviado no campo prompt. TargetName nomeia o controle a que a resposta aceita pertence e é enviado no campo target, para que você possa encaminhá-la. Title, Placeholder e ButtonText definem os textos, IsOpen mostra o painel, e PromptText e ResultText guardam o que foi perguntado e respondido.

Ações que ela envia

Não há rota HTTP. Todo controle é um formulário data-sgc-ws-send: inlineAIOpen (campos prompt, target), inlineAIAsk (mais text), inlineAIAccept e inlineAIDiscard. Despache por action, confira prompt para saber qual popover o enviou e envie de volta o componente renderizado de novo. Um host que transmite uma resposta em streaming a renderiza de novo com mais ResultText.

Saída

O gatilho é sempre renderizado. Com IsOpen ligado, um card é renderizado ao lado dele com o título, a caixa de prompt, o botão de perguntar e, quando há uma resposta, a resposta com um controle Accept e um Discard. Os textos vêm das strings localizadas AIAsk, AIAccept e AIDiscard.

Um usuário por instância

O componente guarda a pergunta e a resposta pendente entre duas mensagens, então uma instância é um usuário: use uma instância por sessão em uma aplicação multiusuário. As mensagens não são verificadas contra CSRF, como qualquer outra mensagem WebSocket do htmx, então mantenha no servidor a autorização do que OnAIAccept faz.

Edições e plataformas

A unit compila quando SGC_HTML está definido, o que o sgcVer.inc não faz para Android e iOS. Um provedor precisa das units de IA da edição Enterprise ou All-Access, ou do pacote sgcAI, e elas são somente Windows. Este componente não tem fallback baseado em regras, então em outras plataformas, ou sem provedor, responda você mesmo em OnAIPrompt.

Continue explorando

Ajuda onlineReferência completa da API e guia de uso para este componente.
Guia do AI Data PackComo o assistente, o modelo de operações e os componentes de dados se encaixam, e o que sai da máquina.
Todos os Componentes sgcHTMLExplore a matriz completa de recursos com mais de 80 componentes.
Baixar Versão de Avaliação GratuitaA avaliação de 30 dias inclui os projetos de demonstração 60.HTML, entre eles o 18.AIData, em que um popover redige a observação de um formulário.
PreçosLicenças Single, Team e Site com código-fonte completo.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Pronto para Começar?

Baixe a versão de avaliação gratuita e comece a construir UIs web em Delphi, C++ Builder e .NET.