Delphi における OpenAI 対 Anthropic 対 Gemini:どの AI API を使うべきか?

· コンポーネント

手早い答え: sgcWebSockets は主要な LLM プロバイダーごとにネイティブコンポーネントを用意しています — TsgcHTTP_API_OpenAITsgcHTTP_API_AnthropicTsgcHTTP_API_Gemini に加えて、Grok、Mistral、DeepSeek、そしてローカル専用の TsgcHTTP_API_Ollama です。これらは「コンポーネントを置く、キーを設定する、メソッドを 1 つ呼ぶ」という同じパターンを共有しているため、以下の判断はリスクが低いものです。今日のユースケースに合うモデルを選び、後からわずか数行のコードでプロバイダーを切り替えられます。

Delphi または C++ Builder アプリケーションに AI を追加するなら、最初の疑問はたいてい「どのプロバイダーを使うか?」です。OpenAI、Anthropic、Google はいずれも HTTP API の背後に有能なチャットモデルを提供しています。Delphi からの統合作業は、どれを選んでもほぼ同じです。sgcWebSockets が各プロバイダーを同じ形のコンポーネントでラップしているからです。つまり本当の選択は、どれだけコードを書いたり書き直したりするかではなく、モデルの強みについてのものなのです。

ユースケース別の手短な答え

これを出発点として使い、ご自身のプロンプトに対して検証してください。

こうしたいなら…まずこれからコンポーネント
最も幅広いエコシステムと、組み込みの画像生成・文字起こし・埋め込みOpenAITsgcHTTP_API_OpenAI
丁寧な長文推論、大きなドキュメント、ツール利用Anthropic ClaudeTsgcHTTP_API_Anthropic
Google Cloud との緊密な統合とマルチモーダル入力Google GeminiTsgcHTTP_API_Gemini
完全にローカル、オフライン、API キー不要、データがマシンの外に出ないOllama(Llama、Mistral、…)TsgcHTTP_API_Ollama
低コストの代替手段や特定のオープンモデルDeepSeek、Mistral、GrokTsgcHTTP_API_DeepSeek · _Mistral · _Grok

Delphi での各プロバイダーの見え方

パターンは毎回同じです。コンポーネントを作成し、API キーを設定し、手早い結果を得るためのワンライナーヘルパーを呼び出すか、レスポンスをトークンごとにストリーミングするために OnHTTPAPISSE を割り当てます。

OpenAI

uses
  sgcHTTP_API_OpenAI;

var
  OpenAI: TsgcHTTP_API_OpenAI;
begin
  OpenAI := TsgcHTTP_API_OpenAI.Create(nil);
  OpenAI.OpenAIOptions.ApiKey := 'sk-...';

  Memo1.Lines.Text := OpenAI._CreateChatCompletion(
    'gpt-4o-mini', 'Hello, world.');
end;

Anthropic Claude

uses
  sgcHTTP_API_Anthropic;

var
  Anthropic: TsgcHTTP_API_Anthropic;
begin
  Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
  Anthropic.AnthropicOptions.ApiKey := 'sk-ant-...';

  Memo1.Lines.Text := Anthropic._CreateMessage(
    'claude-3-5-sonnet-latest',
    'What are the benefits of WebSockets?',
    4096);
end;

Google Gemini

uses
  sgcHTTP_API_Gemini;

var
  Gemini: TsgcHTTP_API_Gemini;
begin
  Gemini := TsgcHTTP_API_Gemini.Create(nil);
  Gemini.GeminiOptions.ApiKey := 'YOUR_API_KEY';

  Memo1.Lines.Text := Gemini._CreateContent(
    'gemini-2.0-flash',
    'Summarise RFC 6455',
    4096);
end;

3 つのプロバイダー、3 つのキー、1 つの考え方。ストリーミングも同じくらい統一されています — SSE ハンドラを割り当て、ストリーミング版を呼び出します(OpenAI では Stream := True を指定した _CreateChatCompletion、Anthropic では _CreateMessageStream、Gemini では _CreateContentStream):

procedure TForm1.HandleSSE(Sender: TObject;
  const aEvent, aData: string; var Cancel: Boolean);
begin
  Memo1.Lines.Add(aData);
end;

OpenAI:最も幅広いツールボックス

OpenAI は、チャット以上のものが欲しいときの安全なデフォルトです。同じ TsgcHTTP_API_OpenAI コンポーネントが、チャット補完、埋め込み(_CreateEmbeddings)、画像生成(_CreateImage)、モデレーション、Whisper による文字起こしをカバーするため、単一の依存関係でチャットボット、セマンティック検索機能、「この画像を説明する」ツールを動かせます。ロードマップが複数の AI 機能に触れるなら、ここから始めることで可動部品が少なくて済みます。OpenAI コンポーネントのページDelphi での OpenAI チュートリアルをご覧ください。

Anthropic Claude:推論と長いコンテキスト

Claude は、作業が読み込み中心のときに有力な選択肢です。長いドキュメントの要約、複数ステップの指示の遂行、ツールの確実な利用などです。TsgcHTTP_API_Anthropic コンポーネントは、メッセージ、ストリーミング、ビジョンとドキュメント入力、ツール利用を公開しており、claude-3-5-sonnet-latest のようなモデル名を使います。詳しい手順はAnthropic Claude の Delphi チュートリアルAnthropic コンポーネントのページにあります。

Google Gemini:マルチモーダルで Google ネイティブ

Gemini は、すでに Google Cloud の世界にいる場合や、マルチモーダル入力が必要な場合によく合います。TsgcHTTP_API_Gemini は、型付きリクエスト API(TsgcGeminiClass_Request_GenerateContent を使う CreateContent)と文字列のワンライナー(_CreateContent)の両方に加えて、ストリーミングを提供します。詳細はGemini コンポーネントのページGemini Delphi クライアントの記事にあります。

ローカルで実行する:Ollama とオープンモデル

データがマシンの外に出てはいけない場合や、単にトークン課金を避けたい場合、TsgcHTTP_API_Ollama は API キーなしでローカルの Ollama サーバーと通信します — OllamaOptions.BaseUrlhttp://localhost:11434/api に向けるだけで、Llama、Mistral などのオープンモデルを自分のハードウェア上で実行できます。クラウドコンポーネントと同じ _CreateMessage / _CreateMessageStream の形を保っています。特定のホスト型モデルを使いたいときのために、DeepSeekMistralGrok 専用のコンポーネントもあります。

機能比較

プロバイダーコンポーネントワンラインの呼び出しストリーミング(OnHTTPAPISSE)ローカル実行
OpenAITsgcHTTP_API_OpenAI_CreateChatCompletionはいいいえ
AnthropicTsgcHTTP_API_Anthropic_CreateMessageはいいいえ
GeminiTsgcHTTP_API_Gemini_CreateContentはいいいえ
OllamaTsgcHTTP_API_Ollama_CreateMessageはいはい
DeepSeekTsgcHTTP_API_DeepSeek_CreateMessageはいいいえ

1 つのパターン、多くのプロバイダー

すべてのコンポーネントが「コンポーネント+キー+メソッド」という同じ設計に従っているため、考えを変えるコストは小さくて済みます。キーを持っているいずれかのプロバイダーで試作し、その呼び出しを自前の関数の背後にラップしておけば、後で TsgcHTTP_API_OpenAITsgcHTTP_API_Anthropic に入れ替えるのは、書き直しではなく局所的な編集で済みます。多くのチームは 2 つのプロバイダーを配線したままにして、それらの間でフェイルオーバーすることさえあります。すべてはAI & LLM コンポーネントのハブでご覧いただけます。

はじめに

これらはすべて sgcWebSockets に同梱されています。無料トライアルを入手し、まず試したいプロバイダーのコンポーネントを配置すれば、数行で動く呼び出しができあがります。

質問、フィードバック、選択のお手伝いが必要ですか?お問い合わせください — コードを書いた本人から返信が届きます。

関連