Um cliente Delphi nativo para as APIs REST e Realtime da OpenAI. Chat completions com streaming de tokens, function calling e structured outputs; embeddings; speech-to-text com Whisper; TTS; geração de imagens DALL-E; Assistants v2 com file search; e a Realtime API de áudio GPT-4o sobre WebSocket — tudo a partir de um único componente Pascal.
Chamar a API do ChatGPT a partir do Delphi costumava significar escrever à mão requests HTTP, serializadores JSON, uploaders multipart e parsers de stream SSE. Coloque um componente no lugar.
Um cliente OpenAI Delphi é a ponte entre sua aplicação VCL / FMX e a plataforma OpenAI: ChatGPT para raciocínio em linguagem natural, embeddings para busca semântica e RAG, Whisper para transcrição, TTS para saída falada, DALL-E para geração de imagens e a Realtime API para agentes de voz de baixa latência. O sgcWebSockets entrega TsgcHTTP_API_OpenAI, um único componente não visual que envolve cada endpoint público com propriedades, métodos e eventos idiomáticos em Pascal.
Como o componente é construído sobre a mesma stack HTTP/2 do resto da biblioteca, você ganha streaming de tokens via Server-Sent Events, function calling completo (agora “tools”) com marshalling automático para JSON-schema, parallel tool calls, structured outputs (respostas restringidas por JSON-schema), o ciclo de vida thread/run/message do Assistants v2, vector stores para file search e a Realtime API do GPT-4o sobre WebSocket com streaming de áudio bidirecional. O mesmo componente conversa com Azure OpenAI, com os endpoints compatíveis com OpenAI expostos por Anthropic, Groq, Together, Mistral e DeepSeek, e com servidores locais compatíveis com OpenAI (Ollama, LM Studio, vLLM).
Um método por endpoint, parâmetros fortemente tipados, eventos assíncronos para respostas em streaming.
Chat completions
ChatCompletions() com suporte completo a array de mensagens, papéis system / user / assistant / tool, visão (conteúdo image_url), modelos de reasoning (o1, o3) e structured outputs em JSON-schema.
Streaming
StreamChatCompletions() dispara OnChatCompletionStreamChunk por token delta — UX de máquina de escrever na sua grid VCL ou text-view FMX, sem código de parsing SSE.
Function calling / tools
Registre uma lista de tools com parâmetros em JSON-schema; quando o modelo chamar uma, você recebe OnChatCompletionToolCall com os argumentos já parseados. Devolva o resultado e retome.
Embeddings
Embeddings() com text-embedding-3-small / -large — a base para busca semântica, clustering e RAG sobre seus dados Pascal.
Whisper (STT)
AudioTranscription() e AudioTranslation() — faça upload de um WAV/MP3/M4A, receba uma transcrição ou tradução para inglês, com timestamps e confiança em nível de palavra.
TTS
AudioSpeech() retorna fala sintetizada em MP3, Opus, AAC ou FLAC — escolha uma voz, faça stream-play do resultado.
DALL-E
ImageGeneration(), ImageEdit(), ImageVariation() com DALL-E 2 / 3 e gpt-image-1. Retorna URLs ou PNG codificado em base64.
Assistants v2
Threads, runs, messages, files, vector stores e code interpreter — com os eventos de run-streaming para que você não precise fazer polling.
Realtime API
WebSocket bidirecional com buffers de áudio de entrada/saída, voice activity detection, function calling e latência do GPT-4o — construa agentes de voz que interrompem naturalmente.
Início Rápido
Chat em streaming com uma function tool
Uma chamada ao ChatGPT que faz streaming de tokens e pode invocar uma função Delphi no meio da conversa.
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;
beginif aToolCall.FunctionName = 'get_weather'thenbegin
vCity := aToolCall.Arguments.S['city'];
vJSON := MyWeatherLookup(vCity); // your own Delphi code
OpenAI.SubmitToolOutput(aToolCall.Id, vJSON);
end;
end;
Realtime API
Agentes de voz GPT-4o sobre WebSocket
A Realtime API da OpenAI é um endpoint WebSocket que aceita um stream de frames de áudio de entrada e emite um stream de frames de áudio de saída — com latência subsegundo, barge-in nativo (o modelo para de falar quando o usuário começa), voice activity detection do lado servidor e a mesma superfície de tool-calling da API REST. O sgcWebSockets encapsula com o TsgcHTTP_API_OpenAI_Realtime, que dá eventos tipados para cada mensagem do servidor (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta etc.) para você plugar direto em TBass, TMediaPlayer ou qualquer fila de áudio.
Compatibilidade
Mesmo componente, múltiplos backends
Azure OpenAI
Defina Endpoint como a URL do seu recurso Azure e ApiKey como a chave do recurso — IDs de deployment substituem nomes de modelo.
Ollama / LM Studio
Aponte Endpoint para http://localhost:11434/v1 — o mesmo componente dirige modelos locais Llama, Mistral, Qwen e Phi.
DeepSeek, Groq, Together, Mistral
Todos expõem endpoints compatíveis com OpenAI; só a base URL e a API key mudam.
vLLM, SGLang, llama.cpp server
Servidores de inferência self-hosted com REST compatível com OpenAI — o caminho de streaming SSE é byte a byte idêntico.