Grok Delphi API Client

· Komponenten

Grok, entwickelt von xAI, ist ein leistungsstarkes KI-Modell, das auf schnelle, intelligente Antworten mit Echtzeitwissen und fortgeschrittenen Reasoning-Fähigkeiten ausgelegt ist. Für Delphi-Entwickler, die Grok in ihre Anwendungen integrieren möchten, stellt sgcWebSockets TsgcHTTP_API_Grok bereit — eine native Komponente, die die gesamte xAI-Grok-API mit sauberem, typsicherem Delphi-Code kapselt.

Egal ob du Konversationsassistenten baust, Bilder analysierst, toolgestützte Workflows orchestrierst oder Antworten in Echtzeit streamst — diese Komponente gibt dir direkten Zugriff auf jede Grok-Funktion. Kein REST-Boilerplate. Kein JSON-Gefrickel. Komponente einbinden, API-Schlüssel setzen und loslegen.

Vollständige API-Abdeckung

Jede wichtige Funktion der xAI-Grok-API wird sofort unterstützt.

Chat Completions
Sende Nachrichten mit System-Prompts und empfange Antworten synchron oder gestreamt. Volle Kontrolle über Temperature, Top-p, Frequency- und Presence-Penalties.
Echtzeit-Streaming
Streame Antworten Token für Token über Server-Sent Events. Baue reaktionsfähige UIs, die Antworten anzeigen, während sie generiert werden.
Vision
Analysiere Bilder, indem du base64-kodierte Daten oder Bild-URLs zusammen mit Text-Prompts sendest. Grok beschreibt, interpretiert und schließt aus visuellen Inhalten.
Tool Use — Function Calling
Definiere eigene Tools mit JSON Schema. Grok entscheidet, wann sie aufgerufen werden, und ermöglicht so agentische, mehrstufige Workflows.
Modellverwaltung
Liste alle verfügbaren Grok-Modelle programmatisch auf. Frage Modell-IDs und Fähigkeiten ab, um die beste Wahl zu treffen.
Eingebauter Retry & Logging
Automatischer Retry bei vorübergehenden Fehlern mit konfigurierbaren Versuchen und Wartezeiten. Vollständiges Request/Response-Logging zum Debuggen.

Erste Schritte

Integriere xAI Grok in unter einer Minute in dein Delphi-Projekt. Komponente einbinden, API-Schlüssel konfigurieren und die erste Nachricht senden.

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

Zwei API-Stile. Jede Funktion bietet sowohl Convenience-Methoden (string-basiert, minimaler Code) als auch typisierte Request/Response-Klassen (volle Kontrolle, Typsicherheit). Wähle den Ansatz, der am besten zu deinem Anwendungsfall passt.

Chat Completions & Streaming

Die Chat-Completions-API ist die Grundlage jeder Grok-Interaktion. Sende Text mit optionalen System-Prompts und empfange Antworten synchron oder in Echtzeit gestreamt.

System-Prompts

Steuere Groks Verhalten, indem du einen System-Prompt setzt, der Kontext, Persönlichkeit oder Vorgaben für die Konversation festlegt.

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."

Echtzeit-Streaming

Für reaktionsfähige Oberflächen kannst du Groks Antwort Token für Token über Server-Sent Events streamen. Weise den Event-Handler OnHTTPAPISSE zu und rufe _CreateMessageStream auf.

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

Erweiterte typisierte API

Für volle Kontrolle über die Request-Parameter — Temperature, Top-p, Frequency Penalty, Presence Penalty, Stop-Sequenzen, Anzahl der Completions — nutze die typisierten Request- und Response-Klassen.

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 — Bildverständnis

Grok kann Bilder analysieren und über sie reflektieren. Sende Fotos, Screenshots, Diagramme oder Charts zusammen mit einem Text-Prompt und erhalte detaillierte Beschreibungen, Datenextraktionen oder visuelle Q&A.

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

Anwendungsfall. Automatisiere die Auswertung von Berichten, extrahiere Daten aus Screenshots, erzeuge Beschreibungen visueller Inhalte oder baue bildbewusste Assistenten — alles aus nativem Delphi-Code.

Tool Use — Function Calling

Definiere eigene Tools mit JSON Schema, und Grok entscheidet, wann und wie es sie aufruft. Das ist die Grundlage für agentische, mehrstufige Workflows, die die KI mit deiner Geschäftslogik verbinden.

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;

Modellverwaltung

Frage verfügbare Grok-Modelle programmatisch ab. Liste alle Modelle, um neue Fähigkeiten zu entdecken, sobald sie verfügbar sind.

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

Konfiguration & Optionen

Feinjustiere das Verhalten der Komponente mit umfassenden Konfigurationsoptionen.

Eigenschaft Beschreibung
GrokOptions.ApiKey Dein xAI-API-Schlüssel (erforderlich)
HttpOptions.ReadTimeout HTTP-Read-Timeout in Millisekunden (Standard: 60000)
LogOptions.Enabled Request/Response-Logging aktivieren
RetryOptions.Enabled Automatischer Retry bei vorübergehenden Fehlern
RetryOptions.Retries Maximale Anzahl der Retry-Versuche (Standard: 3)
RetryOptions.Wait Wartezeit zwischen Retries in Millisekunden (Standard: 3000)

Request-Parameter

Parameter Beschreibung
Temperature Sampling-Temperatur (0.0–2.0). Niedrigere Werte = deterministischer.
TopP Nucleus-Sampling (0.0–1.0). Steuert den kumulativen Wahrscheinlichkeits-Cutoff.
MaxTokens Maximale Anzahl Tokens in der Antwort (Standard: 4096).
FrequencyPenalty Bestraft Tokens basierend auf ihrer Häufigkeit im bisherigen Text.
PresencePenalty Bestraft Tokens basierend darauf, ob sie im bisherigen Text vorkommen.
N Anzahl der zu generierenden Completions (Standard: 1).
ToolChoice Steuert die Tool-Auswahl: 'auto', 'none' oder 'required'.

Warum Grok? Von xAI mit Fokus auf Hilfsbereitschaft und Echtzeitwissen entwickelt, brilliert Grok bei Aufgaben, die aktuelle Informationen und nuanciertes Reasoning erfordern. Die sgcWebSockets-Komponente macht es leicht, zwischen Grok und anderen KI-Anbietern zu wechseln und dabei deinen Delphi-Code sauber und konsistent zu halten.