sgcAI を 5 分で

コンポーネント 1 つ、プロバイダーのプロパティ 1 つ、呼び出し 1 回です。このページでは、Delphi アプリケーションを大規模言語モデルと通信させ、回答を待たずにストリーミングする方法を示し、つまずきやすい唯一のプラットフォーム制限についても明確に説明します。

OpenAI、Claude、Gemini、DeepSeek、Ollama、Grok、Mistral
TsgcAIChat は Windows、macOS、Linux、iOS、Android に対応
Enterprise エディション、または単独の sgcAI パッケージ

最初の呼び出しに必要なもの

コンポーネント、キー、モデル名、そしてプロンプトです。JSON を組み立てる必要も、HTTP クライアントを設定する必要もありません。

コンポーネント

TsgcAIChat は SGC AI パレットページにあります。TsgcAI_Chat を薄くラップした公開コンポーネントで、同梱のデモはコードで TsgcAI_Chat を作成しています。

ユニット

クラスには sgcAI_Chat.pas、パレットコンポーネントにはバレルユニット sgcAI.pas を使用します。デモは uses sgcAI_Chat; と記述しています。

ベンダーを切り替える唯一のプロパティ

Provider は TsgcAIChatProvider 型です。7 つのメンバーは aicpOpenAI、aicpAnthropic、aicpGemini、aicpDeepSeek、aicpOllama、aicpGrok、aicpMistral です。コード内のそれ以外は何も変わりません。

プラットフォームについて、必ずお読みください

TsgcAIChat はすべてのプラットフォーム(Win32、Win64、macOS、Linux64、iOS、Android)でコンパイルでき、IDE もそれらすべてのフォームで提供します。HTTPS 呼び出しには、各プラットフォームで通常必要な TLS の設定が必要です。たとえば Linux では OpenSSL ライブラリです。下の表をご覧ください。

要件とエディション

エディションの列は、コードを制御する define と、それが Source/sgcVer.inc の何行目にあるかを示しています。

項目 内容
IDE Delphi 7 から RAD Studio 13、および対応する C++Builder バージョン。ChatAsync は {$IFDEF D2010} で囲まれているため、対応範囲がより狭い唯一のメンバーです。
uses 句 TsgcAI_Chat、TsgcAIChatProvider、イベント型には sgcAI_Chat を使用します。
エディション(sgcWebSockets 内) SGC_AI は 796 行目、759 行目から 842 行目までの {$IFDEF SGC_EDT_ENT} ブロック内で定義されています。つまり Enterprise 以上であり、Standard と Professional は対象外です。
エディション(単独パッケージ) sgcAI 製品は 857 行目で SGC_PACK_AI を定義し、946 行目から 959 行目の独自ブロックで 947 行目に SGC_AI を定義します。ライブラリの残りの部分を含まない、同じコンポーネントです。
プラットフォーム SGC_AI の 2 つの定義(796 行目と 947 行目)のどちらにもプラットフォームガードがないため、sgcAI_Chat.pas はすべてのターゲットでコンパイルされ、コンポーネントには ComponentPlatforms(0) が指定されています。Windows のオーディオ API と音声 API を呼び出す TsgcAudioRecorderMCI、TsgcAudioRecorderWave、TsgcAudioPlayerMCI、TsgcTextToSpeechSystem だけが、Windows でのみコンパイルされます。
クロスプラットフォームのもの 797 行目と 955 行目の SGC_AI_MCP にはプラットフォームガードがありません。そのため MCP クライアントとサーバーは Linux、macOS、iOS、Android でも動作します。786 行目から 792 行目のプロバイダーの define(SGC_OPENAI、SGC_ANTHROPIC、SGC_GEMINI、SGC_DEEPSEEK、SGC_OLLAMA、SGC_GROK、SGC_MISTRAL)も、プラットフォームで制限されていません。

Linux サービスやモバイルアプリを構築する場合も、TsgcAIChat はコンパイルできます。代わりに、たとえば TsgcHTTP_API_OpenAI や TsgcHTTP_API_Anthropic のようなベンダーの REST クライアントを直接呼び出すこともできます。Delphi から LLM を呼び出すガイドで、両方の方法を並べて紹介しています。

インストールとパレットページの確認

sgcAI は sgcWebSockets のインストーラーに含まれており、単独のパッケージとしても提供されています。どちらでもインストールの手順は同じです。

1. 展開

ダウンロードしたファイルをフォルダーに展開します。以下ではこのフォルダーを {$DIR} と呼びます。

2. ライブラリパス

ツール、オプション、ライブラリの順に開きます。{$DIR}\source と、お使いの IDE 用の lib フォルダー(たとえば {$DIR}\libD13\$(Platform))を追加します。

3. パッケージのビルド

{$DIR}\Packages\ の下で、お使いの IDE バージョン用のパッケージグループを開きます。最初に実行時の .dpk をコンパイルし、次にデザイン時の dcl をインストールします。

4. パレットの確認

SGC AI というページが表示され、15 個のコンポーネントが含まれています。TsgcAIChat が先頭です。Windows 以外のターゲットでページが表示されない場合は想定どおりです。IDE のパレットがこれらのコンポーネントを Win32 と Win64 でのみ提供するためです。ユニット自体はすべてのプラットフォームでコンパイルできます。

5. API キーを取得する

ホスト型のプロバイダーを使う場合は、そのベンダーから自分のキーを取得し、ChatOptions.ApiKey に代入します。Ollama はモデルが自分のマシンで動作するため、キーはまったく不要です。

約 10 行で最初の回答を得る

コンポーネントを作成し、プロバイダー、キー、モデルを設定してから Chat を呼び出し、返された文字列を読み取ります。

fUnifiedChat.pas
uses
  Classes, SysUtils,
  // sgc
  sgcAI_Chat;

procedure TfrmUnifiedChat.btnChatClick(Sender: TObject);
var
  oChat: TsgcAI_Chat;
begin
  oChat := TsgcAI_Chat.Create(nil);
  try
    oChat.Provider := aicpOpenAI;
    oChat.ChatOptions.ApiKey := GetApiKey;
    oChat.ChatOptions.Model := 'gpt-4o-mini';
    oChat.ChatOptions.MaxTokens := 1024;
    oChat.SystemMessage := 'You are a concise assistant inside a Delphi ERP.';

    memoResponse.Lines.Text := oChat.Chat(memoPrompt.Text);
  finally
    oChat.Free;
  end;
end;

ベンダーの変更は 1 行です。Provider は aicpOpenAI、aicpAnthropic、aicpGemini、aicpDeepSeek、aicpOllama、aicpGrok、aicpMistral を受け付けます。それ以外はそのままです。

fUnifiedChat.pas
procedure TfrmUnifiedChat.OnChatStream(Sender: TObject; const aChunk: string;
  var Cancel: Boolean);
begin
  memoResponse.Text := memoResponse.Text + aChunk;
  // set Cancel to stop the generation early
end;

procedure TfrmUnifiedChat.OnChatError(Sender: TObject; const aError: string);
begin
  memoResponse.Text := 'error: ' + aError;
end;

procedure TfrmUnifiedChat.btnChatStreamClick(Sender: TObject);
begin
  GetChat.Provider := aicpAnthropic;
  GetChat.ChatOptions.ApiKey := GetApiKey;
  GetChat.ChatOptions.Model := 'claude-sonnet-4-20250514';
  GetChat.SystemMessage := memoSystem.Text;

  memoResponse.Lines.Clear;
  GetChat.ChatStream(memoPrompt.Text);
end;

デモはコンポーネントを GetChat で一度だけ構築し、そこで OnChatStream と OnChatError を割り当てています。ChatStream は完全な回答も返すため、戻り値を無視してイベントだけを使うことも、両方を使うこともできます。

uLocal.pas
uses
  Classes, SysUtils,
  // sgc
  sgcAI_Chat;

var
  oChat: TsgcAI_Chat;
begin
  oChat := TsgcAI_Chat.Create(nil);
  try
    // no API key at all: the model runs on this machine
    oChat.Provider := aicpOllama;
    oChat.ChatOptions.Model := 'llama3';

    // BaseUrl is read only for the Ollama provider, and only when
    // the server is not on the default address. Internally it is
    // forwarded to the Ollama client's Host property.
    oChat.ChatOptions.BaseUrl := 'http://localhost:11434';

    Writeln(oChat.Chat('Summarise this invoice in one line.'));
  finally
    oChat.Free;
  end;
end;

OllamaOptions.BaseUrl はありません。生の API レベルでは、このプロパティは TsgcHTTP_API_Ollama の OllamaOptions.Host で、この層からそれに値を渡すのが ChatOptions.BaseUrl です。

最初の 2 つのタブは、同梱のデモ Demos\15.AI\02.Applications\06.UnifiedChat\fUnifiedChat.pas から、フォームコントロールをリテラルに置き換えたものです。3 つ目のタブは、同じコンポーネントをローカルの Ollama サーバーに向けたものです。同じフォルダーにある 2 つ目のデモ 07.ConversationHistory では、履歴 API を紹介しています。

動作の確認と、失敗したときの見え方

Chat は呼び出しに失敗しても例外を発生させません。これは意外に思われがちです。代わりに空の文字列を返し、イベントを発生させます。

戻り値

Chat はアシスタントのテキストを string として返します。失敗しても例外は発生しないため、空の文字列は呼び出しが失敗したことを意味します。

OnChatError

procedure(Sender: TObject; const aError: string)。Chat と ChatStream の両方が例外を捕捉し、ここに渡します。他の何よりも先に接続すべき最初のイベントです。

OnChatStream

procedure(Sender: TObject; const aChunk: string; var Cancel: Boolean)。モデルがまだ書き込んでいる間にメモにテキストが表示されれば、ストリーミングがバッファリングではなく機能している証拠です。

会話

GetHistory は、次の呼び出しでコンポーネントが再送する内容を返します。MaxHistoryMessages で上限を設定し、ClearHistory で最初からやり直します。

初回によくあるつまずき

最初の呼び出しが失敗する原因のほとんどは、6 つの問題のいずれかです。

Linux、macOS、モバイル向けのビルド

sgcAI_Chat.pas はすべてのプラットフォームでコンパイルできます。TsgcAudioRecorderMCI、TsgcAudioRecorderWave、TsgcAudioPlayerMCI、TsgcTextToSpeechSystem は Windows のオーディオ API と音声 API を呼び出し、Windows でのみコンパイルされるため、クロスプラットフォームのフォームには置かないでください。HTTPS 呼び出しには、各プラットフォームで通常必要な TLS の設定が必要です。たとえば Linux では OpenSSL ライブラリです。

Chat が空の文字列を返し、例外も発生しない

Chat と ChatStream は例外を握りつぶして OnChatError に渡します。そのシグネチャは procedure(Sender: TObject; const aError: string) です。他のデバッグより先に、このイベントを接続してください。

ローカルの Ollama モデルが無視される

Ollama のベースアドレスは、ベンダーのオプションオブジェクトではなく ChatOptions.BaseUrl に設定します。内部で OllamaOptions.Host に渡され、BaseUrl が読み取られるプロバイダーはこれだけです。

長い回答の間、フォームがフリーズする

Chat と ChatStream は同期呼び出しです。Delphi 2010 以降では、IsgcFuture<string> を返す ChatAsync を使用してください。それより古いコンパイラーでは、独自のスレッドで呼び出しを実行してください。

モデル名が拒否される

モデル名はコンポーネントではなくベンダーのものであり、変更されます。ChatOptions.Model はそのまま渡されるため、ベンダーのコンソールで通用する名前はここでも通用します。

長い会話で料金が膨らむ

コンポーネントは呼び出しのたびに履歴を再送します。これにより追加の質問が成り立ちます。MaxHistoryMessages で上限を設定し、ClearHistory で最初からやり直してください。

最初の回答の次に作られるもの

プロンプトボックスは始まりにすぎません。次の 4 つはいずれもすでにパッケージに含まれています。

自分のドキュメントから回答する

TsgcAIOpenAIEmbeddings でコンテンツをベクトルに変換し、TsgcAIDatabaseVectorFile または TsgcAIDatabaseVectorPinecone に保存して、最も近い文章を取得してプロンプトに入れます。

Embeddings のリファレンスとベクトルデータベースのリファレンス

声で話しかける

TsgcAIOpenAIChatBot は、録音、文字起こし、チャット呼び出し、テキスト読み上げを 1 つのコンポーネントにまとめます。TsgcAIOpenAITranslator はライブ翻訳で同じことを行います。

ChatBot のリファレンスとトランスレーターのリファレンス

アプリケーションをエージェントに公開する

MCP サーバーコンポーネントは、アプリケーションをアシスタントが呼び出せるツールに変え、MCP クライアントは他のサーバーを利用します。どちらも Windows に限定されていないため、Delphi で書いた MCP サーバーは Linux でも動作します。

MCP サーバーのリファレンスとMCP クライアントのリファレンス

ベンダーの API をフルに使う

ビジョン、ドキュメント、拡張思考、バッチ、画像生成、文字起こし、モデレーションは、中立的なチャット層ではなく、ベンダーごとの REST クライアントにあります。

OpenAI のリファレンスとAnthropic のリファレンス

リファレンス、デモ、ドキュメント

リファレンスページには、すべてのオプションとイベントが記載されています。デモプロジェクトはダウンロードに含まれており、Demos\15.AI の下にあります。

ガイド、Delphi から LLM を呼び出す ストリーミング、ツール呼び出し、ホスト型とローカルの比較を含む、詳しい解説です。
リファレンス、OpenAI クライアント TsgcHTTP_API_OpenAI のすべてのメソッド、オプション、イベント。
リファレンス、Anthropic クライアント TsgcHTTP_API_Anthropic のメッセージ、ツール、ビジョン、バッチ、トークンカウント。
リファレンス、MCP サーバー アシスタントがアプリケーションを呼び出せるようにするコンポーネントです。
TsgcAIChat コンポーネントのページ チャットコンポーネントのすべてのプロパティとイベントがあり、他の 14 個へのリンクもあります。
オンラインヘルプ 自動生成されたリファレンスで、常に最新リリースに対応しています。

関連資料:AI を活用した Delphi アプリの構築、Delphi からのプロバイダー比較、MCP サーバーの作成。各製品にはそれぞれクイックスタートがあり、はじめにのページに一覧があります。

sgcAI クイックスタートに関するよくある質問

SGC AI パレットページから TsgcAIChat を配置します。これは sgcAI.pas で、sgcAI_Chat.pas で宣言されている TsgcAI_Chat の公開ラッパーとして宣言されています。同梱のデモのように実行時にオブジェクトを作成するコードでは、TsgcAI_Chat と uses sgcAI_Chat; を使用します。どちらも同じプロパティを提供します。
sgcWebSockets 内では、ゲートは sgcVer.inc の 796 行目で定義されている SGC_AI で、759 行目から 842 行目までの SGC_EDT_ENT ブロック内にあります。これは Enterprise エディション以上です。674 行目から 723 行目の Standard と、726 行目から 757 行目の Professional では定義されません。ライブラリの残りの部分が不要な場合、単独の sgcAI パッケージは 857 行目で SGC_PACK_AI を定義し、946 行目から 959 行目のその独自ブロックが同じコンポーネントを有効にします。
はい。SGC_AI はプラットフォームガードなしで、Enterprise ブロックの 796 行目と単独パックブロックの 947 行目で定義されているため、sgcAI_Chat.pas と sgcAI.pas は Windows、macOS、Linux、iOS、Android でコンパイルでき、TsgcAIChat には ComponentPlatforms(0) が指定されています。例外は TsgcAudioRecorderMCI、TsgcAudioRecorderWave、TsgcAudioPlayerMCI、TsgcTextToSpeechSystem で、Windows のオーディオ API と音声 API を呼び出し、Windows でのみコンパイルされます。HTTPS 呼び出しには、各プラットフォームで通常必要な TLS の設定が必要です。たとえば Linux では OpenSSL ライブラリです。
Provider を変更します。aicpOpenAI、aicpAnthropic、aicpGemini、aicpDeepSeek、aicpOllama、aicpGrok、aicpMistral を指定できます。その後、そのベンダー用のキーとモデルを設定します。aicpOllama にキーはなく、サーバーが既定のアドレスにない場合は ChatOptions.BaseUrl を設定します。コンポーネントはそれを内部で Ollama クライアントに渡します。
Chat ではなく ChatStream を呼び出し、OnChatStream を処理します。そのシグネチャは procedure(Sender: TObject; const aChunk: string; var Cancel: Boolean) です。aChunk が届くたびにメモへ追加し、生成を途中で止めるには Cancel を True に設定します。
Chat と ChatStream は例外を発生させません。例外を捕捉し、メッセージとともに OnChatError を発生させて、空の文字列を返します。そのため、OnChatError を処理していないと、モデルが何も答えなかった場合と見分けがつきません。最初に接続してください。
Delphi 2010 以降では ChatAsync を呼び出します。{$IFDEF D2010} で囲まれており、IsgcFuture<string> を返します。Delphi 7 から 2009 ではこのメソッドは存在しないため、自分で作成したスレッドで Chat を実行してください。
はい。やり取りを保持し、次の呼び出しで再送します。これにより追加の質問が成り立ちます。MaxHistoryMessages は再送する量の上限を設定し、ClearHistory は新しい会話を開始し、GetHistory は保存されたメッセージを返します。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

アプリケーションにモデルを組み込む準備はできましたか?

体験版をダウンロードして、ご自身のキーで統合チャットのデモを実行してみてください。