sgcWebSockets 2026.4.0 introduceert een grote uitbreiding van de OpenAI-API-integratie met volledige ondersteuning voor de nieuwe Responses-API (de officiële vervanger van de afgeschafte Assistants-API), Audio Speech text-to-speech, beheer van Fine-Tuning Jobs, de Batch-API voor asynchrone bulkverwerking, de Uploads-API voor het verwerken van grote bestanden en gemoderniseerde Chat Completions met tool calling en gestructureerde output-ondersteuning. Dit artikel behandelt elke nieuwe methode, de parameters en praktische Delphi-codevoorbeelden.
Inhoudsopgave
- Responses-API (vervangt Assistants)
- Audio Speech (text-to-speech)
- Fine-Tuning Jobs
- Chat Completions-updates
- Batch-API
- Uploads-API
1. Responses-API (vervangt Assistants)
De Responses-API is de belangrijkste toevoeging in deze release. Het vervangt de afgeschafte Assistants-API met een
gestroomlijnde, stateless interface die wordt aangeboden via het /responses-endpoint.
Alle methoden zijn beschikbaar op het component TsgcHTTP_API_OpenAI.
In tegenstelling tot Assistants is elke Responses-API-aanroep een enkele round-trip die tooldefinities, file search,
web search en gestructureerde output kan bevatten — allemaal in één verzoek.
Methoden
| Methode | Beschrijving | Endpoint |
|---|---|---|
CreateResponse |
Maakt een nieuwe model-response aan. Accepteert een model-identifier en invoertekst (of gestructureerde input-array). Geeft de gegenereerde output van het model terug, inclusief eventuele tool calls. | POST /responses |
RetrieveResponse |
Haalt een eerder aangemaakte response op aan de hand van zijn unieke ID. Handig voor polling of het auditen van voltooide responses. | GET /responses/{response_id} |
DeleteResponse |
Verwijdert een opgeslagen response permanent. Alleen van toepassing wanneer store: true is gebruikt bij het aanmaken. |
DELETE /responses/{response_id} |
CancelResponse |
Annuleert een lopende response. Van toepassing op responses die in background mode zijn aangemaakt. | POST /responses/{response_id}/cancel |
ListInputItems |
Toont de input-items die aan een response zijn gekoppeld. Handig voor het inspecteren van de gesprekscontext die naar het model is verzonden. | GET /responses/{response_id}/input_items |
Delphi-voorbeeld
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)
De Audio Speech-API biedt text-to-speech-mogelijkheden met de TTS-modellen van OpenAI. Het ondersteunt twee modeltiers:
tts-1 voor low-latency streaming-toepassingen en
tts-1-hd voor output van hogere kwaliteit.
Er zijn zes ingebouwde stemmen beschikbaar: alloy, echo, fable,
onyx, nova en shimmer.
De output kan worden teruggegeven in mp3-, opus-, aac-, flac-, wav- of pcm-formaat.
Methoden
| Methode | Beschrijving | Endpoint |
|---|---|---|
CreateSpeech |
Genereert audio speech van de opgegeven tekstinvoer met het gespecificeerde model en stem. Geeft de audio-inhoud als binaire stream terug. | POST /audio/speech |
Delphi-voorbeeld
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;
Let op: Het model tts-1 is geoptimaliseerd voor
realtime, low-latency toepassingen, terwijl tts-1-hd
een hogere audiofideliteit biedt ten koste van iets meer latentie. Kies op basis van de vereisten van je toepassing.
3. Fine-Tuning Jobs
De Fine-Tuning Jobs-API vervangt het afgeschafte /fine-tunes-endpoint
door het nieuwe /fine_tuning/jobs-endpoint.
Het biedt volledig lifecycle-beheer voor fine-tuning-operaties: jobs aanmaken, actieve en voltooide jobs tonen,
details ophalen, lopende jobs annuleren en training-events streamen. Deze API ondersteunt fine-tuning
van modellen zoals gpt-4o-mini-2024-07-18 met je eigen trainingsdata.
Methoden
| Methode | Beschrijving | Endpoint |
|---|---|---|
CreateFineTuningJob |
Maakt een nieuwe fine-tuning-job aan met een gespecificeerd basismodel en een eerder geüpload trainingsbestand. Geeft het job-object met zijn ID en status terug. | POST /fine_tuning/jobs |
ListFineTuningJobs |
Toont alle fine-tuning-jobs voor de organisatie, met ondersteuning voor paginering. Geeft jobs terug gesorteerd op aanmaakdatum. | GET /fine_tuning/jobs |
RetrieveFineTuningJob |
Haalt gedetailleerde informatie op over een specifieke fine-tuning-job, inclusief status, hyperparameters en resultaatbestanden. | GET /fine_tuning/jobs/{job_id} |
CancelFineTuningJob |
Annuleert een lopende fine-tuning-job. De jobstatus wordt "cancelled" en er vindt geen verdere training plaats. | POST /fine_tuning/jobs/{job_id}/cancel |
ListFineTuningJobEvents |
Toont status-events voor een fine-tuning-job, inclusief training loss, validatiemetrieken en voltooiingsstatus. Ondersteunt paginering. | GET /fine_tuning/jobs/{job_id}/events |
Delphi-voorbeeld
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. Chat Completions-updates
De Chat Completions-API in sgcWebSockets 2026.4.0 is gemoderniseerd met diverse nieuwe request-eigenschappen en response-velden. Deze toevoegingen brengen volledige ondersteuning voor tool/function calling, gestructureerde JSON-output, deterministische generatie via seeds en parallelle tool-uitvoering.
Nieuwe request-eigenschappen
| Eigenschap | Beschrijving | Endpoint |
|---|---|---|
Tools |
Definieert een lijst van tools (functies) die het model mag aanroepen. Elke tool bevat een naam, beschrijving en JSON Schema voor zijn parameters. | POST /chat/completions |
ToolChoice |
Bepaalt hoe het model tools selecteert. Opties: auto, none, required of een specifieke functienaam. |
POST /chat/completions |
ResponseFormat |
Specificeert het outputformaat. Gebruik json_object voor gegarandeerde JSON-output of json_schema voor gestructureerde output die voldoet aan een opgegeven schema. |
POST /chat/completions |
Seed |
Een integer-seed voor deterministische sampling. Wanneer dezelfde seed en parameters worden gebruikt, probeert het model dezelfde output te produceren. | POST /chat/completions |
MaxCompletionTokens |
Stelt een bovengrens in op het aantal tokens dat het model in de response kan genereren. Vervangt de oudere max_tokens-parameter. |
POST /chat/completions |
ParallelToolCalls |
Wanneer ingeschakeld, kan het model meerdere tool calls in één response uitgeven, waardoor parallelle uitvoering aan de clientzijde mogelijk is. | POST /chat/completions |
StreamOptions |
Configuratie voor streaming-responses. Bevat opties zoals include_usage om token usage-statistieken in de laatste gestreamde chunk te ontvangen. |
POST /chat/completions |
Nieuwe response-velden
| Veld | Beschrijving | Endpoint |
|---|---|---|
ToolCalls |
Array van tool call-objecten in het assistant-bericht. Elk bevat een ID, functienaam en argumenten voor client-side uitvoering. | POST /chat/completions |
Refusal |
Bevat het weigeringbericht van het model wanneer het een verzoek afwijst vanwege veiligheids- of contentbeleidsbeperkingen. | POST /chat/completions |
SystemFingerprint |
Een fingerprint die de backend-configuratie vertegenwoordigt die is gebruikt om de response te genereren. Handig voor het verifiëren van deterministische output bij gebruik van Seed. |
POST /chat/completions |
Delphi-voorbeeld
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
Met de Batch-API kun je grote groepen API-verzoeken versturen voor asynchrone verwerking. Dit is ideaal voor
workloads die geen onmiddellijke responses vereisen, zoals bulkclassificatie, embedding-generatie of
grootschalige content moderation. Batch-verzoeken worden doorgaans binnen 24 uur voltooid en bieden 50% kostenbesparing
vergeleken met synchrone API-aanroepen. Alle batch-methoden zijn beschikbaar op het component
TsgcHTTP_API_OpenAI via het
/batches-endpoint.
Methoden
| Methode | Beschrijving | Endpoint |
|---|---|---|
CreateBatch |
Maakt een nieuwe batch-job aan vanuit een eerder geüpload JSONL-bestand met API-verzoeken. Vereist de invoerbestand-ID en target endpoint. | POST /batches |
RetrieveBatch |
Haalt de huidige status en details op van een batch-job, inclusief voortgangsaantallen en outputbestand-referenties. | GET /batches/{batch_id} |
ListBatches |
Toont alle batch-jobs voor de organisatie. Ondersteunt paginering via de parameters after en limit. |
GET /batches |
CancelBatch |
Annuleert een lopende batch-job. Reeds voltooide verzoeken binnen de batch worden niet beïnvloed. | POST /batches/{batch_id}/cancel |
Delphi-voorbeeld
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;
Let op: Het invoerbestand voor CreateBatch moet een JSONL-bestand zijn
dat is geüpload via de Files-API met purpose batch. Elke regel
in het bestand vertegenwoordigt een enkel API-verzoek met een custom ID, methode, URL en body.
6. Uploads-API
Met de Uploads-API kun je grote bestanden in meerdere delen uploaden, wat essentieel is bij het werken met bestanden die
de upload-limiet van één verzoek overschrijden (doorgaans 512 MB). De workflow omvat het aanmaken van een upload-sessie,
het sequentieel toevoegen van delen en vervolgens het voltooien van de upload om een
File-object te ontvangen dat met
andere API-endpoints kan worden gebruikt. Alle methoden zijn beschikbaar op het component
TsgcHTTP_API_OpenAI via het
/uploads-endpoint.
Methoden
| Methode | Beschrijving | Endpoint |
|---|---|---|
CreateUpload |
Initieert een nieuwe multipart upload-sessie. Vereist de bestandsnaam, purpose, totaal aantal bytes en MIME-type. Geeft een upload-object met een unieke ID terug. | POST /uploads |
AddUploadPart |
Voegt een chunk bestandsdata toe aan een lopende upload. Delen moeten sequentieel worden toegevoegd en elk deel geeft een part-ID terug die nodig is voor voltooiing. | POST /uploads/{upload_id}/parts |
CompleteUpload |
Voltooit de multipart upload door de geordende lijst van part-ID's op te geven. Geeft het uiteindelijke File-object terug dat met andere API's kan worden gebruikt. |
POST /uploads/{upload_id}/complete |
CancelUpload |
Annuleert een lopende upload-sessie. Eventueel geüploade delen worden weggegooid en de upload-ID wordt ongeldig. | POST /uploads/{upload_id}/cancel |
Delphi-voorbeeld
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;
Let op: Upload-sessies vervallen na een uur inactiviteit. Elk deel moet ten minste 5 MB zijn (behalve het
laatste deel) en delen moeten worden toegevoegd in de volgorde waarin ze moeten worden samengevoegd. De maximale totale uploadgrootte is 8 GB.
