Client API Grok per Delphi

· Componenti

Grok, sviluppato da xAI, è un modello AI ad alte prestazioni progettato per risposte rapide e intelligenti con conoscenza in tempo reale e capacità di ragionamento avanzate. Per gli sviluppatori Delphi che vogliono integrare Grok nelle loro applicazioni, sgcWebSockets fornisce TsgcHTTP_API_Grok — un componente nativo che incapsula l'intera API xAI Grok con codice Delphi pulito e type-safe.

Che tu stia creando assistenti conversazionali, analizzando immagini, orchestrando flussi di lavoro aumentati da tool o trasmettendo risposte in tempo reale, questo componente ti dà accesso diretto a ogni funzionalità di Grok. Niente boilerplate REST. Niente lotte con il JSON. Basta posare il componente, impostare la tua API key e iniziare a costruire.

Copertura completa dell'API

Ogni funzionalità principale dell'API xAI Grok è supportata fin da subito.

Chat Completions
Invia messaggi con prompt di sistema, ricevi risposte sincrone o in streaming. Pieno controllo su temperature, top-p, frequency e presence penalty.
Streaming in tempo reale
Trasmetti le risposte token per token usando Server-Sent Events. Costruisci UI reattive che mostrano le risposte mentre vengono generate.
Vision
Analizza immagini inviando dati codificati in base64 o URL di immagini insieme ai prompt testuali. Grok descrive, interpreta e ragiona sui contenuti visivi.
Tool Use — Function Calling
Definisci tool personalizzati con JSON Schema. Grok decide quando invocarli, abilitando flussi di lavoro agentici e multi-step.
Gestione dei modelli
Elenca tutti i modelli Grok disponibili in modo programmatico. Interroga gli ID e le capacità dei modelli per scegliere quello più adatto.
Retry e logging integrati
Retry automatico in caso di errori transitori con tentativi e intervalli di attesa configurabili. Logging completo di richieste/risposte per il debug.

Per iniziare

Integra xAI Grok nel tuo progetto Delphi in meno di un minuto. Posa il componente, configura la tua API key e invia il tuo primo messaggio.

// 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;

Due stili di API. Ogni funzionalità offre sia metodi convenienti (basati su stringhe, codice minimo) sia classi tipizzate di richiesta/risposta (pieno controllo, type safety). Scegli l'approccio più adatto al tuo caso d'uso.

Chat Completions e Streaming

L'API Chat Completions è il fondamento di ogni interazione con Grok. Invia testo con prompt di sistema opzionali e ricevi risposte sincrone o in streaming in tempo reale.

Prompt di sistema

Controlla il comportamento di Grok fornendo un prompt di sistema che imposta il contesto, la personalità o i vincoli per la conversazione.

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 in tempo reale

Per interfacce utente reattive, trasmetti la risposta di Grok token per token usando Server-Sent Events. Assegna il gestore di evento OnHTTPAPISSE e chiama _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 tipizzata avanzata

Per il pieno controllo sui parametri della richiesta — temperature, top-p, frequency penalty, presence penalty, stop sequence, numero di completamenti — usa le classi tipizzate di richiesta e risposta.

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 — Comprensione delle immagini

Grok può analizzare e ragionare sulle immagini. Invia fotografie, screenshot, diagrammi o grafici insieme a un prompt testuale e ricevi descrizioni dettagliate, estrazione di dati o Q&A visivo.

// 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 d'uso. Automatizza l'analisi dei report, estrai dati dagli screenshot, genera descrizioni di contenuti visivi o costruisci assistenti consapevoli delle immagini — il tutto da codice Delphi nativo.

Tool Use — Function Calling

Definisci tool personalizzati con JSON Schema e Grok deciderà quando e come invocarli. Questa è la base per costruire flussi di lavoro agentici e multi-step che collegano l'AI alla tua logica di business.

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;

Gestione dei modelli

Interroga i modelli Grok disponibili in modo programmatico. Elenca tutti i modelli per scoprire nuove capacità man mano che diventano disponibili.

// 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;

Configurazione e opzioni

Affina il comportamento del componente con opzioni di configurazione complete.

Proprietà Descrizione
GrokOptions.ApiKey La tua API key xAI (obbligatoria)
HttpOptions.ReadTimeout Timeout di lettura HTTP in millisecondi (predefinito: 60000)
LogOptions.Enabled Abilita il logging di richieste/risposte
RetryOptions.Enabled Retry automatico in caso di errori transitori
RetryOptions.Retries Numero massimo di tentativi di retry (predefinito: 3)
RetryOptions.Wait Tempo di attesa tra i retry in millisecondi (predefinito: 3000)

Parametri della richiesta

Parametro Descrizione
Temperature Temperatura di campionamento (0.0–2.0). Valori più bassi = più deterministico.
TopP Nucleus sampling (0.0–1.0). Controlla il cutoff della probabilità cumulativa.
MaxTokens Numero massimo di token nella risposta (predefinito: 4096).
FrequencyPenalty Penalizza i token in base alla frequenza nel testo finora.
PresencePenalty Penalizza i token in base al fatto che compaiano o meno nel testo finora.
N Numero di completamenti da generare (predefinito: 1).
ToolChoice Controlla la selezione del tool: 'auto', 'none' o 'required'.

Perché Grok? Costruito da xAI con un focus su utilità e conoscenza in tempo reale, Grok eccelle nei compiti che richiedono informazioni aggiornate e ragionamento sfumato. Il componente sgcWebSockets rende facile passare tra Grok e altri provider AI mantenendo il tuo codice Delphi pulito e coerente.