Grok, desarrollado por xAI, es un modelo de IA de alto rendimiento diseñado para respuestas rápidas e inteligentes con conocimiento en tiempo real y capacidades de razonamiento avanzadas. Para los desarrolladores Delphi que quieren integrar Grok en sus aplicaciones, sgcWebSockets ofrece TsgcHTTP_API_Grok — un componente nativo que envuelve toda la API Grok de xAI con código Delphi limpio y con seguridad de tipos.
Tanto si estás creando asistentes conversacionales, analizando imágenes, orquestando flujos de trabajo aumentados con herramientas o haciendo streaming de respuestas en tiempo real, este componente te da acceso directo a todas las características de Grok. Sin boilerplate REST. Sin lidiar con JSON. Solo tienes que añadir el componente, configurar tu API key y empezar a construir.
Cobertura completa de la API
Todas las características principales de la API Grok de xAI están soportadas de serie.
|
Chat Completions Envía mensajes con system prompts, recibe respuestas de forma síncrona o por streaming. Control total sobre temperature, top-p, frequency y presence penalties. |
Streaming en tiempo real Haz streaming de respuestas token a token usando Server-Sent Events. Construye interfaces de usuario reactivas que muestren las respuestas a medida que se generan. |
Vision Analiza imágenes enviando datos codificados en base64 o URLs de imágenes junto con prompts de texto. Grok describe, interpreta y razona sobre contenido visual. |
|
Tool Use — Function Calling Define herramientas personalizadas con JSON Schema. Grok decide cuándo invocarlas, habilitando flujos de trabajo agénticos y de varios pasos. |
Gestión de modelos Lista todos los modelos Grok disponibles de forma programática. Consulta los IDs y capacidades de los modelos para seleccionar el más adecuado. |
Retry y logging integrados Reintento automático en fallos transitorios con número de intentos e intervalos de espera configurables. Logging completo de petición/respuesta para depuración. |
Primeros pasos
Integra xAI Grok en tu proyecto Delphi en menos de un minuto. Añade el componente, configura tu API key y envía tu primer mensaje.
// Create the component and configure the API key
var
Grok: TsgcHTTP_API_Grok;
vResponse: string;
begin
Grok := TsgcHTTP_API_Grok.Create(nil);
Try
Grok.GrokOptions.ApiKey := 'YOUR_API_KEY';
// Send a simple message to Grok
vResponse := Grok._CreateMessage(
'grok-3', 'Hello, Grok!');
ShowMessage(vResponse);
Finally
Grok.Free;
End;
end;
Dos estilos de API. Cada característica ofrece tanto métodos de conveniencia (basados en strings, con código mínimo) como clases tipadas de request/response (control total, seguridad de tipos). Elige el enfoque que mejor se adapte a tu caso de uso.
Chat Completions y Streaming
La API Chat Completions es la base de toda interacción con Grok. Envía texto con system prompts opcionales y recibe respuestas de forma síncrona o por streaming en tiempo real.
System Prompts
Controla el comportamiento de Grok proporcionando un system prompt que establezca el contexto, la personalidad o las restricciones de la conversación.
vResponse := Grok._CreateMessageWithSystem(
'grok-3',
'You are a helpful assistant that responds in Spanish.',
'What is the capital of France?');
// Returns: "La capital de Francia es París."
Streaming en tiempo real
Para interfaces de usuario reactivas, haz streaming de la respuesta de Grok token a token usando Server-Sent Events. Asigna el manejador de eventos OnHTTPAPISSE y llama a _CreateMessageStream.
// Enable streaming via SSE
Grok.OnHTTPAPISSE := OnSSEEvent;
Grok._CreateMessageStream('grok-3',
'Explain the theory of relativity.');
procedure TForm1.OnSSEEvent(Sender: TObject;
const aEvent, aData: string; var Cancel: Boolean);
begin
// aData: JSON payload with generated content
Memo1.Lines.Add(aData);
end;
API tipada avanzada
Para un control total sobre los parámetros de la petición — temperature, top-p, frequency penalty, presence penalty, stop sequences, número de completions — usa las clases tipadas de petición y respuesta.
var
oRequest: TsgcGrokClass_Request_ChatCompletion;
oMessage: TsgcGrokClass_Request_Message;
oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
oRequest := TsgcGrokClass_Request_ChatCompletion.Create;
Try
oRequest.Model := 'grok-3';
oRequest.MaxTokens := 2048;
oRequest.Temperature := 0.7;
oRequest.TopP := 0.9;
oRequest.FrequencyPenalty := 0.5;
oRequest.N := 1;
oMessage := TsgcGrokClass_Request_Message.Create;
oMessage.Role := 'user';
oMessage.Content := 'Explain quantum computing in simple terms.';
oRequest.Messages.Add(oMessage);
oResponse := Grok.CreateMessage(oRequest);
Try
if Length(oResponse.Choices) > 0 then
ShowMessage(oResponse.Choices[0].Message.Content);
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
Vision — Comprensión de imágenes
Grok puede analizar y razonar sobre imágenes. Envía fotografías, capturas de pantalla, diagramas o gráficos junto con un prompt de texto y recibe descripciones detalladas, extracción de datos o preguntas y respuestas visuales.
// Load an image and ask Grok to analyze it
var
vBase64: string;
begin
vBase64 := sgcBase64Encode(LoadFileToBytes('dashboard-screenshot.png'));
ShowMessage(Grok._CreateVisionMessage(
'grok-3',
'Analyze this dashboard and summarize the key metrics.',
vBase64, 'image/png'));
end;
Caso de uso. Automatiza el análisis de informes, extrae datos de capturas de pantalla, genera descripciones de contenido visual o construye asistentes con capacidades visuales — todo desde código Delphi nativo.
Tool Use — Function Calling
Define herramientas personalizadas con JSON Schema, y Grok decidirá cuándo y cómo invocarlas. Esta es la base para construir flujos de trabajo agénticos y de varios pasos que conectan la IA con tu lógica de negocio.
var
oRequest: TsgcGrokClass_Request_ChatCompletion;
oTool: TsgcGrokClass_Request_Tool;
oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
// Define a tool with JSON Schema
oTool := TsgcGrokClass_Request_Tool.Create;
oTool.Name := 'search_database';
oTool.Description := 'Search the product database by keyword';
oTool.Parameters :=
'{"type":"object","properties":{"query":{"type":"string",' +
'"description":"Search keyword"}},"required":["query"]}';
oRequest.Tools.Add(oTool);
oRequest.ToolChoice := 'auto';
oResponse := Grok.CreateMessage(oRequest);
// Check if Grok wants to call a tool
if oResponse.Choices[0].FinishReason = 'tool_calls' then
begin
for i := 0 to Length(oResponse.Choices[0].Message.ToolCalls) - 1 do
begin
vToolId := oResponse.Choices[0].Message.ToolCalls[i].Id;
vFuncName := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Name;
vFuncArgs := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Arguments;
// Execute the tool and return the result
end;
end;
Gestión de modelos
Consulta los modelos Grok disponibles de forma programática. Lista todos los modelos para descubrir nuevas capacidades a medida que están disponibles.
// List all available Grok models
vModels := Grok._GetModels;
// Typed API: access model properties directly
var
oModels: TsgcGrokClass_Response_Models;
i: Integer;
begin
oModels := Grok.GetModels;
Try
for i := 0 to Length(oModels.Data) - 1 do
Memo1.Lines.Add(oModels.Data[i].Id);
Finally
oModels.Free;
End;
end;
Configuración y opciones
Ajusta el comportamiento del componente con opciones de configuración completas.
| Propiedad | Descripción |
|---|---|
GrokOptions.ApiKey |
Tu API key de xAI (obligatorio) |
HttpOptions.ReadTimeout |
Timeout de lectura HTTP en milisegundos (predeterminado: 60000) |
LogOptions.Enabled |
Activa el logging de petición/respuesta |
RetryOptions.Enabled |
Reintento automático en fallos transitorios |
RetryOptions.Retries |
Número máximo de intentos de reintento (predeterminado: 3) |
RetryOptions.Wait |
Tiempo de espera entre reintentos en milisegundos (predeterminado: 3000) |
Parámetros de la petición
| Parámetro | Descripción |
|---|---|
Temperature |
Temperatura de muestreo (0.0–2.0). Valores más bajos = más determinista. |
TopP |
Nucleus sampling (0.0–1.0). Controla el corte de probabilidad acumulada. |
MaxTokens |
Número máximo de tokens en la respuesta (predeterminado: 4096). |
FrequencyPenalty |
Penaliza tokens en función de la frecuencia en el texto hasta el momento. |
PresencePenalty |
Penaliza tokens en función de si aparecen en el texto hasta el momento. |
N |
Número de completions a generar (predeterminado: 1). |
ToolChoice |
Controla la selección de herramientas: 'auto', 'none' o 'required'. |
¿Por qué Grok? Construido por xAI con un enfoque en la utilidad y el conocimiento en tiempo real, Grok destaca en tareas que requieren información actualizada y razonamiento matizado. El componente sgcWebSockets facilita cambiar entre Grok y otros proveedores de IA manteniendo tu código Delphi limpio y consistente.
