OpenAI Delphi クライアントの更新

· 機能

sgcWebSockets 2026.4.0 では OpenAI API 統合が大幅に拡張され、新しい Responses API(非推奨となった Assistants API の公式後継)、Audio Speech テキスト読み上げ、Fine-Tuning Jobs 管理、非同期バルク処理用の Batch API、大容量ファイル処理用の Uploads API、ツール呼び出しと構造化出力をサポートした最新の Chat Completions が完全にサポートされました。この記事では、すべての新しいメソッド、パラメーター、および実用的な Delphi コード例を説明します。

目次

  1. Responses API(Assistants の後継)
  2. Audio Speech(テキスト読み上げ)
  3. Fine-Tuning Jobs
  4. Chat Completions の更新
  5. Batch API
  6. Uploads API
注意:OpenAI Assistants API は非推奨となり、2026-08-26 に廃止予定です。 新しい Responses API が公式の後継です。現在 sgcWebSockets を通じて Assistants API を使用している場合は、この記事で説明する Responses API へのコードの移行を開始してください。Responses API は、組み込みのツール使用・ファイル検索・Web 検索機能を備えたよりシンプルで柔軟なインターフェースを提供します。

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 つの組み込みボイスが利用できます:alloyechofableonyxnovashimmer。 出力は 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 モデルがツールを選択する方法を制御します。オプション:autononerequired、または特定の関数名。 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 組織のすべてのバッチジョブを一覧表示します。afterlimit パラメーターによるページネーションをサポートします。 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 です。