OpenAI Delphi-client-update

· Functies

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

  1. Responses-API (vervangt Assistants)
  2. Audio Speech (text-to-speech)
  3. Fine-Tuning Jobs
  4. Chat Completions-updates
  5. Batch-API
  6. Uploads-API
Let op: De OpenAI Assistants-API is afgeschaft en wordt uitgefaseerd op 2026-08-26. De nieuwe Responses-API is de officiële vervanger. Als je momenteel de Assistants-API via sgcWebSockets gebruikt, moet je je code beginnen te migreren naar de Responses-API die in dit artikel wordt behandeld. De Responses-API biedt een eenvoudigere, flexibelere interface met ingebouwde tool use, file search en web search-mogelijkheden.

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.