InlineAIPrompt

TsgcHTMLComponent_InlineAIPrompt: un popover que consulta al asistente justo donde trabaja el usuario, junto a un memo, un editor de texto enriquecido o en el encabezado de una columna de un grid, en Delphi, C++ Builder y .NET. Una persona decide qué conservar.

TsgcHTMLComponent_InlineAIPrompt

Un control con intervención humana. El prompt se escribe en el popover, la respuesta se muestra en él, y solo Aceptar notifica la respuesta a tu aplicación mediante OnAIAccept. El componente nunca escribe en un dataset, en un campo ni en la página. Responde a través de su propiedad AIAssistant, un TsgcHTMLAIAssistant.

Clase del componente

TsgcHTMLComponent_InlineAIPrompt (unidad sgcHTML_Component_InlineAIPrompt)

Genera

Un botón disparador y una tarjeta popover con el cuadro del prompt, la respuesta, Aceptar y Descartar

Familia

Chat e IA

Lenguajes

Delphi, C++ Builder, .NET

Asigna el asistente, enruta cuatro acciones, acepta la respuesta

Dale al popover un PromptID y un TargetName, asigna el AIAssistant, rellena Context con las filas que el asistente puede ver, y enruta las cuatro acciones que envía a Open, ProcessPrompt, Accept y Discard. Lo que se aceptó te llega en 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);

Propiedades y métodos clave

Los miembros que usarás con más frecuencia.

Con intervención humana

El prompt se escribe en el popover, la respuesta se muestra en él, y solo Accept notifica la respuesta a tu aplicación, mediante OnAIAccept. Discard cierra el popover y descarta la respuesta. El componente nunca escribe en un dataset, en un campo ni en la página: tu aplicación decide qué hacer con lo que vuelve. El texto del modelo se escribe a través de la capa de nodos, de modo que se escapa y nunca puede convertirse en marcado.

Métodos

Open abre el popover sin ningún prompt escrito todavía. ProcessPrompt(aPrompt) consulta primero a OnAIPrompt y, cuando este no lo gestionó, al asistente sobre Context, y deja el popover abierto con la respuesta en ResultText. Accept notifica ResultText mediante OnAIAccept y cierra el popover, y no notifica nada cuando no hay respuesta. Discard lo cierra.

Eventos

OnAIPrompt(Sender, aPrompt, aResult, aHandled) permite que tu aplicación responda por sí misma: establece aResult y aHandled. Deja aHandled en False y se consulta al asistente en su lugar. OnAIAccept(Sender, aValue) se dispara cuando una persona pulsa Aceptar, y aValue es la respuesta que estaba en pantalla.

El asistente y Context

Asigna un TsgcHTMLAIAssistant a AIAssistant, consulta AIAssistant. El popover llama a su SuggestColumnValues sobre Context, un TStringList con una línea por cada fila. Son datos de filas: no se envía nada mientras el asistente tenga AllowRowDataToProvider en False, y no se pregunta nada en absoluto cuando Context está vacío y OnAIPrompt no respondió.

Propiedades

PromptID (por defecto sgcInlineAI) es el id del popover y el valor enviado en el campo prompt. TargetName nombra el control al que pertenece la respuesta aceptada y se envía en el campo target, de modo que puedas enrutarla. Title, Placeholder y ButtonText establecen los textos, IsOpen muestra el panel, y PromptText y ResultText contienen lo preguntado y lo respondido.

Acciones que envía

No hay ruta HTTP. Cada control es un formulario data-sgc-ws-send: inlineAIOpen (campos prompt, target), inlineAIAsk (más text), inlineAIAccept y inlineAIDiscard. Despacha según action, comprueba prompt para saber qué popover lo envió, y devuelve el componente renderizado de nuevo. Un host que transmite una respuesta en streaming la renderiza de nuevo con más ResultText.

Salida

El disparador siempre se renderiza. Con IsOpen activado, se renderiza junto a él una tarjeta con el título, el cuadro del prompt, el botón de preguntar y, cuando hay una respuesta, la respuesta con un control Aceptar y otro Descartar. Los textos proceden de las cadenas localizadas AIAsk, AIAccept y AIDiscard.

Un usuario por instancia

El componente conserva la pregunta y la respuesta pendiente entre dos mensajes, así que una instancia equivale a un usuario: asígnala por sesión en una aplicación multiusuario. Los mensajes no se comprueban contra CSRF, como cualquier otro mensaje WebSocket de htmx, así que mantén en el servidor la autorización de lo que hace OnAIAccept.

Ediciones y plataformas

La unidad se compila cuando SGC_HTML está definido, algo que sgcVer.inc no hace para Android e iOS. Un proveedor necesita las unidades de IA de la edición Enterprise o All-Access, o el pack sgcAI, y solo funcionan en Windows. Este componente no tiene una alternativa basada en reglas, así que en otras plataformas, o sin proveedor, responde tú mismo en OnAIPrompt.

Sigue explorando

Ayuda en líneaReferencia completa de la API y guía de uso para este componente.
Guía de AI Data PackCómo encajan el asistente, el modelo de operaciones y los componentes de datos, y qué sale de la máquina.
Todos los componentes de sgcHTMLExplora la matriz completa de más de 80 componentes.
Descargar prueba gratuitaLa prueba de 30 días incluye los proyectos de demostración 60.HTML, entre ellos 18.AIData, donde un popover redacta la nota de un formulario.
PreciosLicencias Single, Team y Site con código fuente completo.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para empezar?

Descarga la prueba gratuita y empieza a crear interfaces web en Delphi, C++ Builder y .NET.