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).

Klasa komponentu

TsgcHTTP_API_OpenAI

Transport

HTTP/2 + strumieniowanie SSE + WebSocket (Realtime)

Platformy

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

Kompatybilne backendy

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

Każdy endpoint OpenAI, owinięty

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ą.

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;
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;

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.

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.

Zasoby do głębokiego zanurzenia

Referencja komponentu OpenAI

Pełna referencja właściwości / metod / zdarzeń dla TsgcHTTP_API_OpenAI.

Hub AI / LLM

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

Blog: OpenAI Realtime API

Przewodnik krok po kroku przez agenta głosowego.

Blog: Wywoływanie funkcji

Wzorzec pozwalający modelowi wywołać Twój kod Delphi.

Blog: Budowanie aplikacji Delphi zasilanych AI

Architektura aplikacji end-to-end używająca ChatGPT + embeddings.

Blog: Assistants v2 w Delphi

Wątki, uruchomienia, file search, code interpreter.

Dostarcz funkcje AI w swojej aplikacji Delphi już dziś

Pobierz wersję próbną — demo OpenAI dostarcza próbki chat, streamingu, narzędzi, Whisper, TTS i DALL-E gotowe do kompilacji.