sgcWebSockets 2026.4.0 wprowadza znaczącą rozbudowę integracji z API OpenAI, zapewniając pełne wsparcie dla nowego Responses API (oficjalnego zamiennika przestarzałego Assistants API), syntezę mowy Audio Speech, zarządzanie zadaniami dostrajania (Fine-Tuning Jobs), Batch API do asynchronicznego przetwarzania masowego, Uploads API do obsługi dużych plików oraz zaktualizowane uzupełniania konwersacji (Chat Completions) z obsługą wywoływania narzędzi i strukturyzowanych wyników. Ten artykuł omawia każdą nową metodę, jej parametry i praktyczne przykłady kodu Delphi.
Spis treści
- Responses API (zastępuje Assistants)
- Audio Speech (synteza mowy)
- Zadania dostrajania (Fine-Tuning Jobs)
- Aktualizacje uzupełnień konwersacji
- Batch API
- Uploads API
1. Responses API (zastępuje Assistants)
Responses API to najważniejsze nowe funkcjonalność w tym wydaniu. Zastępuje przestarzałe Assistants API
uproszczonym, bezstanowym interfejsem udostępnionym przez punkt końcowy /responses.
Wszystkie metody są dostępne w komponencie TsgcHTTP_API_OpenAI.
W odróżnieniu od Assistants, każde wywołanie Responses API to pojedyncza wymiana, która może zawierać
definicje narzędzi, wyszukiwanie plików, wyszukiwanie w internecie i strukturyzowane wyniki — wszystko w jednym żądaniu.
Methods
| Metoda | Opis | Endpoint |
|---|---|---|
CreateResponse |
Tworzy nową odpowiedź modelu. Przyjmuje identyfikator modelu i tekst wejściowy (lub tablicę strukturyzowaną). Zwraca wygenerowane dane wyjściowe modelu, w tym wywołania narzędzi. | POST /responses |
RetrieveResponse |
Pobiera wcześniej utworzoną odpowiedź na podstawie jej unikalnego ID. Przydatne do odpytywania lub audytu zakończonych odpowiedzi. | GET /responses/{response_id} |
DeleteResponse |
Trwale usuwa zapisaną odpowiedź. Dotyczy tylko odpowiedzi utworzonych z store: true. |
DELETE /responses/{response_id} |
CancelResponse |
Anuluje odpowiedź w trakcie przetwarzania. Dotyczy odpowiedzi utworzonych w trybie w tle. | POST /responses/{response_id}/cancel |
ListInputItems |
Listuje elementy wejściowe powiązane z odpowiedzią. Przydatne do sprawdzania kontekstu konwersacji wysłanego do modelu. | GET /responses/{response_id}/input_items |
Delphi Example
var
OpenAI: TsgcHTTP_API_OpenAI;
vResponse: String;
begin
OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
Try
OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
// Create a simple response
vResponse := OpenAI._CreateResponse('gpt-4o', 'Explain quantum computing');
ShowMessage(vResponse);
// Retrieve a previously created response
vResponse := OpenAI._RetrieveResponse('resp_abc123');
ShowMessage(vResponse);
// Delete a stored response
OpenAI._DeleteResponse('resp_abc123');
Finally
OpenAI.Free;
end;
end;
2. Audio Speech (synteza mowy)
Audio Speech API zapewnia możliwości syntezy mowy przy użyciu modeli TTS OpenAI. Obsługuje dwa poziomy modeli:
tts-1 dla zastosowań streamingowych o niskim opóźnieniu i tts-1-hd dla wyższej jakości dźwięku.
Dostępnych jest sześć wbudowanych głosów: alloy, echo, fable,
onyx, nova i shimmer.
Wynik można zwrócić w formacie mp3, opus, aac, flac, wav lub pcm.
Methods
| Metoda | Opis | Endpoint |
|---|---|---|
CreateSpeech |
Generuje mowę z podanego tekstu wejściowego przy użyciu określonego modelu i głosu. Zwraca zawartość audio jako strumień binarny. | POST /audio/speech |
Delphi Example
var
OpenAI: TsgcHTTP_API_OpenAI;
vAudioStream: TMemoryStream;
begin
OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
Try
OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
// Generate speech using the 'alloy' voice
oStream := TFileStream.Create('stream.mpeg', fmCreate or fmOpenRead);
Try
OpenAI._CreateSpeech('tts-1', 'Hello world', 'alloy', oStream);
Finally
oStream.Free;
End;
// Generate high-definition speech with 'nova' voice
oStream := TFileStream.Create('stream.mpeg', fmCreate or fmOpenRead);
Try
OpenAI._CreateSpeech('tts-1-hd', 'Welcome to sgcWebSockets.', 'nova', oStream);
Finally
oStream.Free;
End;
Finally
OpenAI.Free;
end;
end;
Uwaga: Model tts-1 jest zoptymalizowany pod kątem aplikacji w czasie rzeczywistym o niskim opóźnieniu, podczas gdy tts-1-hd zapewnia wyższą wierność dźwięku kosztem nieznacznie większego opóźnienia. Wybierz w zależności od wymagań aplikacji.
3. Zadania dostrajania
Fine-Tuning Jobs API zastępuje przestarzały punkt końcowy /fine-tunes
nowym /fine_tuning/jobs.
Zapewnia pełne zarządzanie cyklem życia operacji dostrajania: tworzenie zadań, listowanie aktywnych i zakończonych zadań,
pobieranie szczegółów, anulowanie zadań w trakcie i strumieniowanie zdarzeń treningowych. To API obsługuje dostrajanie
modeli takich jak gpt-4o-mini-2024-07-18 przy użyciu własnych danych treningowych.
Methods
| Metoda | Opis | Endpoint |
|---|---|---|
CreateFineTuningJob |
Tworzy nowe zadanie dostrajania przy użyciu określonego modelu bazowego i wcześniej przesłanego pliku treningowego. Zwraca obiekt zadania z jego ID i statusem. | POST /fine_tuning/jobs |
ListFineTuningJobs |
Listuje wszystkie zadania dostrajania dla organizacji z obsługą paginacji. Zwraca zadania posortowane według daty utworzenia. | GET /fine_tuning/jobs |
RetrieveFineTuningJob |
Pobiera szczegółowe informacje o określonym zadaniu dostrajania, w tym status, hiperparametry i pliki wynikowe. | GET /fine_tuning/jobs/{job_id} |
CancelFineTuningJob |
Anuluje zadanie dostrajania w trakcie realizacji. Status zadania zmienia się na „anulowane" i nie następuje dalsze trenowanie. | POST /fine_tuning/jobs/{job_id}/cancel |
ListFineTuningJobEvents |
Listuje zdarzenia statusu dla zadania dostrajania, w tym stratę treningową, metryki walidacji i status ukończenia. Obsługuje paginację. | GET /fine_tuning/jobs/{job_id}/events |
Delphi Example
var
OpenAI: TsgcHTTP_API_OpenAI;
vResponse: String;
begin
OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
Try
OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
// Create a fine-tuning job
vResponse := OpenAI._CreateFineTuningJob('gpt-4o-mini-2024-07-18', 'file-abc123');
ShowMessage(vResponse);
// List all fine-tuning jobs
vResponse := OpenAI._ListFineTuningJobs;
ShowMessage(vResponse);
// Retrieve a specific job
vResponse := OpenAI._RetrieveFineTuningJob('ftjob-xyz789');
ShowMessage(vResponse);
// List events for a job
vResponse := OpenAI._ListFineTuningJobEvents('ftjob-xyz789');
ShowMessage(vResponse);
// Cancel an in-progress job
OpenAI._CancelFineTuningJob('ftjob-xyz789');
Finally
OpenAI.Free;
end;
end;
4. Aktualizacje uzupełnień konwersacji
API uzupełnień konwersacji w sgcWebSockets 2026.4.0 zostało zmodernizowane o kilka nowych właściwości żądań i pól odpowiedzi. Zmiany te zapewniają pełne wsparcie dla wywoływania narzędzi/funkcji, strukturyzowanych wyników JSON, deterministycznego generowania za pomocą ziaren (seeds) i równoległego wykonywania narzędzi.
Nowe właściwości żądań
| Właściwość | Opis | Endpoint |
|---|---|---|
Tools |
Definiuje listę narzędzi (funkcji), które model może wywołać. Każde narzędzie zawiera nazwę, opis i schemat JSON dla parametrów. | POST /chat/completions |
ToolChoice |
Kontroluje, jak model wybiera narzędzia. Opcje: auto, none, required lub konkretna nazwa funkcji. |
POST /chat/completions |
ResponseFormat |
Określa format danych wyjściowych. Użyj json_object dla gwarantowanego wyjścia JSON lub json_schema dla strukturyzowanego wyjścia zgodnego z podanym schematem. |
POST /chat/completions |
Seed |
Liczba całkowita jako ziarno dla deterministycznego próbkowania. Gdy użyto tych samych ziarna i parametrów, model próbuje wygenerować te same dane wyjściowe. | POST /chat/completions |
MaxCompletionTokens |
Ustawia górną granicę liczby tokenów, które model może wygenerować w odpowiedzi. Zastępuje starszy parametr max_tokens. |
POST /chat/completions |
ParallelToolCalls |
Po włączeniu model może wydać wiele wywołań narzędzi w jednej odpowiedzi, umożliwiając równoległe wykonywanie po stronie klienta. | POST /chat/completions |
StreamOptions |
Konfiguracja odpowiedzi strumieniowych. Zawiera opcje takie jak include_usage do odbierania statystyk użycia tokenów w ostatnim strumieniowanym fragmencie. |
POST /chat/completions |
Nowe pola odpowiedzi
| Pole | Opis | Endpoint |
|---|---|---|
ToolCalls |
Tablica obiektów wywołania narzędzi w wiadomości asystenta. Każdy zawiera ID, nazwę funkcji i argumenty do wykonania po stronie klienta. | POST /chat/completions |
Refusal |
Zawiera komunikat odmowy modelu, gdy ten odrzuca spełnienie żądania ze względu na ograniczenia bezpieczeństwa lub zasady treści. | POST /chat/completions |
SystemFingerprint |
Odcisk reprezentujący konfigurację backendu użytą do wygenerowania odpowiedzi. Przydatny do weryfikacji deterministycznego wyjścia przy użyciu Seed. |
POST /chat/completions |
Delphi Example
var
OpenAI: TsgcHTTP_API_OpenAI;
vResponse: String;
begin
OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
Try
OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
// Configure Chat Completions with new properties
OpenAI.ChatCompletions.Model := 'gpt-4o';
OpenAI.ChatCompletions.MaxCompletionTokens := 1024;
OpenAI.ChatCompletions.Seed := 42;
OpenAI.ChatCompletions.ParallelToolCalls := True;
OpenAI.ChatCompletions.ResponseFormat := 'json_object';
// Add a user message and create the completion
OpenAI.ChatCompletions.AddMessage('user', 'List 3 benefits of Delphi in JSON format.');
vResponse := OpenAI._CreateChatCompletion;
ShowMessage(vResponse);
Finally
OpenAI.Free;
end;
end;
5. Batch API
Batch API umożliwia wysyłanie dużych grup żądań API do przetwarzania asynchronicznego. Jest idealny dla
obciążeń, które nie wymagają natychmiastowych odpowiedzi, takich jak klasyfikacja masowa, generowanie osadzeń lub
moderowanie treści na dużą skalę. Żądania wsadowe zazwyczaj kończą się w ciągu 24 godzin i oferują 50% obniżkę kosztów
w porównaniu do synchronicznych wywołań API. Wszystkie metody wsadowe są dostępne w komponencie
TsgcHTTP_API_OpenAI przez punkt końcowy /batches.
Methods
| Metoda | Opis | Endpoint |
|---|---|---|
CreateBatch |
Tworzy nowe zadanie wsadowe z wcześniej przesłanego pliku JSONL zawierającego żądania API. Wymaga ID pliku wejściowego i docelowego punktu końcowego. | POST /batches |
RetrieveBatch |
Pobiera bieżący status i szczegóły zadania wsadowego, w tym liczniki postępu i odniesienia do plików wynikowych. | GET /batches/{batch_id} |
ListBatches |
Listuje wszystkie zadania wsadowe dla organizacji. Obsługuje paginację przez parametry after i limit. |
GET /batches |
CancelBatch |
Anuluje zadanie wsadowe w trakcie realizacji. Już zakończone żądania w ramach partii nie są zmieniane. | POST /batches/{batch_id}/cancel |
Delphi Example
var
OpenAI: TsgcHTTP_API_OpenAI;
vResponse: String;
begin
OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
Try
OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
// Create a batch job targeting chat completions
vResponse := OpenAI._CreateBatch('file-abc123', '/v1/chat/completions');
ShowMessage(vResponse);
// Check batch status
vResponse := OpenAI._RetrieveBatch('batch_xyz789');
ShowMessage(vResponse);
// List all batches
vResponse := OpenAI._ListBatches;
ShowMessage(vResponse);
// Cancel a batch if needed
OpenAI._CancelBatch('batch_xyz789');
Finally
OpenAI.Free;
end;
end;
Uwaga: Plik wejściowy dla CreateBatch musi być plikiem JSONL
przesłanym przez Files API z celem batch. Każda linia
pliku reprezentuje jedno żądanie API z niestandardowym ID, metodą, adresem URL i treścią.
6. Uploads API
Uploads API umożliwia przesyłanie dużych plików w wielu częściach, co jest niezbędne podczas pracy z plikami
przekraczającymi limit jednorazowego przesyłania (zazwyczaj 512 MB). Przepływ pracy obejmuje tworzenie sesji przesyłania,
dodawanie części sekwencyjnie, a następnie kończenie przesyłania w celu otrzymania obiektu File,
którego można używać z innymi punktami końcowymi API. Wszystkie metody są dostępne w komponencie
TsgcHTTP_API_OpenAI przez punkt końcowy /uploads.
Methods
| Metoda | Opis | Endpoint |
|---|---|---|
CreateUpload |
Inicjuje nową wieloczęściową sesję przesyłania. Wymaga nazwy pliku, celu, całkowitej liczby bajtów i typu MIME. Zwraca obiekt przesyłania z unikalnym ID. | POST /uploads |
AddUploadPart |
Dodaje fragment danych pliku do trwającego przesyłania. Części muszą być dodawane sekwencyjnie, a każda część zwraca ID potrzebne do ukończenia. | POST /uploads/{upload_id}/parts |
CompleteUpload |
Kończy wieloczęściowe przesyłanie, podając uporządkowaną listę ID części. Zwraca ostateczny obiekt File, który można używać z innymi API. |
POST /uploads/{upload_id}/complete |
CancelUpload |
Anuluje trwającą sesję przesyłania. Wszystkie przesłane części są odrzucane, a ID przesyłania staje się nieważne. | POST /uploads/{upload_id}/cancel |
Delphi Example
var
OpenAI: TsgcHTTP_API_OpenAI;
vUploadResponse: String;
vPartResponse: String;
vCompleteResponse: String;
begin
OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
Try
OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
// Step 1: Create an upload session
vUploadResponse := OpenAI._CreateUpload(
'training_data.jsonl', 'fine-tune', 104857600, 'application/jsonl');
ShowMessage(vUploadResponse);
// Step 2: Add file parts
vPartResponse := OpenAI._AddUploadPart('upload_abc123', 'C:\data\part1.jsonl');
ShowMessage(vPartResponse);
vPartResponse := OpenAI._AddUploadPart('upload_abc123', 'C:\data\part2.jsonl');
ShowMessage(vPartResponse);
// Step 3: Complete the upload
vCompleteResponse := OpenAI._CompleteUpload('upload_abc123',
'["part_def456", "part_ghi789"]');
ShowMessage(vCompleteResponse);
Finally
OpenAI.Free;
end;
end;
Uwaga: Sesje przesyłania wygasają po godzinie braku aktywności. Każda część powinna mieć co najmniej 5 MB (z wyjątkiem ostatniej), a części muszą być dodawane w kolejności, w jakiej powinny być łączone. Maksymalny całkowity rozmiar przesyłania wynosi 8 GB.
