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

Ein nativer Delphi-Client für die OpenAI-REST- und -Realtime-APIs. Chat-Completions mit Token-Streaming, Function Calling und Structured Outputs; Embeddings; Whisper-Speech-to-Text; TTS; DALL-E-Bildgenerierung; Assistants v2 mit File Search; und die GPT-4o-Realtime-Audio-API über WebSocket — alles aus einer einzigen Pascal-Komponente.

Die komplette OpenAI-Oberfläche in einer Komponente

Die ChatGPT-API aus Delphi aufzurufen hieß bisher: HTTP-Requests, JSON-Serialisierer, Multipart-Uploader und SSE-Stream-Parser selbst schreiben. Stattdessen eine Komponente reinziehen.

Ein Delphi-OpenAI-Client ist die Brücke zwischen deiner VCL-/FMX-Anwendung und der OpenAI-Plattform: ChatGPT für natürlichsprachliches Reasoning, Embeddings für semantische Suche und RAG, Whisper für Transkription, TTS für gesprochene Ausgabe, DALL-E für Bildgenerierung und die Realtime-API für latenzarme Voice-Agents. sgcWebSockets liefert TsgcHTTP_API_OpenAI — eine einzige nichtvisuelle Komponente, die jeden öffentlichen Endpunkt mit Pascal-idiomatischen Eigenschaften, Methoden und Events umschließt.

Weil die Komponente auf demselben HTTP/2-Stack aufsetzt wie der Rest der Bibliothek, bekommst du Token-Streaming per Server-Sent Events, vollständiges Function Calling (jetzt „Tools“) mit automatischem JSON-Schema-Marshalling, parallele Tool-Calls, Structured Outputs (JSON-Schema-eingegrenzte Antworten), den Thread-/Run-/Message-Lebenszyklus von Assistants v2, Vector Stores für File Search sowie die GPT-4o-Realtime-API über WebSocket mit bidirektionalem Audio-Streaming. Dieselbe Komponente spricht mit Azure OpenAI, mit den OpenAI-kompatiblen Endpunkten von Anthropic, Groq, Together, Mistral und DeepSeek und mit lokalen OpenAI-kompatiblen Servern (Ollama, LM Studio, vLLM).

Komponenten-Klasse

TsgcHTTP_API_OpenAI

Transport

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

Plattformen

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

Kompatible Backends

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

Jeder OpenAI-Endpunkt, gewrapped

Eine Methode pro Endpunkt, streng typisierte Parameter, asynchrone Events für Streaming-Antworten.

Chat-Completions

ChatCompletions() mit voller Message-Array-Unterstützung, System-/User-/Assistant-/Tool-Rollen, Vision (image_url-Content), Reasoning-Modellen (o1, o3) und JSON-Schema-Structured-Outputs.

Streaming

StreamChatCompletions() löst OnChatCompletionStreamChunk pro Delta-Token aus — Schreibmaschinen-UX in deinem VCL-Grid oder FMX-Text-View ohne eine einzige Zeile SSE-Parsing.

Function Calling / Tools

Registriere eine Liste von Tools mit JSON-Schema-Parametern; wenn das Modell eines aufruft, bekommst du OnChatCompletionToolCall mit den geparsten Argumenten. Push das Ergebnis zurück und fahre fort.

Embeddings

Embeddings() mit text-embedding-3-small / -large — die Grundlage für semantische Suche, Clustering und RAG über deine Pascal-Daten.

Whisper (STT)

AudioTranscription() und AudioTranslation() — lade WAV/MP3/M4A hoch, erhalte ein Transkript oder eine englische Übersetzung, mit Zeitstempeln und Word-Level-Confidence.

TTS

AudioSpeech() liefert synthetisierte Sprache als MP3, Opus, AAC oder FLAC zurück — Stimme wählen, Ergebnis streamen.

DALL-E

ImageGeneration(), ImageEdit(), ImageVariation() mit DALL-E 2 / 3 und gpt-image-1. Liefert URLs oder Base64-kodierte PNGs zurück.

Assistants v2

Threads, Runs, Messages, Files, Vector Stores und Code Interpreter — mit den Run-Streaming-Events, sodass du nicht pollen musst.

Realtime-API

Bidirektionaler WebSocket mit Input-/Output-Audio-Puffern, Voice Activity Detection, Function Calling und GPT-4o-Latenz — baue Voice-Agents, die natürlich unterbrechen.

Streaming-Chat mit Function-Tool

Ein ChatGPT-Aufruf, der Tokens streamt und mitten in der Konversation eine Delphi-Funktion aufrufen kann.

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 über WebSocket

Die OpenAI-Realtime-API ist ein WebSocket-Endpunkt, der einen Strom von Input-Audio-Frames akzeptiert und einen Strom von Output-Audio-Frames emittiert — mit Sub-Sekunden-Latenz, nativer Barge-In-Funktion (das Modell schweigt, sobald der Nutzer zu sprechen beginnt), serverseitiger Voice Activity Detection und derselben Tool-Calling-Oberfläche wie die REST-API. sgcWebSockets umhüllt sie mit TsgcHTTP_API_OpenAI_Realtime und liefert typisierte Events für jede Server-Nachricht (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta usw.), sodass du es direkt in TBass, TMediaPlayer oder jede Audio-Queue stecken kannst.

Dieselbe Komponente, mehrere Backends

Azure OpenAI

Setze Endpoint auf deine Azure-Ressourcen-URL und ApiKey auf den Ressourcen-Schlüssel — Deployment-IDs ersetzen Modellnamen.

Ollama / LM Studio

Zeige Endpoint auf http://localhost:11434/v1 — dieselbe Komponente steuert lokale Llama-, Mistral-, Qwen- und Phi-Modelle.

DeepSeek, Groq, Together, Mistral

Alle bieten OpenAI-kompatible Endpunkte; nur Basis-URL und API-Key ändern sich.

vLLM, SGLang, llama.cpp-Server

Selbstgehostete Inferenz-Server mit OpenAI-kompatibler REST — der Streaming-SSE-Pfad ist byte-identisch.

Vertiefende Ressourcen

OpenAI-Komponenten-Referenz

Vollständige Eigenschaften-/Methoden-/Event-Referenz für TsgcHTTP_API_OpenAI.

AI-/LLM-Hub

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

Blog: OpenAI-Realtime-API

Schritt-für-Schritt-Walkthrough für einen Voice-Agent.

Blog: Function Calling

Muster, mit dem das Modell deinen Delphi-Code aufrufen kann.

Blog: KI-gestützte Delphi-Apps bauen

End-to-End-App-Architektur mit ChatGPT + Embeddings.

Blog: Assistants v2 in Delphi

Threads, Runs, File Search, Code Interpreter.

Liefere KI-Funktionen in deiner Delphi-App noch heute aus

Lade die Testversion — die OpenAI-Demo enthält fertig kompilierbare Beispiele für Chat, Streaming, Tools, Whisper, TTS und DALL-E.