sgcWebSockets 2026.4.0 では OpenAI API 統合が大幅に拡張され、新しい Responses API(非推奨となった Assistants API の公式後継)、Audio Speech テキスト読み上げ、Fine-Tuning Jobs 管理、非同期バルク処理用の Batch API、大容量ファイル処理用の Uploads API、ツール呼び出しと構造化出力をサポートした最新の Chat Completions が完全にサポートされました。この記事では、すべての新しいメソッド、パラメーター、および実用的な Delphi コード例を説明します。
目次
- Responses API(Assistants の後継)
- Audio Speech(テキスト読み上げ)
- Fine-Tuning Jobs
- Chat Completions の更新
- Batch API
- Uploads API
1. Responses API(Assistants の後継)
Responses API はこのリリースで最も重要な追加機能です。非推奨の Assistants API を /responses エンドポイントを通じて公開されたシンプルなステートレスインターフェースに置き換えます。
すべてのメソッドは TsgcHTTP_API_OpenAI コンポーネントで利用できます。
Assistants とは異なり、Responses API の各呼び出しはツール定義・ファイル検索・Web 検索・構造化出力をすべて 1 回のリクエストに含められる単一ラウンドトリップです。
メソッド
| メソッド | 説明 | エンドポイント |
|---|---|---|
CreateResponse |
新しいモデルレスポンスを作成します。モデル識別子と入力テキスト(または構造化入力配列)を受け取ります。ツール呼び出しを含むモデルの生成出力を返します。 | POST /responses |
RetrieveResponse |
一意の ID で以前作成したレスポンスを取得します。完了したレスポンスのポーリングや監査に役立ちます。 | GET /responses/{response_id} |
DeleteResponse |
保存されたレスポンスを完全に削除します。作成時に store: true を使用した場合のみ適用されます。 |
DELETE /responses/{response_id} |
CancelResponse |
進行中のレスポンスをキャンセルします。バックグラウンドモードで作成されたレスポンスに適用されます。 | POST /responses/{response_id}/cancel |
ListInputItems |
レスポンスに関連する入力項目を一覧表示します。モデルに送信された会話コンテキストの確認に役立ちます。 | GET /responses/{response_id}/input_items |
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(テキスト読み上げ)
Audio Speech API は OpenAI の TTS モデルを使用してテキスト読み上げ機能を提供します。低遅延ストリーミングのユースケース向け tts-1 と高品質出力向け tts-1-hd の 2 つのモデルティアをサポートします。
6 つの組み込みボイスが利用できます:alloy、echo、fable、onyx、nova、shimmer。
出力は mp3・opus・aac・flac・wav・pcm 形式で返せます。
メソッド
| メソッド | 説明 | エンドポイント |
|---|---|---|
CreateSpeech |
指定したモデルとボイスを使用して、提供されたテキスト入力から音声を生成します。音声コンテンツをバイナリストリームとして返します。 | POST /audio/speech |
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;
注意:tts-1 モデルはリアルタイムの低遅延アプリケーション向けに最適化されており、tts-1-hd はわずかに遅延が増加する代わりに高い音声品質を提供します。アプリケーションの要件に応じて選択してください。
3. Fine-Tuning Jobs
Fine-Tuning Jobs API は非推奨の /fine-tunes エンドポイントを新しい /fine_tuning/jobs エンドポイントに置き換えます。
ファインチューニング操作の完全なライフサイクル管理(ジョブの作成・アクティブおよび完了ジョブの一覧表示・詳細取得・進行中ジョブのキャンセル・トレーニングイベントのストリーミング)を提供します。この API は自身のトレーニングデータを使用した gpt-4o-mini-2024-07-18 などのモデルのファインチューニングをサポートします。
メソッド
| メソッド | 説明 | エンドポイント |
|---|---|---|
CreateFineTuningJob |
指定したベースモデルと以前アップロードしたトレーニングファイルを使用して新しいファインチューニングジョブを作成します。ID とステータスを含むジョブオブジェクトを返します。 | POST /fine_tuning/jobs |
ListFineTuningJobs |
組織のすべてのファインチューニングジョブを一覧表示します。ページネーションをサポートし、作成日順でジョブを返します。 | GET /fine_tuning/jobs |
RetrieveFineTuningJob |
ステータス・ハイパーパラメーター・結果ファイルを含む特定のファインチューニングジョブの詳細情報を取得します。 | GET /fine_tuning/jobs/{job_id} |
CancelFineTuningJob |
進行中のファインチューニングジョブをキャンセルします。ジョブのステータスが「cancelled」に変更され、それ以上のトレーニングは行われません。 | POST /fine_tuning/jobs/{job_id}/cancel |
ListFineTuningJobEvents |
トレーニング損失・検証メトリクス・完了ステータスを含むファインチューニングジョブのステータスイベントを一覧表示します。ページネーションをサポートします。 | GET /fine_tuning/jobs/{job_id}/events |
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. Chat Completions の更新
sgcWebSockets 2026.4.0 の Chat Completions API は、いくつかの新しいリクエストプロパティとレスポンスフィールドで最新化されました。これらの追加により、ツール/関数呼び出し・構造化 JSON 出力・シードによる決定論的生成・並列ツール実行が完全にサポートされます。
新しいリクエストプロパティ
| プロパティ | 説明 | エンドポイント |
|---|---|---|
Tools |
モデルが呼び出せるツール(関数)のリストを定義します。各ツールには名前・説明・パラメーターの JSON Schema が含まれます。 | POST /chat/completions |
ToolChoice |
モデルがツールを選択する方法を制御します。オプション:auto・none・required、または特定の関数名。 |
POST /chat/completions |
ResponseFormat |
出力形式を指定します。確実な JSON 出力には json_object、指定スキーマに準拠した構造化出力には json_schema を使用します。 |
POST /chat/completions |
Seed |
決定論的サンプリング用の整数シード。同じシードとパラメーターを使用した場合、モデルは同じ出力の生成を試みます。 | POST /chat/completions |
MaxCompletionTokens |
レスポンスでモデルが生成できるトークン数の上限を設定します。古い max_tokens パラメーターに代わるものです。 |
POST /chat/completions |
ParallelToolCalls |
有効にすると、モデルは 1 回のレスポンスで複数のツール呼び出しを発行し、クライアント側での並列実行が可能になります。 | POST /chat/completions |
StreamOptions |
ストリーミングレスポンスの設定。最終ストリームチャンクでトークン使用統計を受け取る include_usage などのオプションが含まれます。 |
POST /chat/completions |
新しいレスポンスフィールド
| フィールド | 説明 | エンドポイント |
|---|---|---|
ToolCalls |
アシスタントメッセージ内のツール呼び出しオブジェクトの配列。各オブジェクトには ID・関数名・クライアント側実行用の引数が含まれます。 | POST /chat/completions |
Refusal |
安全性またはコンテンツポリシーの制約によりリクエストの履行を拒否した場合のモデルの拒否メッセージを含みます。 | POST /chat/completions |
SystemFingerprint |
レスポンス生成に使用されたバックエンド設定を表すフィンガープリント。Seed 使用時の決定論的出力の検証に役立ちます。 |
POST /chat/completions |
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
Batch API を使用すると、大量の API リクエストを非同期処理のために送信できます。これは、バルク分類・埋め込み生成・大規模コンテンツモデレーションなど、即時レスポンスを必要としないワークロードに最適です。バッチリクエストは通常 24 時間以内に完了し、同期 API 呼び出しと比較して 50% のコスト削減を提供します。すべてのバッチメソッドは /batches エンドポイントを通じて TsgcHTTP_API_OpenAI コンポーネントで利用できます。
メソッド
| メソッド | 説明 | エンドポイント |
|---|---|---|
CreateBatch |
API リクエストを含む以前アップロードした JSONL ファイルから新しいバッチジョブを作成します。入力ファイル ID とターゲットエンドポイントが必要です。 | POST /batches |
RetrieveBatch |
進捗カウントと出力ファイル参照を含むバッチジョブの現在のステータスと詳細を取得します。 | GET /batches/{batch_id} |
ListBatches |
組織のすべてのバッチジョブを一覧表示します。after と limit パラメーターによるページネーションをサポートします。 |
GET /batches |
CancelBatch |
進行中のバッチジョブをキャンセルします。バッチ内ですでに完了したリクエストには影響しません。 | POST /batches/{batch_id}/cancel |
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;
注意:CreateBatch の入力ファイルは、目的が batch の Files API 経由でアップロードされた JSONL ファイルである必要があります。ファイルの各行は、カスタム ID・メソッド・URL・ボディを持つ単一の API リクエストを表します。
6. Uploads API
Uploads API を使用すると、単一リクエストのアップロード制限(通常 512 MB)を超えるファイルを扱う際に不可欠な、複数パーツへの大容量ファイルのアップロードが可能です。ワークフローは、アップロードセッションの作成・パーツの順次追加・アップロードの完了(他の API エンドポイントで使用できる File オブジェクトを受け取る)で構成されます。すべてのメソッドは /uploads エンドポイントを通じて TsgcHTTP_API_OpenAI コンポーネントで利用できます。
メソッド
| メソッド | 説明 | エンドポイント |
|---|---|---|
CreateUpload |
新しいマルチパートアップロードセッションを開始します。ファイル名・目的・総バイト数・MIME タイプが必要です。一意の ID を持つアップロードオブジェクトを返します。 | POST /uploads |
AddUploadPart |
進行中のアップロードにファイルデータのチャンクを追加します。パーツは順次追加する必要があり、各パーツは完了に必要なパーツ ID を返します。 | POST /uploads/{upload_id}/parts |
CompleteUpload |
パーツ ID の順序付きリストを指定してマルチパートアップロードを完了します。他の API で使用できる最終的な File オブジェクトを返します。 |
POST /uploads/{upload_id}/complete |
CancelUpload |
進行中のアップロードセッションをキャンセルします。アップロード済みのパーツは破棄され、アップロード ID は無効になります。 | POST /uploads/{upload_id}/cancel |
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;
注意:アップロードセッションは 1 時間の非アクティブ後に期限切れになります。各パーツは 5 MB 以上(最後のパーツを除く)で、パーツは連結される順序で追加する必要があります。最大総アップロードサイズは 8 GB です。
