sgcWebSockets 2026.4.0 bringt eine umfassende Erweiterung der OpenAI-API-Integration mit vollständiger Unterstützung für die neue Responses API (den offiziellen Nachfolger der eingestellten Assistants API), Audio-Speech-Text-to-Speech, die Verwaltung von Fine-Tuning-Jobs, die Batch-API für asynchrone Massenverarbeitung, die Uploads-API für große Dateien und modernisierte Chat Completions mit Tool Calling und Unterstützung für strukturierte Ausgaben. Dieser Artikel behandelt jede neue Methode, ihre Parameter und praktische Delphi-Code-Beispiele.
Inhaltsverzeichnis
- Responses API (ersetzt Assistants)
- Audio Speech (Text-to-Speech)
- Fine-Tuning-Jobs
- Updates zu Chat Completions
- Batch-API
- Uploads-API
1. Responses API (ersetzt Assistants)
Die Responses API ist die wichtigste Neuerung in diesem Release. Sie ersetzt die eingestellte Assistants API durch eine
schlanke, zustandslose Schnittstelle, die über den Endpunkt /responses erreichbar ist.
Alle Methoden stehen in der Komponente TsgcHTTP_API_OpenAI zur Verfügung.
Anders als Assistants ist jeder Responses-API-Aufruf ein einziger Round-trip, der Tool-Definitionen, Dateisuche,
Web-Suche und strukturierte Ausgaben enthalten kann -- alles in einer Anfrage.
Methoden
| Methode | Beschreibung | Endpunkt |
|---|---|---|
CreateResponse |
Erzeugt eine neue Modell-Antwort. Nimmt eine Modell-ID und Eingabetext (oder ein strukturiertes Eingabe-Array) entgegen. Gibt die vom Modell generierte Ausgabe inklusive Tool-Calls zurück. | POST /responses |
RetrieveResponse |
Holt eine zuvor erstellte Antwort anhand ihrer eindeutigen ID. Nützlich für das Pollen oder Auditieren abgeschlossener Antworten. | GET /responses/{response_id} |
DeleteResponse |
Löscht eine gespeicherte Antwort endgültig. Nur anwendbar, wenn bei der Erstellung store: true verwendet wurde. |
DELETE /responses/{response_id} |
CancelResponse |
Bricht eine laufende Antwort ab. Anwendbar auf Antworten, die im Hintergrundmodus erstellt wurden. | POST /responses/{response_id}/cancel |
ListInputItems |
Listet die mit einer Antwort verknüpften Eingabeelemente auf. Nützlich, um den an das Modell gesendeten Konversationskontext zu prüfen. | GET /responses/{response_id}/input_items |
Delphi-Beispiel
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 (Text-to-Speech)
Die Audio-Speech-API bietet Text-to-Speech-Funktionen mit den TTS-Modellen von OpenAI. Sie unterstützt zwei Modellstufen:
tts-1 für Streaming-Szenarien mit niedriger Latenz und
tts-1-hd für höherwertige Ausgaben.
Sechs eingebaute Stimmen stehen zur Verfügung: alloy, echo, fable,
onyx, nova und shimmer.
Die Ausgabe kann in den Formaten mp3, opus, aac, flac, wav oder pcm zurückgegeben werden.
Methods
| Methode | Beschreibung | Endpunkt |
|---|---|---|
CreateSpeech |
Erzeugt Audio-Speech aus der übergebenen Texteingabe unter Verwendung des angegebenen Modells und der Stimme. Gibt den Audio-Inhalt als binären Stream zurück. | POST /audio/speech |
Delphi-Beispiel
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;
Hinweis: Das Modell tts-1 ist auf
echtzeitnahe Anwendungen mit niedriger Latenz optimiert, während tts-1-hd
eine höhere Audio-Qualität bei leicht erhöhter Latenz liefert. Wähle je nach Anforderungen deiner Anwendung.
3. Fine-Tuning-Jobs
Die Fine-Tuning-Jobs-API ersetzt den eingestellten Endpunkt /fine-tunes
durch den neuen Endpunkt /fine_tuning/jobs.
Sie bietet ein vollständiges Lifecycle-Management für Fine-Tuning-Operationen: Jobs anlegen, aktive und abgeschlossene Jobs auflisten,
Details abrufen, laufende Jobs abbrechen und Trainings-Events streamen. Diese API unterstützt das Fine-Tuning
von Modellen wie gpt-4o-mini-2024-07-18 mit deinen eigenen Trainingsdaten.
Methods
| Methode | Beschreibung | Endpunkt |
|---|---|---|
CreateFineTuningJob |
Erzeugt einen neuen Fine-Tuning-Job auf Basis eines angegebenen Basismodells und einer zuvor hochgeladenen Trainingsdatei. Gibt das Job-Objekt mit ID und Status zurück. | POST /fine_tuning/jobs |
ListFineTuningJobs |
Listet alle Fine-Tuning-Jobs der Organisation auf, mit Pagination-Unterstützung. Gibt Jobs nach Erstellungsdatum sortiert zurück. | GET /fine_tuning/jobs |
RetrieveFineTuningJob |
Holt detaillierte Informationen zu einem bestimmten Fine-Tuning-Job, einschließlich Status, Hyperparametern und Ergebnisdateien. | GET /fine_tuning/jobs/{job_id} |
CancelFineTuningJob |
Bricht einen laufenden Fine-Tuning-Job ab. Der Job-Status wechselt auf "cancelled", und es findet kein weiteres Training statt. | POST /fine_tuning/jobs/{job_id}/cancel |
ListFineTuningJobEvents |
Listet Status-Events eines Fine-Tuning-Jobs auf, einschließlich Trainings-Loss, Validierungsmetriken und Abschlussstatus. Unterstützt Pagination. | GET /fine_tuning/jobs/{job_id}/events |
Delphi-Beispiel
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. Updates zu Chat Completions
Die Chat-Completions-API in sgcWebSockets 2026.4.0 wurde mit mehreren neuen Anfrage-Eigenschaften und Antwortfeldern modernisiert. Diese Ergänzungen bringen volle Unterstützung für Tool-/Function-Calling, strukturierte JSON-Ausgaben, deterministische Generierung per Seed und parallele Tool-Ausführung.
Neue Anfrage-Eigenschaften
| Eigenschaft | Beschreibung | Endpunkt |
|---|---|---|
Tools |
Definiert eine Liste von Tools (Funktionen), die das Modell aufrufen darf. Jedes Tool enthält Name, Beschreibung und ein JSON-Schema für seine Parameter. | POST /chat/completions |
ToolChoice |
Steuert, wie das Modell Tools auswählt. Optionen: auto, none, required oder ein konkreter Funktionsname. |
POST /chat/completions |
ResponseFormat |
Legt das Ausgabeformat fest. Verwende json_object für garantierte JSON-Ausgabe oder json_schema für strukturierte Ausgaben gemäß einem mitgegebenen Schema. |
POST /chat/completions |
Seed |
Ein ganzzahliger Seed für deterministisches Sampling. Bei gleichem Seed und gleichen Parametern versucht das Modell, dieselbe Ausgabe zu liefern. | POST /chat/completions |
MaxCompletionTokens |
Setzt eine Obergrenze für die Anzahl an Tokens, die das Modell in der Antwort erzeugen darf. Ersetzt den älteren Parameter max_tokens. |
POST /chat/completions |
ParallelToolCalls |
Wenn aktiviert, darf das Modell mehrere Tool-Aufrufe in einer einzigen Antwort ausgeben und parallele Ausführung clientseitig ermöglichen. | POST /chat/completions |
StreamOptions |
Konfiguration für Streaming-Antworten. Beinhaltet Optionen wie include_usage, um Token-Nutzungsstatistiken im letzten gestreamten Chunk zu erhalten. |
POST /chat/completions |
Neue Antwortfelder
| Feld | Beschreibung | Endpunkt |
|---|---|---|
ToolCalls |
Array von Tool-Call-Objekten in der Assistant-Nachricht. Jedes enthält eine ID, einen Funktionsnamen und Argumente für die clientseitige Ausführung. | POST /chat/completions |
Refusal |
Enthält die Verweigerungsnachricht des Modells, wenn es eine Anfrage aus Sicherheits- oder Content-Policy-Gründen ablehnt. | POST /chat/completions |
SystemFingerprint |
Ein Fingerabdruck, der die zur Erzeugung der Antwort verwendete Backend-Konfiguration repräsentiert. Nützlich, um deterministische Ausgaben bei Verwendung von Seed zu verifizieren. |
POST /chat/completions |
Delphi-Beispiel
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
Mit der Batch-API kannst du große Gruppen von API-Anfragen zur asynchronen Verarbeitung einreichen. Das ist ideal für
Workloads, die keine sofortige Antwort brauchen, etwa Massenklassifikation, Embedding-Generierung oder
groß angelegte Content-Moderation. Batch-Anfragen werden typischerweise innerhalb von 24 Stunden abgeschlossen und bieten
eine Kostenersparnis von 50 % gegenüber synchronen API-Aufrufen. Alle Batch-Methoden stehen in der Komponente
TsgcHTTP_API_OpenAI über den Endpunkt
/batches zur Verfügung.
Methods
| Methode | Beschreibung | Endpunkt |
|---|---|---|
CreateBatch |
Erzeugt einen neuen Batch-Job aus einer zuvor hochgeladenen JSONL-Datei mit API-Anfragen. Erfordert die ID der Eingabedatei und den Ziel-Endpunkt. | POST /batches |
RetrieveBatch |
Holt den aktuellen Status und die Details eines Batch-Jobs, einschließlich Fortschrittszählern und Verweisen auf Ausgabedateien. | GET /batches/{batch_id} |
ListBatches |
Listet alle Batch-Jobs der Organisation auf. Unterstützt Pagination über die Parameter after und limit. |
GET /batches |
CancelBatch |
Bricht einen laufenden Batch-Job ab. Bereits abgeschlossene Anfragen innerhalb des Batches sind davon nicht betroffen. | POST /batches/{batch_id}/cancel |
Delphi-Beispiel
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;
Hinweis: Die Eingabedatei für CreateBatch muss eine JSONL-Datei sein,
die über die Files-API mit dem Zweck batch hochgeladen wurde. Jede Zeile
in der Datei steht für eine einzelne API-Anfrage mit einer eigenen ID, Methode, URL und einem Body.
6. Uploads-API
Die Uploads-API ermöglicht das Hochladen großer Dateien in mehreren Teilen, was unverzichtbar ist, wenn Dateien
das Limit für Einzel-Uploads (üblicherweise 512 MB) überschreiten. Der Ablauf umfasst das Anlegen einer Upload-Sitzung,
das sukzessive Hinzufügen von Parts und schließlich das Abschließen des Uploads, womit du ein
File-Objekt erhältst, das du mit
anderen API-Endpunkten verwenden kannst. Alle Methoden stehen in der Komponente
TsgcHTTP_API_OpenAI über den Endpunkt
/uploads zur Verfügung.
Methods
| Methode | Beschreibung | Endpunkt |
|---|---|---|
CreateUpload |
Startet eine neue Multipart-Upload-Sitzung. Erfordert Dateiname, Zweck, Gesamtbytes und MIME-Typ. Gibt ein Upload-Objekt mit eindeutiger ID zurück. | POST /uploads |
AddUploadPart |
Fügt einen Datei-Chunk einem laufenden Upload hinzu. Die Parts müssen sequenziell hinzugefügt werden und jeder Part liefert eine Part-ID, die für das Abschließen benötigt wird. | POST /uploads/{upload_id}/parts |
CompleteUpload |
Schließt den Multipart-Upload ab, indem die geordnete Liste der Part-IDs übergeben wird. Gibt das finale File-Objekt zurück, das mit anderen APIs nutzbar ist. |
POST /uploads/{upload_id}/complete |
CancelUpload |
Bricht eine laufende Upload-Sitzung ab. Bereits hochgeladene Parts werden verworfen und die Upload-ID wird ungültig. | POST /uploads/{upload_id}/cancel |
Delphi-Beispiel
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;
Hinweis: Upload-Sitzungen laufen nach einer Stunde Inaktivität ab. Jeder Part sollte mindestens 5 MB groß sein (außer dem
letzten Part), und Parts müssen in der Reihenfolge hinzugefügt werden, in der sie zusammengefügt werden sollen. Die maximale Upload-Gesamtgröße beträgt 8 GB.
