Cliente OpenAI para Delphi — ChatGPT, GPT-4, Embeddings, Whisper

Cliente Delphi nativo para las APIs REST y Realtime de OpenAI. Chat completions con streaming de tokens, function calling y salidas estructuradas; embeddings; speech-to-text con Whisper; TTS; generación de imágenes con DALL-E; Assistants v2 con búsqueda de archivos; y la Realtime API de audio GPT-4o sobre WebSocket — todo desde un único componente Pascal.

Toda la superficie de OpenAI en un único componente

Llamar a la API de ChatGPT desde Delphi solía significar escribir a mano peticiones HTTP, serializadores JSON, subidas multipart y parsers de stream SSE. Suelta un componente en su lugar.

Un cliente OpenAI para Delphi es el puente entre tu aplicación VCL / FMX y la plataforma OpenAI: ChatGPT para razonamiento en lenguaje natural, embeddings para búsqueda semántica y RAG, Whisper para transcripción, TTS para salida hablada, DALL-E para generación de imágenes y la Realtime API para agentes de voz de baja latencia. sgcWebSockets incluye TsgcHTTP_API_OpenAI, un único componente no visual que envuelve cada endpoint público con propiedades, métodos y eventos idiomáticos de Pascal.

Como el componente está construido sobre la misma pila HTTP/2 que el resto de la librería, obtienes streaming de tokens vía Server-Sent Events, function calling completo (ahora “tools”) con marshalling automático de JSON Schema, llamadas de herramientas paralelas, salidas estructuradas (respuestas restringidas por JSON Schema), el ciclo de vida thread/run/message de Assistants v2, vector stores para búsqueda de archivos y la Realtime API de GPT-4o sobre WebSocket con streaming de audio bidireccional. El mismo componente habla con Azure OpenAI, los endpoints compatibles con OpenAI expuestos por Anthropic, Groq, Together, Mistral y DeepSeek, y con servidores locales compatibles con OpenAI (Ollama, LM Studio, vLLM).

Clase de componente

TsgcHTTP_API_OpenAI

Transporte

HTTP/2 + streaming SSE + WebSocket (Realtime)

Plataformas

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

Backends compatibles

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

Cada endpoint de OpenAI, envuelto

Un método por endpoint, parámetros fuertemente tipados, eventos asíncronos para respuestas en streaming.

Chat completions

ChatCompletions() con soporte completo de array de mensajes, roles system / user / assistant / tool, visión (contenido image_url), modelos de razonamiento (o1, o3) y salidas estructuradas por JSON Schema.

Streaming

StreamChatCompletions() dispara OnChatCompletionStreamChunk por cada token delta — UX tipo máquina de escribir en tu grid VCL o text-view FMX con cero código de parseo SSE.

Function calling / tools

Registra una lista de herramientas con parámetros JSON Schema; cuando el modelo llama a una, recibes OnChatCompletionToolCall con los argumentos parseados. Devuelve el resultado y reanuda.

Embeddings

Embeddings() con text-embedding-3-small / -large — la base para búsqueda semántica, clustering y RAG sobre tus datos Pascal.

Whisper (STT)

AudioTranscription() y AudioTranslation() — sube un WAV/MP3/M4A, obtén una transcripción o traducción al inglés, con timestamps y confianza por palabra.

TTS

AudioSpeech() devuelve voz sintetizada en MP3, Opus, AAC o FLAC — elige una voz, reproduce el resultado en streaming.

DALL-E

ImageGeneration(), ImageEdit(), ImageVariation() con DALL-E 2 / 3 y gpt-image-1. Devuelve URLs o PNG codificado en base64.

Assistants v2

Threads, runs, messages, files, vector stores y code interpreter — con los eventos de streaming de runs para que no hagas polling.

Realtime API

WebSocket bidireccional con buffers de audio de entrada/salida, detección de actividad de voz, function calling y latencia GPT-4o — construye agentes de voz que interrumpen de forma natural.

Chat en streaming con una herramienta de función

Una llamada a ChatGPT que hace streaming de tokens y puede invocar una función Delphi a mitad de conversación.

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;

Agentes de voz GPT-4o sobre WebSocket

La Realtime API de OpenAI es un endpoint WebSocket que acepta un stream de frames de audio de entrada y emite un stream de frames de audio de salida — con latencia por debajo del segundo, barge-in nativo (el modelo deja de hablar cuando el usuario empieza), detección de actividad de voz del lado servidor y la misma superficie de tool-calling que la API REST. sgcWebSockets la envuelve con TsgcHTTP_API_OpenAI_Realtime, que te da eventos tipados para cada mensaje del servidor (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta, etc.) para que puedas conectarlo directamente a TBass, TMediaPlayer o a cualquier cola de audio.

Mismo componente, múltiples backends

Azure OpenAI

Establece Endpoint a la URL de tu recurso Azure y ApiKey a la clave del recurso — los deployment IDs reemplazan a los nombres de modelo.

Ollama / LM Studio

Apunta Endpoint a http://localhost:11434/v1 — el mismo componente gobierna modelos locales Llama, Mistral, Qwen y Phi.

DeepSeek, Groq, Together, Mistral

Todos exponen endpoints compatibles con OpenAI; sólo cambian la URL base y la API key.

vLLM, SGLang, llama.cpp server

Servidores de inferencia autoalojados con REST compatible con OpenAI — la ruta de streaming SSE es idéntica byte a byte.

Recursos para profundizar

Referencia del componente OpenAI

Referencia completa de propiedades / métodos / eventos para TsgcHTTP_API_OpenAI.

Hub IA / LLM

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

Blog: OpenAI Realtime API

Guía paso a paso de un agente de voz.

Blog: Function calling

Patrón para que el modelo invoque tu código Delphi.

Blog: Apps Delphi potenciadas por IA

Arquitectura de aplicación de extremo a extremo usando ChatGPT + embeddings.

Blog: Assistants v2 en Delphi

Threads, runs, búsqueda de archivos, code interpreter.

Lanza funciones de IA en tu app Delphi hoy

Descarga la versión de prueba — la demo de OpenAI incluye ejemplos compilables de chat, streaming, tools, Whisper, TTS y DALL-E.