O sgcWebSockets 2026.4.0 introduz uma expansão significativa da integração com a API OpenAI, trazendo suporte completo para a nova Responses API (substituta oficial da deprecated Assistants API), Audio Speech texto-para-fala, gerenciamento de Fine-Tuning Jobs, a Batch API para processamento assíncrono em massa, a Uploads API para manipulação de arquivos grandes e Chat Completions modernizado com chamada de ferramentas e suporte a saída estruturada. Este artigo cobre todos os novos métodos, seus parâmetros e exemplos práticos em Delphi.
Sumário
- Responses API (substitui o Assistants)
- Audio Speech (texto-para-fala)
- Fine-Tuning Jobs
- Atualizações do Chat Completions
- Batch API
- Uploads API
1. Responses API (substitui o Assistants)
A Responses API é a adição mais significativa desta versão. Ela substitui a deprecated Assistants API por uma interface simplificada e sem estado exposta pelo endpoint /responses.
Todos os métodos estão disponíveis no componente TsgcHTTP_API_OpenAI.
Diferentemente do Assistants, cada chamada à Responses API é uma única ida e volta que pode incluir definições de ferramentas, pesquisa de arquivos, pesquisa na web e saída estruturada — tudo em uma única requisição.
Métodos
| Método | Descrição | Endpoint |
|---|---|---|
CreateResponse |
Cria uma nova resposta do modelo. Aceita um identificador de modelo e texto de entrada (ou array de entrada estruturado). Retorna a saída gerada pelo modelo, incluindo quaisquer chamadas de ferramentas. | POST /responses |
RetrieveResponse |
Recupera uma resposta criada anteriormente pelo seu ID único. Útil para polling ou auditoria de respostas concluídas. | GET /responses/{response_id} |
DeleteResponse |
Exclui permanentemente uma resposta armazenada. Aplicável somente quando store: true foi usado durante a criação. |
DELETE /responses/{response_id} |
CancelResponse |
Cancela uma resposta em andamento. Aplicável a respostas criadas em modo background. | POST /responses/{response_id}/cancel |
ListInputItems |
Lista os itens de entrada associados a uma resposta. Útil para inspecionar o contexto de conversa enviado ao modelo. | GET /responses/{response_id}/input_items |
Delphi Example
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 (texto-para-fala)
A Audio Speech API fornece capacidades de texto-para-fala usando os modelos TTS da OpenAI. Suporta dois níveis de modelo:
tts-1 para casos de uso de streaming com baixa latência e
tts-1-hd para saída de maior qualidade.
Seis vozes integradas estão disponíveis: alloy, echo, fable,
onyx, nova e shimmer.
A saída pode ser retornada nos formatos mp3, opus, aac, flac, wav ou pcm.
Métodos
| Método | Descrição | Endpoint |
|---|---|---|
CreateSpeech |
Gera áudio de fala a partir do texto de entrada fornecido usando o modelo e a voz especificados. Retorna o conteúdo de áudio como um stream binário. | 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';
// Generate speech usando o '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: O modelo tts-1 é otimizado para
aplicações em tempo real com baixa latência, enquanto tts-1-hd
oferece maior fidelidade de áudio ao custo de uma latência ligeiramente maior. Escolha de acordo com os requisitos da sua aplicação.
3. Fine-Tuning Jobs
A Fine-Tuning Jobs API substitui o endpoint deprecated /fine-tunes
pelo novo endpoint /fine_tuning/jobs.
Ela fornece gerenciamento completo do ciclo de vida de operações de fine-tuning: criação de jobs, listagem de jobs ativos e concluídos,
recuperação de detalhes, cancelamento de jobs em andamento e streaming de eventos de treinamento. Esta API suporta fine-tuning
de modelos como gpt-4o-mini-2024-07-18 usando seus próprios dados de treinamento.
Métodos
| Método | Descrição | Endpoint |
|---|---|---|
CreateFineTuningJob |
Cria um novo job de fine-tuning usando um modelo base especificado e um arquivo de treinamento previamente enviado. Retorna o objeto job com seu ID e status. | POST /fine_tuning/jobs |
ListFineTuningJobs |
Lista todos os jobs de fine-tuning da organização, com suporte a paginação. Retorna os jobs ordenados por data de criação. | GET /fine_tuning/jobs |
RetrieveFineTuningJob |
Recupera informações detalhadas sobre um job de fine-tuning específico, incluindo status, hiperparâmetros e arquivos de resultado. | GET /fine_tuning/jobs/{job_id} |
CancelFineTuningJob |
Cancela um job de fine-tuning em andamento. O status do job muda para "cancelled" e nenhum treinamento adicional ocorre. | POST /fine_tuning/jobs/{job_id}/cancel |
ListFineTuningJobEvents |
Lista eventos de status de um job de fine-tuning, incluindo perda de treinamento, métricas de validação e status de conclusão. Suporta paginação. | 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';
// 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. Atualizações do Chat Completions
A Chat Completions API no sgcWebSockets 2026.4.0 foi modernizada com várias novas propriedades de requisição e campos de resposta. Estas adições trazem suporte completo para chamada de ferramentas/funções, saída JSON estruturada, geração determinística via seeds e execução paralela de ferramentas.
Novas propriedades de requisição
| Propriedade | Descrição | Endpoint |
|---|---|---|
Tools |
Define uma lista de ferramentas (funções) que o modelo pode chamar. Cada ferramenta inclui um nome, descrição e JSON Schema para seus parâmetros. | POST /chat/completions |
ToolChoice |
Controla como o modelo seleciona ferramentas. Opções: auto, none, required ou um nome de função específico. |
POST /chat/completions |
ResponseFormat |
Especifica o formato de saída. Use json_object para saída JSON garantida ou json_schema para saída estruturada em conformidade com um esquema fornecido. |
POST /chat/completions |
Seed |
Um seed inteiro para amostragem determinística. Quando o mesmo seed e parâmetros são usados, o modelo tenta produzir a mesma saída. | POST /chat/completions |
MaxCompletionTokens |
Define um limite superior para o número de tokens que o modelo pode gerar na resposta. Substitui o parâmetro mais antigo max_tokens. |
POST /chat/completions |
ParallelToolCalls |
Quando habilitado, o modelo pode emitir múltiplas chamadas de ferramentas em uma única resposta, permitindo execução paralela no lado do cliente. | POST /chat/completions |
StreamOptions |
Configuração para respostas em streaming. Inclui opções como include_usage para receber estatísticas de uso de tokens no último chunk transmitido. |
POST /chat/completions |
Novos campos de resposta
| Campo | Descrição | Endpoint |
|---|---|---|
ToolCalls |
Array de objetos de chamada de ferramenta na mensagem do assistente. Cada um contém um ID, nome de função e argumentos para execução no lado do cliente. | POST /chat/completions |
Refusal |
Contém a mensagem de recusa do modelo quando ele se nega a atender a uma requisição devido a restrições de segurança ou políticas de conteúdo. | POST /chat/completions |
SystemFingerprint |
Uma impressão digital representando a configuração de backend usada para gerar a resposta. Útil para verificar saída determinística ao usar 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';
// 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
A Batch API permite enviar grandes grupos de requisições de API para processamento assíncrono. É ideal para
cargas de trabalho que não exigem respostas imediatas, como classificação em massa, geração de embeddings ou
moderação de conteúdo em grande escala. As requisições em batch geralmente são concluídas em até 24 horas e oferecem uma redução de 50% nos custos
em comparação com chamadas de API síncronas. Todos os métodos de batch estão disponíveis no
componente TsgcHTTP_API_OpenAI pelo endpoint
/batches.
Métodos
| Método | Descrição | Endpoint |
|---|---|---|
CreateBatch |
Cria um novo job em batch a partir de um arquivo JSONL previamente enviado contendo requisições de API. Requer o ID do arquivo de entrada e o endpoint de destino. | POST /batches |
RetrieveBatch |
Recupera o status atual e detalhes de um job em batch, incluindo contagens de progresso e referências a arquivos de saída. | GET /batches/{batch_id} |
ListBatches |
Lista todos os jobs em batch da organização. Suporta paginação pelos parâmetros after e limit. |
GET /batches |
CancelBatch |
Cancela um job em batch em andamento. As requisições já concluídas dentro do batch não são afetadas. | 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';
// 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: O arquivo de entrada para CreateBatch deve ser um arquivo JSONL
enviado pela Files API com a finalidade batch. Cada linha
no arquivo representa uma única requisição de API com um ID personalizado, método, URL e corpo.
6. Uploads API
A Uploads API permite enviar arquivos grandes em múltiplas partes, o que é essencial ao trabalhar com arquivos que
excedem o limite de envio de uma única requisição (normalmente 512 MB). O fluxo de trabalho envolve criar uma sessão de upload,
adicionar partes sequencialmente e então concluir o upload para receber um
objeto File que pode ser usado com
outros endpoints da API. Todos os métodos estão disponíveis no
componente TsgcHTTP_API_OpenAI pelo endpoint
/uploads.
Métodos
| Método | Descrição | Endpoint |
|---|---|---|
CreateUpload |
Inicia uma nova sessão de upload multipart. Requer o nome do arquivo, finalidade, contagem total de bytes e tipo MIME. Retorna um objeto de upload com um ID único. | POST /uploads |
AddUploadPart |
Adiciona um fragmento de dados de arquivo a um upload em andamento. As partes devem ser adicionadas sequencialmente e cada parte retorna um ID de parte necessário para a conclusão. | POST /uploads/{upload_id}/parts |
CompleteUpload |
Conclui o upload multipart fornecendo a lista ordenada de IDs de partes. Retorna o objeto File final que pode ser usado com outras APIs. |
POST /uploads/{upload_id}/complete |
CancelUpload |
Cancela uma sessão de upload em andamento. Quaisquer partes enviadas são descartadas e o ID de upload se torna inválido. | 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';
// 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: As sessões de upload expiram após uma hora de inatividade. Cada parte deve ter pelo menos 5 MB (exceto a
última parte), e as partes devem ser adicionadas na ordem em que devem ser concatenadas. O tamanho máximo total do upload é 8 GB.
