Delphi OpenAI-client — ChatGPT, GPT-4, Embeddings, Whisper

Een native Delphi-client voor de OpenAI REST- en Realtime-API’s. Chat completions met token-streaming, function calling en gestructureerde outputs; embeddings; Whisper speech-to-text; TTS; DALL-E-beeldgeneratie; Assistants v2 met file search; en de GPT-4o Realtime-audio-API over WebSocket — allemaal vanuit een enkele Pascal-component.

Het volledige OpenAI-oppervlak in een component

De ChatGPT-API vanuit Delphi aanroepen betekende vroeger handmatig HTTP-requests in elkaar zetten, JSON-serializers, multipart-uploaders en SSE-stream-parsers schrijven. Plaats in plaats daarvan een component.

Een Delphi OpenAI-client is de brug tussen je VCL- / FMX-applicatie en het OpenAI-platform: ChatGPT voor natural-language-redenering, embeddings voor semantic search en RAG, Whisper voor transcriptie, TTS voor gesproken output, DALL-E voor beeldgeneratie en de Realtime-API voor low-latency voice-agents. sgcWebSockets levert TsgcHTTP_API_OpenAI, een enkel niet-visueel component dat elke publieke endpoint omhult met Pascal-idiomatische properties, methodes en events.

Omdat de component op dezelfde HTTP/2-stack is gebouwd als de rest van de bibliotheek, krijg je token-streaming via Server-Sent Events, volledige function calling (nu “tools”) met automatische JSON-schema-marshalling, parallelle tool calls, gestructureerde outputs (JSON-schema-beperkte responses), de Assistants v2 thread/run/message-lifecycle, vector stores voor file search, en de GPT-4o Realtime-API over WebSocket met bidirectionele audio-streaming. Hetzelfde component praat met Azure OpenAI, de OpenAI-compatibele endpoints van Anthropic, Groq, Together, Mistral en DeepSeek, en lokale OpenAI-compatibele servers (Ollama, LM Studio, vLLM).

Componentklasse

TsgcHTTP_API_OpenAI

Transport

HTTP/2 + SSE-streaming + WebSocket (Realtime)

Platforms

Windows, macOS, Linux, iOS, Android, .NET

Compatibele backends

OpenAI, Azure OpenAI, Ollama, DeepSeek, Groq, Together, Mistral, vLLM

Elke OpenAI-endpoint, gewrapt

Een methode per endpoint, sterk getypeerde parameters, async events voor streaming-responses.

Chat completions

ChatCompletions() met volledige message-array-ondersteuning, system- / user- / assistant- / tool-rollen, vision (image_url-content), reasoning-modellen (o1, o3) en JSON-schema gestructureerde outputs.

Streaming

StreamChatCompletions() vuurt OnChatCompletionStreamChunk per delta-token af — typemachine-UX in je VCL-grid of FMX-text-view met nul SSE-parser-code.

Function calling / tools

Registreer een lijst tools met JSON-schema-parameters; wanneer het model er een aanroept, ontvang je OnChatCompletionToolCall met de geparste argumenten. Push het resultaat terug en hervat.

Embeddings

Embeddings() met text-embedding-3-small / -large — het fundament voor semantic search, clustering en RAG over je Pascal-data.

Whisper (STT)

AudioTranscription() en AudioTranslation() — upload een WAV/MP3/M4A, krijg een transcript of Engelse vertaling, met timestamps en word-level confidence.

TTS

AudioSpeech() geeft gesynthetiseerde spraak terug in MP3, Opus, AAC of FLAC — kies een stem, stream-play het resultaat.

DALL-E

ImageGeneration(), ImageEdit(), ImageVariation() met DALL-E 2 / 3 en gpt-image-1. Geeft URL’s of base64-gecodeerde PNG terug.

Assistants v2

Threads, runs, messages, files, vector stores en code interpreter — met de run-streaming-events zodat je niet hoeft te pollen.

Realtime API

Bidirectionele WebSocket met input/output audio-buffers, voice activity detection, function calling en GPT-4o-latentie — bouw voice-agents die natuurlijk onderbreken.

Streaming chat met een functie-tool

Een ChatGPT-aanroep die tokens streamt en midden in het gesprek een Delphi-functie kan aanroepen.

uses
  sgcHTTP_API_OpenAI, sgcHTTP_API_OpenAI_Types;

var
  OpenAI: TsgcHTTP_API_OpenAI;
  oChat:  TsgcHTTPOpenAIChatCompletionRequest;
  oTool:  TsgcHTTPOpenAITool;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  OpenAI.ApiKey := 'sk-...';
  OpenAI.OnChatCompletionStreamChunk := DoChunk;
  OpenAI.OnChatCompletionToolCall    := DoToolCall;

  oChat := TsgcHTTPOpenAIChatCompletionRequest.Create;
  try
    oChat.Model := 'gpt-4o';
    oChat.Messages.AddSystem('You are a Delphi assistant.');
    oChat.Messages.AddUser('What is the weather in Madrid?');

    oTool := oChat.Tools.AddFunction('get_weather',
      'Return current weather for a city.');
    oTool.Parameters
      .AddString('city', 'City name', True);

    OpenAI.StreamChatCompletions(oChat);
  finally
    oChat.Free;
  end;
end;

procedure TForm1.DoChunk(Sender: TObject;
  const aChunk: TsgcHTTPOpenAIChatCompletionStreamChunk);
begin
  Memo1.Text := Memo1.Text + aChunk.Content;
end;

procedure TForm1.DoToolCall(Sender: TObject;
  const aToolCall: TsgcHTTPOpenAIChatCompletionToolCall);
var
  vCity, vJSON: string;
begin
  if aToolCall.FunctionName = 'get_weather' then
  begin
    vCity := aToolCall.Arguments.S['city'];
    vJSON := MyWeatherLookup(vCity);  // your own Delphi code
    OpenAI.SubmitToolOutput(aToolCall.Id, vJSON);
  end;
end;

GPT-4o voice-agents over WebSocket

De OpenAI Realtime API is een WebSocket-endpoint dat een stroom input-audio-frames accepteert en een stroom output-audio-frames emit — met sub-seconde-latentie, native barge-in (het model stopt met praten wanneer de gebruiker begint), server-side voice activity detection en hetzelfde tool-calling-oppervlak als de REST-API. sgcWebSockets wrapt het met TsgcHTTP_API_OpenAI_Realtime, dat je typed events geeft voor elk server-bericht (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta, etc.) zodat je het direct kunt aansluiten op TBass, TMediaPlayer of elke audio-wachtrij.

Zelfde component, meerdere backends

Azure OpenAI

Zet Endpoint op je Azure-resource-URL en ApiKey op de resource-key — deployment-id’s vervangen modelnamen.

Ollama / LM Studio

Wijs Endpoint naar http://localhost:11434/v1 — hetzelfde component stuurt lokale Llama-, Mistral-, Qwen- en Phi-modellen aan.

DeepSeek, Groq, Together, Mistral

Allemaal stellen OpenAI-compatibele endpoints bloot; alleen de base-URL en API-key veranderen.

vLLM, SGLang, llama.cpp-server

Self-hosted inference-servers met OpenAI-compatibele REST — het streaming-SSE-pad is byte-identiek.

Deep-dive-bronnen

OpenAI-componentreferentie

Volledige property- / methode- / event-referentie voor TsgcHTTP_API_OpenAI.

AI- / LLM-hub

Anthropic Claude, Google Gemini, Mistral, Ollama, Pinecone, MCP, RAG.

Blog: OpenAI Realtime API

Stapsgewijze voice-agent-doorloop.

Blog: Function calling

Patroon om het model je Delphi-code te laten aanroepen.

Blog: AI-powered Delphi-apps bouwen

End-to-end app-architectuur met ChatGPT + embeddings.

Blog: Assistants v2 in Delphi

Threads, runs, file search, code interpreter.

Lever vandaag nog AI-features in je Delphi-app

Download de proefversie — de OpenAI-demo komt met chat-, streaming-, tools-, Whisper-, TTS- en DALL-E-samples klaar om te compileren.