Delphi OpenAI クライアント — ChatGPT、GPT-4、Embeddings、Whisper

OpenAI REST と Realtime API 向けのネイティブ Delphi クライアント。トークンストリーミング、関数呼び出し、構造化出力付きのチャット補完、embeddings、Whisper speech-to-text、TTS、DALL-E 画像生成、ファイル検索付き Assistants v2、WebSocket 上の GPT-4o Realtime オーディオ API — すべて単一の Pascal コンポーネントから。

完全な OpenAI 面を 1 つのコンポーネントに

Delphi から ChatGPT API を呼ぶには、以前は HTTP リクエスト、JSON シリアライザー、マルチパートアップローダー、SSE ストリームパーサーを手書きする必要がありました。代わりに 1 つのコンポーネントをドロップしてください。

Delphi OpenAI クライアントは、VCL / FMX アプリケーションと OpenAI プラットフォームの架け橋です: 自然言語推論の ChatGPT、セマンティック検索と RAG のための embeddings、文字起こしの Whisper、音声出力の TTS、画像生成の DALL-E、低レイテンシ音声エージェント向けの Realtime API。sgcWebSockets は TsgcHTTP_API_OpenAI を出荷します。これは、すべての公開エンドポイントを Pascal 慣用的なプロパティ、メソッド、イベントでラップする単一の非可視コンポーネントです。

コンポーネントはライブラリの他の部分と同じ HTTP/2 スタック上に構築されているため、Server-Sent Events 経由のトークンストリーミング、自動 JSON-schema マーシャリング付きの完全な関数呼び出し(現在は「tools」)、並列ツール呼び出し、構造化出力(JSON-schema 制約レスポンス)、Assistants v2 のスレッド/ラン/メッセージライフサイクル、ファイル検索のベクトルストア、双方向オーディオストリーミング付きの WebSocket 上 GPT-4o Realtime API が得られます。同じコンポーネントが Azure OpenAI、Anthropic、Groq、Together、Mistral、DeepSeek が公開する OpenAI 互換エンドポイント、ローカルの OpenAI 互換サーバー(Ollama、LM Studio、vLLM)と通信します。

コンポーネントクラス

TsgcHTTP_API_OpenAI

トランスポート

HTTP/2 + SSE ストリーミング + WebSocket(Realtime)

プラットフォーム

Windows、macOS、Linux、iOS、Android、.NET

互換バックエンド

OpenAI、Azure OpenAI、Ollama、DeepSeek、Groq、Together、Mistral、vLLM

すべての OpenAI エンドポイントをラップ

エンドポイントごとに 1 メソッド、強く型付けされたパラメーター、ストリーミングレスポンス用の非同期イベント。

チャット補完

ChatCompletions() は、完全なメッセージ配列サポート、system / user / assistant / tool ロール、vision(image_url コンテンツ)、推論モデル(o1、o3)、JSON-schema 構造化出力を備えます。

ストリーミング

StreamChatCompletions() はデルタトークンごとに OnChatCompletionStreamChunk を発火します — VCL グリッドや FMX テキストビューでのタイプライター UX を、SSE パースコードなしで実現。

関数呼び出し / ツール

JSON-schema パラメーター付きのツールリストを登録。モデルが呼び出すと、パース済み引数付きで OnChatCompletionToolCall を受信。結果を戻して再開してください。

Embeddings

Embeddings()text-embedding-3-small / -large を使用 — Pascal データに対するセマンティック検索、クラスタリング、RAG の基盤。

Whisper(STT)

AudioTranscription()AudioTranslation() — WAV/MP3/M4A をアップロードし、タイムスタンプと単語レベル信頼度付きの文字起こしまたは英訳を取得。

TTS

AudioSpeech() は MP3、Opus、AAC、FLAC で合成音声を返します — 音声を選び、結果をストリーム再生。

DALL-E

DALL-E 2 / 3 と gpt-image-1 を使った ImageGeneration()ImageEdit()ImageVariation()。URL または base64 エンコード PNG を返します。

Assistants v2

スレッド、ラン、メッセージ、ファイル、ベクトルストア、code interpreter — ポーリング不要のラン・ストリーミングイベント付き。

Realtime API

入出力オーディオバッファ、音声活動検出、関数呼び出し、GPT-4o レイテンシ付きの双方向 WebSocket — 自然に割り込める音声エージェントを構築。

関数ツール付きストリーミングチャット

トークンをストリームし、会話の途中で Delphi 関数を呼び出せる ChatGPT 呼び出し。

uses
  sgcHTTP_API_OpenAI, sgcHTTP_API_OpenAI_Types;

var
  OpenAI: TsgcHTTP_API_OpenAI;
  oChat:  TsgcHTTPOpenAIChatCompletionRequest;
  oTool:  TsgcHTTPOpenAITool;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  OpenAI.ApiKey := 'sk-...';
  OpenAI.OnChatCompletionStreamChunk := DoChunk;
  OpenAI.OnChatCompletionToolCall    := DoToolCall;

  oChat := TsgcHTTPOpenAIChatCompletionRequest.Create;
  try
    oChat.Model := 'gpt-4o';
    oChat.Messages.AddSystem('You are a Delphi assistant.');
    oChat.Messages.AddUser('What is the weather in Madrid?');

    oTool := oChat.Tools.AddFunction('get_weather',
      'Return current weather for a city.');
    oTool.Parameters
      .AddString('city', 'City name', True);

    OpenAI.StreamChatCompletions(oChat);
  finally
    oChat.Free;
  end;
end;

procedure TForm1.DoChunk(Sender: TObject;
  const aChunk: TsgcHTTPOpenAIChatCompletionStreamChunk);
begin
  Memo1.Text := Memo1.Text + aChunk.Content;
end;

procedure TForm1.DoToolCall(Sender: TObject;
  const aToolCall: TsgcHTTPOpenAIChatCompletionToolCall);
var
  vCity, vJSON: string;
begin
  if aToolCall.FunctionName = 'get_weather' then
  begin
    vCity := aToolCall.Arguments.S['city'];
    vJSON := MyWeatherLookup(vCity);  // your own Delphi code
    OpenAI.SubmitToolOutput(aToolCall.Id, vJSON);
  end;
end;

WebSocket 上の GPT-4o 音声エージェント

OpenAI Realtime API は、入力オーディオフレームのストリームを受け取り、出力オーディオフレームのストリームを送出する WebSocket エンドポイントです — 1 秒未満のレイテンシ、ネイティブの割り込み(ユーザーが話し始めるとモデルが話すのをやめる)、サーバー側の音声活動検出、REST API と同じツール呼び出し面を備えます。sgcWebSockets はこれを TsgcHTTP_API_OpenAI_Realtime でラップし、すべてのサーバーメッセージ(OnSessionUpdatedOnConversationItemCreatedOnInputAudioBufferSpeechStartedOnResponseAudioDelta など)に対する型付きイベントを提供するため、TBass、TMediaPlayer、任意のオーディオキューに直接プラグインできます。

同じコンポーネント、複数のバックエンド

Azure OpenAI

Endpoint を Azure リソース URL に、ApiKey をリソースキーに設定 — デプロイメント ID がモデル名を置き換えます。

Ollama / LM Studio

Endpointhttp://localhost:11434/v1 に向ける — 同じコンポーネントがローカル Llama、Mistral、Qwen、Phi モデルを駆動します。

DeepSeek、Groq、Together、Mistral

すべて OpenAI 互換エンドポイントを公開 — ベース URL と API キーだけが変わります。

vLLM、SGLang、llama.cpp server

OpenAI 互換 REST 付きのセルフホスト推論サーバー — ストリーミング SSE パスはバイト単位で同一。

深掘りリソース

OpenAI コンポーネントリファレンス

TsgcHTTP_API_OpenAI の完全なプロパティ/メソッド/イベントリファレンス。

AI / LLM ハブ

Anthropic Claude、Google Gemini、Mistral、Ollama、Pinecone、MCP、RAG。

ブログ: OpenAI Realtime API

ステップバイステップの音声エージェントウォークスルー。

ブログ: 関数呼び出し

モデルに Delphi コードを呼び出させるパターン。

ブログ: AI 駆動 Delphi アプリの構築

ChatGPT + embeddings を使ったエンド・ツー・エンドのアプリアーキテクチャ。

ブログ: Delphi での Assistants v2

スレッド、ラン、ファイル検索、code interpreter。

今日 Delphi アプリに AI 機能を出荷

トライアルをダウンロード — OpenAI デモにはチャット、ストリーミング、ツール、Whisper、TTS、DALL-E サンプルがコンパイル準備済みで同梱。