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

Un client Delphi natif pour les API REST et Realtime d'OpenAI. Chat completions avec streaming de tokens, appel de fonctions et sorties structurées ; embeddings ; reconnaissance vocale Whisper ; TTS ; génération d'images DALL-E ; Assistants v2 avec recherche de fichiers ; et l'API audio Realtime GPT-4o sur WebSocket — le tout depuis un seul composant Pascal.

La surface OpenAI complète dans un seul composant

Appeler l'API ChatGPT depuis Delphi voulait dire bricoler des requêtes HTTP, des sérialiseurs JSON, des uploaders multipart et des parseurs de flux SSE. Déposez un composant à la place.

Un client OpenAI Delphi est le pont entre votre application VCL / FMX et la plateforme OpenAI : ChatGPT pour le raisonnement en langage naturel, embeddings pour la recherche sémantique et le RAG, Whisper pour la transcription, TTS pour la sortie vocale, DALL-E pour la génération d'images et l'API Realtime pour les agents vocaux à faible latence. sgcWebSockets livre TsgcHTTP_API_OpenAI, un seul composant non-visuel qui wrappe chaque endpoint public avec des propriétés, méthodes et événements idiomatiques Pascal.

Parce que le composant est construit sur la même pile HTTP/2 que le reste de la bibliothèque, vous obtenez le streaming de tokens via Server-Sent Events, l'appel de fonctions complet (maintenant « tools ») avec marshalling automatique de JSON-schema, les appels d'outils en parallèle, les sorties structurées (réponses contraintes par JSON-schema), le cycle de vie thread/run/message des Assistants v2, les vector stores pour la recherche de fichiers, et l'API Realtime GPT-4o sur WebSocket avec streaming audio bi-directionnel. Le même composant parle à Azure OpenAI, aux endpoints compatibles OpenAI exposés par Anthropic, Groq, Together, Mistral et DeepSeek, et aux serveurs compatibles OpenAI locaux (Ollama, LM Studio, vLLM).

Classe de composant

TsgcHTTP_API_OpenAI

Transport

HTTP/2 + streaming SSE + WebSocket (Realtime)

Plateformes

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

Backends compatibles

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

Chaque endpoint OpenAI, wrappé

Une méthode par endpoint, des paramètres fortement typés, des événements async pour les réponses streamées.

Chat completions

ChatCompletions() avec support complet du tableau de messages, rôles system / user / assistant / tool, vision (contenu image_url), modèles de raisonnement (o1, o3) et sorties structurées JSON-schema.

Streaming

StreamChatCompletions() déclenche OnChatCompletionStreamChunk par token delta — UX type-writer dans votre grille VCL ou text-view FMX sans aucun code de parsing SSE.

Appel de fonctions / tools

Enregistrez une liste d'outils avec des paramètres JSON-schema ; quand le modèle en appelle un, vous recevez OnChatCompletionToolCall avec les arguments parsés. Repoussez le résultat et reprenez.

Embeddings

Embeddings() avec text-embedding-3-small / -large — la fondation pour la recherche sémantique, le clustering et le RAG sur vos données Pascal.

Whisper (STT)

AudioTranscription() et AudioTranslation() — uploadez un WAV/MP3/M4A, obtenez une transcription ou traduction en anglais, avec timestamps et confiance au niveau mot.

TTS

AudioSpeech() retourne de la parole synthétisée en MP3, Opus, AAC ou FLAC — choisissez une voix, jouez le résultat en streaming.

DALL-E

ImageGeneration(), ImageEdit(), ImageVariation() avec DALL-E 2 / 3 et gpt-image-1. Retourne des URL ou du PNG encodé base64.

Assistants v2

Threads, runs, messages, fichiers, vector stores et code interpreter — avec les événements de run-streaming pour ne pas avoir à poller.

API Realtime

WebSocket bi-directionnel avec buffers audio d'entrée/sortie, détection d'activité vocale, appel de fonctions et latence GPT-4o — construisez des agents vocaux qui interrompent naturellement.

Chat streamé avec un outil fonction

Un appel ChatGPT qui streame des tokens et peut invoquer une fonction Delphi en milieu de conversation.

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;

Agents vocaux GPT-4o sur WebSocket

L'API Realtime d'OpenAI est un endpoint WebSocket qui accepte un flux de frames audio d'entrée et émet un flux de frames audio de sortie — avec une latence sub-seconde, barge-in natif (le modèle s'arrête de parler quand l'utilisateur commence), détection d'activité vocale côté serveur et la même surface d'appel d'outils que l'API REST. sgcWebSockets le wrappe avec TsgcHTTP_API_OpenAI_Realtime, qui vous donne des événements typés pour chaque message serveur (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta, etc.) pour que vous puissiez le brancher directement dans TBass, TMediaPlayer ou n'importe quelle file audio.

Même composant, plusieurs backends

Azure OpenAI

Définissez Endpoint sur l'URL de votre ressource Azure et ApiKey sur la clé de ressource — les IDs de deployment remplacent les noms de modèle.

Ollama / LM Studio

Pointez Endpoint sur http://localhost:11434/v1 — le même composant pilote les modèles Llama, Mistral, Qwen et Phi locaux.

DeepSeek, Groq, Together, Mistral

Tous exposent des endpoints compatibles OpenAI ; seuls l'URL de base et la clé API changent.

vLLM, SGLang, serveur llama.cpp

Serveurs d'inférence auto-hébergés avec REST compatible OpenAI — le chemin SSE streamé est byte-identique.

Ressources approfondies

Référence du composant OpenAI

Référence complète propriété / méthode / événement pour TsgcHTTP_API_OpenAI.

Hub IA / LLM

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

Blog : API OpenAI Realtime

Marche à suivre pas à pas pour agent vocal.

Blog : Appel de fonctions

Pattern pour laisser le modèle invoquer votre code Delphi.

Blog : Construire des applications Delphi propulsées par l'IA

Architecture d'application de bout en bout avec ChatGPT + embeddings.

Blog : Assistants v2 en Delphi

Threads, runs, recherche de fichiers, code interpreter.

Livrez des fonctionnalités IA dans votre application Delphi aujourd'hui

Téléchargez l'essai — la démo OpenAI livre des exemples chat, streaming, tools, Whisper, TTS et DALL-E prêts à compiler.