sgcWebSockets 2026.4.0 introduce una expansión importante de la integración con la API de OpenAI, ofreciendo soporte completo para la nueva Responses API (el reemplazo oficial de la Assistants API obsoleta), Audio Speech text-to-speech, gestión de Fine-Tuning Jobs, la Batch API para procesamiento masivo asíncrono, la Uploads API para gestionar archivos grandes, y unas Chat Completions modernizadas con soporte para tool calling y structured output. Este artículo cubre cada nuevo método, sus parámetros y ejemplos prácticos de código Delphi.
Tabla de contenidos
- Responses API (reemplaza a Assistants)
- Audio Speech (text-to-speech)
- Fine-Tuning Jobs
- Novedades de Chat Completions
- Batch API
- Uploads API
1. Responses API (reemplaza a Assistants)
La Responses API es la incorporación más importante de esta versión. Sustituye a la Assistants API obsoleta por una
interfaz simplificada y sin estado expuesta a través del endpoint /responses.
Todos los métodos están disponibles en el componente TsgcHTTP_API_OpenAI.
A diferencia de Assistants, cada llamada a la Responses API es un único round-trip que puede incluir definiciones de tools, file search,
web search y structured output, todo en una sola petición.
Métodos
| Método | Descripción | Endpoint |
|---|---|---|
CreateResponse |
Crea una nueva respuesta del modelo. Acepta un identificador de modelo y texto de entrada (o un array de entrada estructurada). Devuelve la salida generada por el modelo, incluidas las posibles tool calls. | POST /responses |
RetrieveResponse |
Recupera una respuesta creada previamente a partir de su ID único. Útil para hacer polling o auditar respuestas completadas. | GET /responses/{response_id} |
DeleteResponse |
Elimina permanentemente una respuesta almacenada. Solo aplicable cuando se usó store: true al crearla. |
DELETE /responses/{response_id} |
CancelResponse |
Cancela una respuesta en curso. Aplicable a respuestas creadas en modo background. | POST /responses/{response_id}/cancel |
ListInputItems |
Lista los input items asociados a una respuesta. Útil para inspeccionar el contexto de la conversación que se envió al modelo. | GET /responses/{response_id}/input_items |
Ejemplo en Delphi
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)
La Audio Speech API ofrece capacidades de text-to-speech usando los modelos TTS de OpenAI. Admite dos niveles de modelo:
tts-1 para casos de uso de streaming de baja latencia y
tts-1-hd para una salida de mayor calidad.
Hay seis voces integradas disponibles: alloy, echo, fable,
onyx, nova y shimmer.
La salida se puede devolver en formato mp3, opus, aac, flac, wav o pcm.
Métodos
| Método | Descripción | Endpoint |
|---|---|---|
CreateSpeech |
Genera audio de voz a partir del texto de entrada utilizando el modelo y la voz especificados. Devuelve el contenido de audio como un stream binario. | POST /audio/speech |
Ejemplo en Delphi
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;
Nota: el modelo tts-1 está optimizado para
aplicaciones en tiempo real y de baja latencia, mientras que tts-1-hd
ofrece mayor fidelidad de audio a costa de un leve aumento de latencia. Elige en función de los requisitos de tu aplicación.
3. Fine-Tuning Jobs
La Fine-Tuning Jobs API sustituye el endpoint obsoleto /fine-tunes
por el nuevo endpoint /fine_tuning/jobs.
Ofrece una gestión completa del ciclo de vida de las operaciones de fine-tuning: crear trabajos, listar trabajos activos y completados,
recuperar detalles, cancelar trabajos en curso y recibir eventos de entrenamiento en streaming. Esta API admite fine-tuning
de modelos como gpt-4o-mini-2024-07-18 usando tus propios datos de entrenamiento.
Métodos
| Método | Descripción | Endpoint |
|---|---|---|
CreateFineTuningJob |
Crea un nuevo trabajo de fine-tuning usando el modelo base especificado y un archivo de entrenamiento subido previamente. Devuelve el objeto job con su ID y estado. | POST /fine_tuning/jobs |
ListFineTuningJobs |
Lista todos los trabajos de fine-tuning de la organización, con soporte de paginación. Devuelve los trabajos ordenados por fecha de creación. | GET /fine_tuning/jobs |
RetrieveFineTuningJob |
Recupera información detallada sobre un trabajo de fine-tuning concreto, incluyendo estado, hiperparámetros y archivos de resultados. | GET /fine_tuning/jobs/{job_id} |
CancelFineTuningJob |
Cancela un trabajo de fine-tuning en curso. El estado del trabajo cambia a "cancelled" y no se realiza más entrenamiento. | POST /fine_tuning/jobs/{job_id}/cancel |
ListFineTuningJobEvents |
Lista los eventos de estado de un trabajo de fine-tuning, incluyendo training loss, métricas de validación y estado de finalización. Admite paginación. | GET /fine_tuning/jobs/{job_id}/events |
Ejemplo en Delphi
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. Novedades de Chat Completions
La API de Chat Completions en sgcWebSockets 2026.4.0 se ha modernizado con varias nuevas propiedades de petición y campos de respuesta. Estas incorporaciones aportan soporte completo para tool/function calling, salida JSON estructurada, generación determinista mediante seeds y ejecución de tools en paralelo.
Nuevas propiedades de la petición
| Propiedad | Descripción | Endpoint |
|---|---|---|
Tools |
Define una lista de tools (funciones) que el modelo puede invocar. Cada tool incluye un nombre, una descripción y el JSON Schema de sus parámetros. | POST /chat/completions |
ToolChoice |
Controla cómo selecciona el modelo las tools. Opciones: auto, none, required o el nombre de una función concreta. |
POST /chat/completions |
ResponseFormat |
Especifica el formato de salida. Usa json_object para garantizar una salida JSON o json_schema para una salida estructurada conforme a un schema proporcionado. |
POST /chat/completions |
Seed |
Semilla entera para un muestreo determinista. Cuando se usan la misma semilla y los mismos parámetros, el modelo intenta producir la misma salida. | POST /chat/completions |
MaxCompletionTokens |
Establece un límite superior al número de tokens que el modelo puede generar en la respuesta. Sustituye al antiguo parámetro max_tokens. |
POST /chat/completions |
ParallelToolCalls |
Cuando está activado, el modelo puede emitir varias tool calls en una sola respuesta, permitiendo ejecución en paralelo en el lado del cliente. | POST /chat/completions |
StreamOptions |
Configuración para respuestas en streaming. Incluye opciones como include_usage para recibir estadísticas de uso de tokens en el último chunk del stream. |
POST /chat/completions |
Nuevos campos de la respuesta
| Campo | Descripción | Endpoint |
|---|---|---|
ToolCalls |
Array de objetos tool call en el mensaje del assistant. Cada uno contiene un ID, el nombre de la función y los argumentos para ejecutarla en el cliente. | POST /chat/completions |
Refusal |
Contiene el mensaje de rechazo del modelo cuando declina cumplir una petición por motivos de seguridad o de política de contenido. | POST /chat/completions |
SystemFingerprint |
Una huella digital que representa la configuración del backend usada para generar la respuesta. Útil para verificar la salida determinista al usar Seed. |
POST /chat/completions |
Ejemplo en Delphi
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
La Batch API te permite enviar grandes grupos de peticiones a la API para procesamiento asíncrono. Es ideal para
cargas de trabajo que no requieren respuestas inmediatas, como clasificación masiva, generación de embeddings o
moderación de contenido a gran escala. Las peticiones batch suelen completarse en 24 horas y ofrecen un 50 % de reducción
de coste frente a las llamadas síncronas a la API. Todos los métodos batch están disponibles en el
componente TsgcHTTP_API_OpenAI a través del
endpoint /batches.
Métodos
| Método | Descripción | Endpoint |
|---|---|---|
CreateBatch |
Crea un nuevo trabajo batch a partir de un archivo JSONL subido previamente que contiene peticiones a la API. Requiere el ID del archivo de entrada y el endpoint destino. | POST /batches |
RetrieveBatch |
Recupera el estado actual y los detalles de un trabajo batch, incluyendo recuentos de progreso y referencias a los archivos de salida. | GET /batches/{batch_id} |
ListBatches |
Lista todos los trabajos batch de la organización. Admite paginación mediante los parámetros after y limit. |
GET /batches |
CancelBatch |
Cancela un trabajo batch en curso. Las peticiones del batch que ya se hayan completado no se ven afectadas. | POST /batches/{batch_id}/cancel |
Ejemplo en Delphi
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;
Nota: el archivo de entrada para CreateBatch debe ser un archivo JSONL
subido a través de la Files API con propósito batch. Cada línea
del archivo representa una petición individual a la API con un ID personalizado, método, URL y body.
6. Uploads API
La Uploads API permite subir archivos grandes en varias partes, lo que es imprescindible cuando trabajas con archivos que
superan el límite de subida en una sola petición (normalmente 512 MB). El flujo consiste en crear una sesión de subida,
añadir partes de forma secuencial y, después, completar la subida para recibir un
objeto File que puede usarse con
otros endpoints de la API. Todos los métodos están disponibles en el
componente TsgcHTTP_API_OpenAI a través del
endpoint /uploads.
Métodos
| Método | Descripción | Endpoint |
|---|---|---|
CreateUpload |
Inicia una nueva sesión de subida multipart. Requiere el nombre de archivo, el propósito, el número total de bytes y el tipo MIME. Devuelve un objeto upload con un ID único. | POST /uploads |
AddUploadPart |
Añade un trozo de datos a una subida en curso. Las partes deben añadirse de forma secuencial y cada parte devuelve un part ID necesario para la finalización. | POST /uploads/{upload_id}/parts |
CompleteUpload |
Completa la subida multipart proporcionando la lista ordenada de part IDs. Devuelve el objeto File final, que se puede usar con otras APIs. |
POST /uploads/{upload_id}/complete |
CancelUpload |
Cancela una sesión de subida en curso. Las partes ya subidas se descartan y el upload ID queda invalidado. | POST /uploads/{upload_id}/cancel |
Ejemplo en Delphi
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;
Nota: las sesiones de subida expiran tras una hora de inactividad. Cada parte debería tener al menos 5 MB (excepto la
última), y las partes deben añadirse en el orden en el que se deban concatenar. El tamaño total máximo de subida es de 8 GB.
