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

Un client Delphi nativo per le API REST e Realtime di OpenAI. Chat completion con streaming dei token, function calling e structured output; embeddings; Whisper speech-to-text; TTS; generazione di immagini con DALL-E; Assistants v2 con file search; e la Realtime API audio di GPT-4o su WebSocket — il tutto da un singolo componente Pascal.

L'intera superficie OpenAI in un solo componente

Chiamare l'API ChatGPT da Delphi significava scrivere a mano le richieste HTTP, i serializer JSON, gli uploader multipart e i parser di stream SSE. Inserisci invece un solo componente.

Un client OpenAI Delphi è il ponte tra la tua applicazione VCL / FMX e la piattaforma OpenAI: ChatGPT per il ragionamento in linguaggio naturale, embeddings per la ricerca semantica e il RAG, Whisper per la trascrizione, TTS per l'output vocale, DALL-E per la generazione di immagini e la Realtime API per agenti vocali a bassa latenza. sgcWebSockets distribuisce TsgcHTTP_API_OpenAI, un singolo componente non visuale che incapsula ogni endpoint pubblico con proprietà, metodi ed eventi idiomatici Pascal.

Poiché il componente è costruito sullo stesso stack HTTP/2 del resto della libreria, ottieni lo streaming dei token via Server-Sent Events, il function calling completo (ora “tools”) con marshalling automatico dello JSON schema, chiamate di tool parallele, structured output (response vincolate da JSON schema), il ciclo di vita thread/run/message di Assistants v2, i vector store per la file search e la Realtime API di GPT-4o su WebSocket con streaming audio bidirezionale. Lo stesso componente parla con Azure OpenAI, con gli endpoint compatibili OpenAI esposti da Anthropic, Groq, Together, Mistral e DeepSeek, e con server locali compatibili OpenAI (Ollama, LM Studio, vLLM).

Classe del componente

TsgcHTTP_API_OpenAI

Trasporto

HTTP/2 + streaming SSE + WebSocket (Realtime)

Piattaforme

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

Backend compatibili

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

Ogni endpoint OpenAI, incapsulato

Un metodo per endpoint, parametri fortemente tipizzati, eventi async per le risposte in streaming.

Chat completion

ChatCompletions() con supporto completo dell'array di messaggi, ruoli system / user / assistant / tool, vision (contenuto image_url), modelli di reasoning (o1, o3) e structured output con JSON schema.

Streaming

StreamChatCompletions() solleva OnChatCompletionStreamChunk per ogni token delta — UX a macchina da scrivere nella tua grid VCL o text-view FMX con zero codice di parsing SSE.

Function calling / tools

Registra una lista di tool con parametri JSON schema; quando il modello ne chiama uno, ricevi OnChatCompletionToolCall con gli argomenti già parsati. Restituisci il risultato e riprendi.

Embeddings

Embeddings() con text-embedding-3-small / -large — la base per ricerca semantica, clustering e RAG sui tuoi dati Pascal.

Whisper (STT)

AudioTranscription() e AudioTranslation() — carica un WAV/MP3/M4A, ottieni una trascrizione o una traduzione in inglese, con timestamp e confidenza a livello di parola.

TTS

AudioSpeech() restituisce voce sintetizzata in MP3, Opus, AAC o FLAC — scegli una voce, riproduci il risultato in streaming.

DALL-E

ImageGeneration(), ImageEdit(), ImageVariation() con DALL-E 2 / 3 e gpt-image-1. Restituisce URL o PNG codificato in base64.

Assistants v2

Thread, run, messaggi, file, vector store e code interpreter — con eventi di streaming dei run, così non devi fare polling.

Realtime API

WebSocket bidirezionale con buffer audio in input/output, voice activity detection, function calling e latenza di GPT-4o — costruisci agenti vocali che interrompono in modo naturale.

Chat in streaming con un function tool

Una chiamata ChatGPT che fa lo streaming dei token e può invocare una funzione Delphi a metà conversazione.

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;

Agenti vocali GPT-4o su WebSocket

La Realtime API di OpenAI è un endpoint WebSocket che accetta uno stream di frame audio in input ed emette uno stream di frame audio in output — con latenza inferiore al secondo, barge-in nativo (il modello si ferma quando l'utente inizia a parlare), voice activity detection lato server e la stessa superficie di tool-calling della REST API. sgcWebSockets la incapsula con TsgcHTTP_API_OpenAI_Realtime, che ti dà eventi tipizzati per ogni messaggio del server (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta, ecc.), così puoi collegarla direttamente a TBass, TMediaPlayer o a qualunque coda audio.

Stesso componente, più backend

Azure OpenAI

Imposta Endpoint sull'URL della tua risorsa Azure e ApiKey sulla chiave della risorsa — gli ID di deployment sostituiscono i nomi dei modelli.

Ollama / LM Studio

Punta Endpoint a http://localhost:11434/v1 — lo stesso componente pilota i modelli locali Llama, Mistral, Qwen e Phi.

DeepSeek, Groq, Together, Mistral

Tutti espongono endpoint compatibili OpenAI; cambiano solo l'URL base e la API key.

vLLM, SGLang, llama.cpp server

Server di inferenza self-hosted con REST compatibile OpenAI — il path streaming SSE è identico byte per byte.

Risorse di approfondimento

Riferimento del componente OpenAI

Riferimento completo di proprietà / metodi / eventi per TsgcHTTP_API_OpenAI.

Hub AI / LLM

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

Blog: Realtime API di OpenAI

Guida passo passo per un agente vocale.

Blog: function calling

Pattern per lasciare che il modello invochi il tuo codice Delphi.

Blog: costruire app Delphi con AI

Architettura applicativa end-to-end con ChatGPT + embeddings.

Blog: Assistants v2 in Delphi

Thread, run, file search, code interpreter.

Spedisci funzionalità AI nella tua app Delphi oggi

Scarica la trial — la demo OpenAI include esempi di chat, streaming, tool, Whisper, TTS e DALL-E pronti per essere compilati.