Klient OpenAI dla Delphi — ChatGPT, GPT-4, Embeddings, Whisper
Natywny klient Delphi dla REST i Realtime API OpenAI. Chat completions ze strumieniowaniem tokenów, wywoływanie funkcji i wyjścia strukturalne; embeddings; Whisper speech-to-text; TTS; generowanie obrazów DALL-E; Assistants v2 z file search; oraz Realtime audio API GPT-4o nad WebSocket — wszystko z pojedynczego komponentu Pascala.
Kompletna powierzchnia OpenAI w jednym komponencie
Wywoływanie API ChatGPT z Delphi kiedyś oznaczało ręczne tworzenie żądań HTTP, serializatorów JSON, uploaderów multipart i parserów strumieni SSE. Upuść jeden komponent zamiast tego.
Klient OpenAI dla Delphi to most między Twoją aplikacją VCL / FMX a platformą OpenAI: ChatGPT dla rozumowania w języku naturalnym, embeddings dla wyszukiwania semantycznego i RAG, Whisper dla transkrypcji, TTS dla wyjścia mówionego, DALL-E dla generowania obrazów i Realtime API dla agentów głosowych o niskiej latencji. sgcWebSockets dostarcza TsgcHTTP_API_OpenAI, pojedynczy niewizualny komponent, który owija każdy publiczny endpoint właściwościami, metodami i zdarzeniami idiomatycznymi dla Pascala.
Ponieważ komponent jest zbudowany na tym samym stosie HTTP/2 co reszta biblioteki, dostajesz strumieniowanie tokenów przez Server-Sent Events, pełne wywoływanie funkcji (teraz „tools”) z automatycznym marshallingiem JSON-schema, równoległe wywołania narzędzi, wyjścia strukturalne (odpowiedzi ograniczone JSON-schema), cykl życia thread/run/message Assistants v2, vector stores dla file search i Realtime API GPT-4o nad WebSocket z dwukierunkowym strumieniowaniem audio. Ten sam komponent rozmawia z Azure OpenAI, OpenAI-kompatybilnymi endpointami udostępnionymi przez Anthropic, Groq, Together, Mistral i DeepSeek oraz lokalnymi OpenAI-kompatybilnymi serwerami (Ollama, LM Studio, vLLM).
Jedna metoda na endpoint, silnie typowane parametry, asynchroniczne zdarzenia dla strumieniowanych odpowiedzi.
Chat completions
ChatCompletions() z pełnym wsparciem dla tablic wiadomości, rolami system / user / assistant / tool, vision (treść image_url), modelami rozumowania (o1, o3) i wyjściami strukturalnymi JSON-schema.
Strumieniowanie
StreamChatCompletions() wywołuje OnChatCompletionStreamChunk per delta tokenu — UX maszyny do pisania w Twojej siatce VCL lub widoku tekstowym FMX bez kodu parsowania SSE.
Wywoływanie funkcji / narzędzia
Zarejestruj listę narzędzi z parametrami JSON-schema; gdy model wywołuje jedno, otrzymujesz OnChatCompletionToolCall ze sparsowanymi argumentami. Wepchnij wynik z powrotem i wznów.
Embeddings
Embeddings() z text-embedding-3-small / -large — fundament wyszukiwania semantycznego, klasteryzacji i RAG na Twoich danych Pascala.
Whisper (STT)
AudioTranscription() i AudioTranslation() — wgraj WAV/MP3/M4A, dostań transkrypt lub tłumaczenie angielskie, z timestampami i pewnością na poziomie słowa.
TTS
AudioSpeech() zwraca zsyntetyzowaną mowę w MP3, Opus, AAC lub FLAC — wybierz głos, odtwórz wynik strumieniowo.
DALL-E
ImageGeneration(), ImageEdit(), ImageVariation() z DALL-E 2 / 3 i gpt-image-1. Zwraca URL lub base64-kodowane PNG.
Assistants v2
Wątki, uruchomienia, wiadomości, pliki, vector stores i code interpreter — ze zdarzeniami strumieniowania run, więc nie pollujesz.
Realtime API
Dwukierunkowy WebSocket z buforami audio wejścia/wyjścia, wykrywaniem aktywności głosowej, wywoływaniem funkcji i latencją GPT-4o — buduj agentów głosowych, którzy naturalnie przerywają.
Szybki start
Strumieniowany czat z narzędziem funkcji
Wywołanie ChatGPT, które strumieniuje tokeny i może wywołać funkcję Delphi w środku rozmowy.
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
Agenci głosowi GPT-4o nad WebSocket
Realtime API OpenAI to endpoint WebSocket, który akceptuje strumień ramek audio wejściowych i emituje strumień ramek audio wyjściowych — z subsekundową latencją, natywnym barge-in (model przestaje mówić, gdy użytkownik zaczyna), serwerowym wykrywaniem aktywności głosowej i tą samą powierzchnią wywoływania narzędzi co REST API. sgcWebSockets owija go z TsgcHTTP_API_OpenAI_Realtime, który daje Ci typowane zdarzenia dla każdej wiadomości serwera (OnSessionUpdated, OnConversationItemCreated, OnInputAudioBufferSpeechStarted, OnResponseAudioDelta itp.), więc możesz wpiąć go prosto w TBass, TMediaPlayer lub dowolną kolejkę audio.
Kompatybilność
Ten sam komponent, wiele backendów
Azure OpenAI
Ustaw Endpoint na URL Twojego zasobu Azure i ApiKey na klucz zasobu — identyfikatory wdrożeń zastępują nazwy modeli.
Ollama / LM Studio
Wskaż Endpoint na http://localhost:11434/v1 — ten sam komponent napędza lokalne modele Llama, Mistral, Qwen i Phi.
DeepSeek, Groq, Together, Mistral
Wszystkie udostępniają OpenAI-kompatybilne endpointy; zmienia się tylko bazowy URL i klucz API.
vLLM, SGLang, llama.cpp server
Samohostowane serwery inferencji z OpenAI-kompatybilnym REST — ścieżka strumieniowania SSE jest bajt po bajcie identyczna.