OpenAI REST ve Realtime API'leri için yerel bir Delphi istemcisi. Token akışı, function calling ve yapılandırılmış çıktılarla sohbet tamamlamaları; embeddings; Whisper konuşmadan metne; TTS; DALL-E görüntü oluşturma; dosya aramalı Assistants v2; ve WebSocket üzerinden GPT-4o Realtime ses API'si — hepsi tek bir Pascal bileşeninden.
ChatGPT API'sini Delphi'den çağırmak eskiden HTTP isteklerini, JSON serileştiricileri, multipart yükleyicileri ve SSE akış ayrıştırıcılarını elle yazmak anlamına gelirdi. Bunun yerine tek bir bileşen bırakın.
Bir Delphi OpenAI istemcisi, VCL / FMX uygulamanız ile OpenAI platformu arasındaki köprüdür: doğal dil muhakemesi için ChatGPT, anlamsal arama ve RAG için embeddings, transkripsiyon için Whisper, sözlü çıktı için TTS, görüntü oluşturma için DALL-E ve düşük gecikmeli ses aracıları için Realtime API. sgcWebSockets, her genel uç noktayı Pascal'a özgü özellikler, metotlar ve olaylarla saran tek bir görsel olmayan bileşen olan TsgcHTTP_API_OpenAI'yi sunar.
Bileşen, kütüphanenin geri kalanıyla aynı HTTP/2 yığını üzerine kurulu olduğundan, Server-Sent Events aracılığıyla token akışı, otomatik JSON-şema marshalling ile tam function calling (artık “tools”), paralel araç çağrıları, yapılandırılmış çıktılar (JSON-şema kısıtlamalı yanıtlar), Assistants v2 thread/run/message yaşam döngüsü, dosya araması için vektör depoları ve çift yönlü ses akışıyla WebSocket üzerinden GPT-4o Realtime API elde edersiniz. Aynı bileşen Azure OpenAI ile, Anthropic, Groq, Together, Mistral ve DeepSeek tarafından sunulan OpenAI uyumlu uç noktalarla ve yerel OpenAI uyumlu sunucularla (Ollama, LM Studio, vLLM) konuşur.
Uç nokta başına bir metot, güçlü tipli parametreler, akış yanıtları için asenkron olaylar.
Sohbet tamamlamaları
Tam mesaj-dizisi desteği, system / user / assistant / tool rolleri, vision (image_url içeriği), muhakeme modelleri (o1, o3) ve JSON-şema yapılandırılmış çıktılarla ChatCompletions().
Akış
StreamChatCompletions() her delta token için OnChatCompletionStreamChunk tetikler — sıfır SSE ayrıştırma koduyla VCL grid'inizde veya FMX metin görünümünüzde daktilo deneyimi.
Function calling / tools
JSON-şema parametreli bir araç listesi kaydedin; model bir tanesini çağırdığında, ayrıştırılan argümanlarla OnChatCompletionToolCall alırsınız. Sonucu geri gönderin ve devam edin.
Embeddings
text-embedding-3-small / -large ile Embeddings() — Pascal verileriniz üzerinde anlamsal arama, kümeleme ve RAG'in temeli.
Whisper (STT)
AudioTranscription() ve AudioTranslation() — bir WAV/MP3/M4A yükleyin, zaman damgaları ve kelime düzeyinde güvenle bir transkript veya İngilizce çeviri alın.
TTS
AudioSpeech() MP3, Opus, AAC veya FLAC olarak sentezlenmiş konuşma döndürür — bir ses seçin, sonucu akışla oynatın.
DALL-E
DALL-E 2 / 3 ve gpt-image-1 ile ImageGeneration(), ImageEdit(), ImageVariation(). URL'ler veya base64 ile kodlanmış PNG döndürür.
Assistants v2
Thread'ler, run'lar, mesajlar, dosyalar, vektör depoları ve code interpreter — yoklama yapmamanız için run-streaming olaylarıyla.
Realtime API
Giriş/çıkış ses arabellekleri, ses etkinliği algılama, function calling ve GPT-4o gecikmesi ile çift yönlü WebSocket — doğal şekilde sözü kesen ses aracıları oluşturun.
HIZLI BAŞLANGIÇ
Bir function tool ile akışlı sohbet
Token'ları akıtan ve konuşma ortasında bir Delphi işlevini çağırabilen bir ChatGPT çağrısı.
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
WebSocket üzerinden GPT-4o ses aracıları
OpenAI Realtime API, giriş ses çerçevelerinden oluşan bir akışı kabul eden ve çıkış ses çerçevelerinden oluşan bir akış yayan bir WebSocket uç noktasıdır — saniyenin altında gecikme, yerel barge-in (kullanıcı konuşmaya başladığında model durur), sunucu tarafı ses etkinliği algılama ve REST API ile aynı araç çağırma yüzeyiyle. sgcWebSockets bunu TsgcHTTP_API_OpenAI_Realtime ile sarar; bu da her sunucu mesajı için tipli olaylar (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta, vb.) verir, böylece onu doğrudan TBass, TMediaPlayer veya herhangi bir ses kuyruğuna takabilirsiniz.
UYUMLULUK
Aynı bileşen, birden çok arka uç
Azure OpenAI
Endpoint değerini Azure kaynak URL'nize ve ApiKey değerini kaynak anahtarına ayarlayın — dağıtım kimlikleri model adlarının yerini alır.
Ollama / LM Studio
Endpoint değerini http://localhost:11434/v1 adresine yönlendirin — aynı bileşen yerel Llama, Mistral, Qwen ve Phi modellerini yönetir.
DeepSeek, Groq, Together, Mistral
Tümü OpenAI uyumlu uç noktalar sunar; yalnızca temel URL ve API anahtarı değişir.
vLLM, SGLang, llama.cpp sunucusu
OpenAI uyumlu REST ile kendi sunucunuzda barındırılan çıkarım sunucuları — akış SSE yolu bayt düzeyinde aynıdır.