Grok Delphi API-client

· Componenten

Grok, ontwikkeld door xAI, is een high-performance AI-model dat is ontworpen voor snelle, intelligente antwoorden met realtime-kennis en geavanceerde redeneer-mogelijkheden. Voor Delphi-ontwikkelaars die Grok in hun toepassingen willen integreren, biedt sgcWebSockets TsgcHTTP_API_Grok — een native component dat de volledige xAI Grok-API verpakt in nette, type-veilige Delphi-code.

Of je nu conversationele assistenten bouwt, afbeeldingen analyseert, tool-uitgebreide workflows orkestreert of realtime-antwoorden streamt: dit component geeft je rechtstreeks toegang tot elke Grok-functie. Geen REST-boilerplate. Geen JSON-gepuzzel. Plaats het component, stel je API-sleutel in en begin met bouwen.

Volledige API-dekking

Elke belangrijke functie van de xAI Grok-API wordt direct ondersteund.

Chat Completions
Verstuur berichten met system-prompts en ontvang antwoorden synchroon of gestreamd. Volledige controle over temperature, top-p, frequency- en presence-penalty.
Realtime-streaming
Stream antwoorden token voor token via Server-Sent Events. Bouw responsive UI's die antwoorden tonen terwijl ze worden gegenereerd.
Vision
Analyseer afbeeldingen door base64-gecodeerde data of afbeeldings-URL's naast tekst-prompts mee te sturen. Grok beschrijft, interpreteert en redeneert over visuele inhoud.
Tool Use — function-calling
Definieer eigen tools met JSON Schema. Grok beslist wanneer hij ze aanroept, waardoor agentische, meerstaps workflows mogelijk worden.
Modelbeheer
Vraag programmatisch alle beschikbare Grok-modellen op. Bekijk model-ID's en mogelijkheden om het beste te kiezen.
Ingebouwde retry & logging
Automatisch opnieuw proberen bij tijdelijke storingen met instelbare pogingen en wachttijden. Volledige request/response-logging voor debuggen.

Aan de slag

Integreer xAI Grok binnen een minuut in je Delphi-project. Plaats het component, configureer je API-sleutel en verstuur je eerste bericht.

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

Twee API-stijlen. Elke functie biedt zowel gemaks-methoden (op basis van strings, minimale code) als getypte request/response-klassen (volledige controle, typeveiligheid). Kies de aanpak die het beste past bij jouw use case.

Chat Completions & streaming

De Chat-Completions-API is de basis van elke Grok-interactie. Verstuur tekst met een optionele system-prompt en ontvang antwoorden synchroon of in realtime gestreamd.

System-prompts

Stuur het gedrag van Grok bij door een system-prompt mee te geven die de context, persoonlijkheid of beperkingen voor het gesprek vastlegt.

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

Realtime-streaming

Stream voor responsive-gebruikersinterfaces het antwoord van Grok token voor token via Server-Sent Events. Wijs de event-handler OnHTTPAPISSE toe en roep _CreateMessageStream aan.

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

Geavanceerde getypeerde API

Gebruik de getypte request- en response-klassen voor volledige controle over request-parameters — temperature, top-p, frequency-penalty, presence-penalty, stop-sequences, aantal completions.

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 — beeldherkenning

Grok kan afbeeldingen analyseren en erover redeneren. Stuur foto's, screenshots, diagrammen of grafieken naast een tekst-prompt mee en ontvang gedetailleerde beschrijvingen, data-extractie of visuele 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;

Use case. Automatiseer rapportanalyse, extraheer data uit screenshots, genereer beschrijvingen van visuele inhoud of bouw beeld-bewuste assistenten — allemaal vanuit native Delphi-code.

Tool Use — function-calling

Definieer eigen tools met JSON Schema en Grok beslist wanneer en hoe hij ze aanroept. Dit is de basis voor het bouwen van agentische, meerstaps workflows die de AI verbinden met je bedrijfslogica.

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;

Modelbeheer

Vraag programmatisch de beschikbare Grok-modellen op. Toon alle modellen om nieuwe mogelijkheden te ontdekken zodra ze beschikbaar komen.

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

Configuratie & opties

Verfijn het gedrag van het component met uitgebreide configuratie-opties.

EigenschapBeschrijving
GrokOptions.ApiKeyJe xAI-API-sleutel (verplicht)
HttpOptions.ReadTimeoutHTTP-leestime-out in milliseconden (standaard: 60000)
LogOptions.EnabledSchakel request/response-logging in
RetryOptions.EnabledAutomatisch opnieuw proberen bij tijdelijke storingen
RetryOptions.RetriesMaximaal aantal nieuwe pogingen (standaard: 3)
RetryOptions.WaitWachttijd tussen pogingen in milliseconden (standaard: 3000)

Request-parameters

ParameterBeschrijving
TemperatureSampling-temperatuur (0,0–2,0). Lagere waarden = deterministischer.
TopPNucleus-sampling (0,0–1,0). Bepaalt de cumulatieve waarschijnlijkheidsgrens.
MaxTokensMaximaal aantal tokens in het antwoord (standaard: 4096).
FrequencyPenaltyGeef tokens een penalty op basis van hoe vaak ze al voorkomen in de tekst.
PresencePenaltyGeef tokens een penalty op basis van of ze tot dusver voorkomen in de tekst.
NAantal te genereren completions (standaard: 1).
ToolChoiceBepaal de tool-selectie: 'auto', 'none' of 'required'.

Waarom Grok? Gebouwd door xAI met focus op behulpzaamheid en realtime-kennis blinkt Grok uit in taken waarvoor actuele informatie en genuanceerd redeneren nodig zijn. Met het sgcWebSockets-component is het eenvoudig om tussen Grok en andere AI-aanbieders te wisselen terwijl je Delphi-code netjes en consistent blijft.