sgcWebSockets 2026.4.0 introduit une expansion majeure de l'intégration de l'API OpenAI, avec une prise en charge complète de la nouvelle Responses API (le remplacement officiel de l'Assistants API dépréciée), Audio Speech text-to-speech, la gestion des Fine-Tuning Jobs, la Batch API pour le traitement en masse asynchrone, la Uploads API pour les fichiers volumineux, et des Chat Completions modernisées avec la prise en charge du tool calling et de la sortie structurée. Cet article couvre chaque nouvelle méthode, ses paramètres, et inclut des exemples de code Delphi pratiques.
Table des matières
- Responses API (remplace Assistants)
- Audio Speech (text-to-speech)
- Fine-Tuning Jobs
- Mises à jour de Chat Completions
- Batch API
- Uploads API
1. Responses API (remplace Assistants)
La Responses API est l'ajout le plus important de cette version. Elle remplace l'Assistants API dépréciée par une
interface simplifiée et sans état exposée via l'endpoint /responses.
Toutes les méthodes sont disponibles sur le composant TsgcHTTP_API_OpenAI.
Contrairement à Assistants, chaque appel à la Responses API est un aller-retour unique qui peut inclure des définitions d'outils, file search,
web search et sortie structurée — le tout en une seule requête.
Méthodes
| Méthode | Description | Endpoint |
|---|---|---|
CreateResponse |
Crée une nouvelle réponse du modèle. Accepte un identifiant de modèle et un texte d'entrée (ou un tableau d'entrées structurées). Renvoie la sortie générée par le modèle, y compris les éventuels tool calls. | POST /responses |
RetrieveResponse |
Récupère une réponse créée précédemment par son ID unique. Utile pour le polling ou l'audit de réponses terminées. | GET /responses/{response_id} |
DeleteResponse |
Supprime définitivement une réponse stockée. Applicable uniquement lorsque store: true a été utilisé lors de la création. |
DELETE /responses/{response_id} |
CancelResponse |
Annule une réponse en cours. Applicable aux réponses créées en mode background. | POST /responses/{response_id}/cancel |
ListInputItems |
Liste les éléments d'entrée associés à une réponse. Utile pour inspecter le contexte de conversation envoyé au modèle. | GET /responses/{response_id}/input_items |
Exemple Delphi
var
OpenAI: TsgcHTTP_API_OpenAI;
vResponse: String;
begin
OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
Try
OpenAI.OpenAIOptions.ApiKey := 'sk-your-api-key';
// Créer une réponse simple
vResponse := OpenAI._CreateResponse('gpt-4o', 'Explain quantum computing');
ShowMessage(vResponse);
// Récupérer une réponse précédemment créée
vResponse := OpenAI._RetrieveResponse('resp_abc123');
ShowMessage(vResponse);
// Supprimer une réponse stockée
OpenAI._DeleteResponse('resp_abc123');
Finally
OpenAI.Free;
end;
end;
2. Audio Speech (text-to-speech)
L'API Audio Speech fournit des capacités de text-to-speech en utilisant les modèles TTS d'OpenAI. Elle prend en charge deux niveaux de modèles :
tts-1 pour les cas d'usage de streaming à faible latence et
tts-1-hd pour une sortie de meilleure qualité.
Six voix intégrées sont disponibles : alloy, echo, fable,
onyx, nova et shimmer.
La sortie peut être renvoyée au format mp3, opus, aac, flac, wav ou pcm.
Methods
| Method | Description | Endpoint |
|---|---|---|
CreateSpeech |
Génère un audio de synthèse vocale à partir du texte d'entrée fourni en utilisant le modèle et la voix spécifiés. Renvoie le contenu audio sous forme de flux binaire. | 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';
// Générer la synthèse vocale avec la voix 'alloy'
oStream := TFileStream.Create('stream.mpeg', fmCreate or fmOpenRead);
Try
OpenAI._CreateSpeech('tts-1', 'Hello world', 'alloy', oStream);
Finally
oStream.Free;
End;
// Générer la synthèse vocale haute définition avec la voix 'nova'
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;
Note : le modèle tts-1 est optimisé pour
les applications temps réel à faible latence, tandis que tts-1-hd
offre une meilleure fidélité audio au prix d'une latence légèrement accrue. Choisis en fonction des besoins de ton application.
3. Fine-Tuning Jobs
L'API Fine-Tuning Jobs remplace l'ancien endpoint /fine-tunes
par le nouvel endpoint /fine_tuning/jobs.
Elle fournit une gestion complète du cycle de vie des opérations de fine-tuning : création de tâches, liste des tâches actives et terminées,
récupération de détails, annulation de tâches en cours et streaming des événements d'entraînement. Cette API prend en charge le fine-tuning
de modèles comme gpt-4o-mini-2024-07-18 avec tes propres données d'entraînement.
Methods
| Method | Description | Endpoint |
|---|---|---|
CreateFineTuningJob |
Crée une nouvelle tâche de fine-tuning en utilisant un modèle de base spécifié et un fichier d'entraînement précédemment téléversé. Renvoie l'objet job avec son ID et son statut. | POST /fine_tuning/jobs |
ListFineTuningJobs |
Liste toutes les tâches de fine-tuning de l'organisation, avec prise en charge de la pagination. Renvoie les jobs triés par date de création. | GET /fine_tuning/jobs |
RetrieveFineTuningJob |
Récupère des informations détaillées sur une tâche de fine-tuning spécifique, dont le statut, les hyperparamètres et les fichiers de résultat. | GET /fine_tuning/jobs/{job_id} |
CancelFineTuningJob |
Annule une tâche de fine-tuning en cours. Le statut de la tâche passe à « cancelled » et l'entraînement s'arrête. | POST /fine_tuning/jobs/{job_id}/cancel |
ListFineTuningJobEvents |
Liste les événements de statut d'une tâche de fine-tuning, dont la perte d'entraînement, les métriques de validation et le statut de fin. Prend en charge la pagination. | 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';
// Créer une tâche de fine-tuning
vResponse := OpenAI._CreateFineTuningJob('gpt-4o-mini-2024-07-18', 'file-abc123');
ShowMessage(vResponse);
// Lister toutes les tâches de fine-tuning
vResponse := OpenAI._ListFineTuningJobs;
ShowMessage(vResponse);
// Récupérer une tâche spécifique
vResponse := OpenAI._RetrieveFineTuningJob('ftjob-xyz789');
ShowMessage(vResponse);
// Lister les événements d'une tâche
vResponse := OpenAI._ListFineTuningJobEvents('ftjob-xyz789');
ShowMessage(vResponse);
// Annuler une tâche en cours
OpenAI._CancelFineTuningJob('ftjob-xyz789');
Finally
OpenAI.Free;
end;
end;
4. Mises à jour de Chat Completions
L'API Chat Completions de sgcWebSockets 2026.4.0 a été modernisée avec plusieurs nouvelles propriétés de requête et champs de réponse. Ces ajouts apportent une prise en charge complète du tool/function calling, de la sortie JSON structurée, de la génération déterministe via des seeds et de l'exécution parallèle d'outils.
Nouvelles propriétés de requête
| Propriété | Description | Endpoint |
|---|---|---|
Tools |
Définit une liste d'outils (fonctions) que le modèle peut appeler. Chaque outil inclut un nom, une description et un JSON Schema pour ses paramètres. | POST /chat/completions |
ToolChoice |
Contrôle la façon dont le modèle sélectionne les outils. Options : auto, none, required ou un nom de fonction spécifique. |
POST /chat/completions |
ResponseFormat |
Spécifie le format de sortie. Utilise json_object pour une sortie JSON garantie ou json_schema pour une sortie structurée conforme à un schéma fourni. |
POST /chat/completions |
Seed |
Une seed entière pour un échantillonnage déterministe. Quand la même seed et les mêmes paramètres sont utilisés, le modèle tente de produire la même sortie. | POST /chat/completions |
MaxCompletionTokens |
Définit une limite supérieure sur le nombre de jetons que le modèle peut générer dans la réponse. Remplace l'ancien paramètre max_tokens. |
POST /chat/completions |
ParallelToolCalls |
Lorsque cette option est activée, le modèle peut émettre plusieurs tool calls dans une seule réponse, ce qui permet une exécution parallèle côté client. | POST /chat/completions |
StreamOptions |
Configuration pour les réponses en streaming. Inclut des options comme include_usage pour recevoir les statistiques d'utilisation de jetons dans le dernier chunk diffusé. |
POST /chat/completions |
Nouveaux champs de réponse
| Champ | Description | Endpoint |
|---|---|---|
ToolCalls |
Tableau d'objets tool call dans le message de l'assistant. Chacun contient un ID, un nom de fonction et des arguments pour l'exécution côté client. | POST /chat/completions |
Refusal |
Contient le message de refus du modèle lorsqu'il décline une requête en raison de contraintes de sécurité ou de politique de contenu. | POST /chat/completions |
SystemFingerprint |
Une empreinte représentant la configuration backend utilisée pour générer la réponse. Utile pour vérifier la sortie déterministe avec 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';
// Configurer Chat Completions avec les nouvelles propriétés
OpenAI.ChatCompletions.Model := 'gpt-4o';
OpenAI.ChatCompletions.MaxCompletionTokens := 1024;
OpenAI.ChatCompletions.Seed := 42;
OpenAI.ChatCompletions.ParallelToolCalls := True;
OpenAI.ChatCompletions.ResponseFormat := 'json_object';
// Ajouter un message utilisateur et créer la 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
La Batch API te permet d'envoyer de grands groupes de requêtes API pour un traitement asynchrone. C'est idéal pour
les charges de travail qui ne nécessitent pas de réponses immédiates, comme la classification en masse, la génération d'embeddings ou
la modération de contenu à grande échelle. Les requêtes batch sont généralement terminées en moins de 24 heures et offrent une réduction de coût de 50 %
par rapport aux appels API synchrones. Toutes les méthodes batch sont disponibles sur le
composant TsgcHTTP_API_OpenAI via
l'endpoint /batches.
Methods
| Method | Description | Endpoint |
|---|---|---|
CreateBatch |
Crée une nouvelle tâche batch à partir d'un fichier JSONL précédemment téléversé contenant des requêtes API. Nécessite l'ID du fichier d'entrée et l'endpoint cible. | POST /batches |
RetrieveBatch |
Récupère le statut actuel et les détails d'une tâche batch, dont les compteurs de progression et les références de fichiers de sortie. | GET /batches/{batch_id} |
ListBatches |
Liste toutes les tâches batch de l'organisation. Prend en charge la pagination via les paramètres after et limit. |
GET /batches |
CancelBatch |
Annule une tâche batch en cours. Les requêtes déjà terminées dans le batch ne sont pas affectées. | 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';
// Créer une tâche batch ciblant chat completions
vResponse := OpenAI._CreateBatch('file-abc123', '/v1/chat/completions');
ShowMessage(vResponse);
// Vérifier le statut du batch
vResponse := OpenAI._RetrieveBatch('batch_xyz789');
ShowMessage(vResponse);
// Lister tous les batches
vResponse := OpenAI._ListBatches;
ShowMessage(vResponse);
// Annuler un batch si nécessaire
OpenAI._CancelBatch('batch_xyz789');
Finally
OpenAI.Free;
end;
end;
Note : le fichier d'entrée pour CreateBatch doit être un fichier JSONL
téléversé via la Files API avec le purpose batch. Chaque ligne
du fichier représente une seule requête API avec un ID personnalisé, une méthode, une URL et un corps.
6. Uploads API
La Uploads API permet de téléverser des fichiers volumineux en plusieurs parties, ce qui est essentiel pour travailler avec des fichiers qui
dépassent la limite d'un téléversement en une seule requête (typiquement 512 Mo). Le workflow consiste à créer une session de téléversement,
à ajouter les parties séquentiellement, puis à compléter le téléversement pour recevoir un objet
File utilisable avec
les autres endpoints de l'API. Toutes les méthodes sont disponibles sur le
composant TsgcHTTP_API_OpenAI via
l'endpoint /uploads.
Methods
| Method | Description | Endpoint |
|---|---|---|
CreateUpload |
Initie une nouvelle session de téléversement multipartite. Nécessite le nom de fichier, le purpose, le nombre total d'octets et le type MIME. Renvoie un objet upload avec un ID unique. | POST /uploads |
AddUploadPart |
Ajoute un fragment de données de fichier à un téléversement en cours. Les parties doivent être ajoutées séquentiellement et chaque partie renvoie un ID de partie nécessaire à la finalisation. | POST /uploads/{upload_id}/parts |
CompleteUpload |
Complète le téléversement multipartite en fournissant la liste ordonnée d'IDs de parties. Renvoie l'objet final File utilisable avec les autres API. |
POST /uploads/{upload_id}/complete |
CancelUpload |
Annule une session de téléversement en cours. Toutes les parties téléversées sont rejetées et l'ID d'upload devient invalide. | 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';
// Étape 1 : créer une session de téléversement
vUploadResponse := OpenAI._CreateUpload(
'training_data.jsonl', 'fine-tune', 104857600, 'application/jsonl');
ShowMessage(vUploadResponse);
// Étape 2 : ajouter les parties du fichier
vPartResponse := OpenAI._AddUploadPart('upload_abc123', 'C:\data\part1.jsonl');
ShowMessage(vPartResponse);
vPartResponse := OpenAI._AddUploadPart('upload_abc123', 'C:\data\part2.jsonl');
ShowMessage(vPartResponse);
// Étape 3 : compléter le téléversement
vCompleteResponse := OpenAI._CompleteUpload('upload_abc123',
'["part_def456", "part_ghi789"]');
ShowMessage(vCompleteResponse);
Finally
OpenAI.Free;
end;
end;
Note : les sessions de téléversement expirent après une heure d'inactivité. Chaque partie doit faire au moins 5 Mo (sauf la
dernière partie), et les parties doivent être ajoutées dans l'ordre dans lequel elles seront concaténées. La taille totale maximale du téléversement est de 8 Go.
