AI チャット
TsgcAIChat は、7 つの大規模言語モデルプロバイダーに対応した単一のチャットクライアントです。Provider を設定し、API キーとモデルを指定して Chat を呼び出すだけです。ベンダーの変更は代入 1 行で済み、それ以外のコードはそのまま使えます。
TsgcAIChat は、7 つの大規模言語モデルプロバイダーに対応した単一のチャットクライアントです。Provider を設定し、API キーとモデルを指定して Chat を呼び出すだけです。ベンダーの変更は代入 1 行で済み、それ以外のコードはそのまま使えます。
プロバイダーに依存しないチャットコンポーネントです。会話履歴を保持し、プロバイダー固有の JSON ボディを構築し、対応する HTTP API クライアントを駆動して、アシスタントのテキストを 1 回の呼び出しで、あるいはトークン単位で返します。
sgcAI は単体で完結しています。このコンポーネントは、土台となる sgcWebSockets Core ランタイムとともに sgcAI に同梱されているため、基本ライセンスを購入する必要はありません。
プロバイダーを選び、キーとモデルを設定して Chat を呼び出します。ストリーミング版と非同期版も同じ設定を使います。
uses
sgcAI, sgcAI_Chat;
var
oChat: TsgcAIChat;
vAnswer: string;
begin
oChat := TsgcAIChat.Create(nil);
oChat.Provider := aicpAnthropic;
oChat.ChatOptions.ApiKey := 'sk-ant-...';
oChat.ChatOptions.Model := 'claude-sonnet-4-5';
oChat.ChatOptions.MaxTokens := 4096;
oChat.SystemMessage := 'You are a Delphi expert.';
oChat.MaxHistoryMessages := 20;
// Blocking call, returns the assistant text.
vAnswer := oChat.Chat('How do I keep a WebSocket connection alive?');
// Token by token, delivered on OnChatStream.
oChat.OnChatStream := OnChatStreamHandler;
oChat.ChatStream('Now explain it to a beginner.');
end;
procedure TForm1.OnChatStreamHandler(Sender: TObject;
const aChunk: string; var Cancel: Boolean);
begin
Memo1.Text := Memo1.Text + aChunk;
Cancel := StopRequested; // abort a long generation
end;
// includes: sgcAI.hpp, sgcAI_Chat.hpp
TsgcAIChat *oChat = new TsgcAIChat(NULL);
oChat->Provider = aicpOpenAI;
oChat->ChatOptions->ApiKey = "sk-...";
oChat->ChatOptions->Model = "gpt-4o";
oChat->SystemMessage = "You are a Delphi expert.";
String vAnswer = oChat->Chat("How do I keep a WebSocket connection alive?");
// Local models: same code, no data leaves the machine.
oChat->Provider = aicpOllama;
oChat->ChatOptions->BaseUrl = "http://127.0.0.1:11434";
oChat->ChatOptions->Model = "llama3";
vAnswer = oChat->Chat("Same question, local model.");
最もよく使うメンバーです。
Provider でベンダーを選択します。aicpOpenAI、aicpAnthropic、aicpGemini、aicpDeepSeek、aicpOllama、aicpGrok、aicpMistral が指定できます。変更すると、以前のプロバイダー用にキャッシュされていたクライアントは解放されます。
ApiKey、Model、MaxTokens、Temperature、TopP、BaseUrl を設定します。Temperature と TopP を既定値のままにするとリクエストから省略されるため、プロバイダー側の既定値が適用されます。
SystemMessage は毎ターンのペルソナを設定します。MaxHistoryMessages は再送する過去メッセージの数を制限し、トークンコストを抑えます。ClearHistory と GetHistory で履歴のリセットと読み出しを行います。
Chat はブロッキングで応答を返します。ChatStream は SSE 経由でストリーミングします。ChatWithSystem は 1 ターンだけシステムプロンプトを上書きします。ChatAsync は Delphi 2010 以降で future を返します。
OnChatMessage は完了した各メッセージをそのロールとともに通知します。OnChatStream はすべてのチャンクを配信し、Cancel フラグを備えています。OnChatError はプロバイダーおよびトランスポートのエラーを通知します。
Provider を aicpOllama に設定すると、ChatOptions.BaseUrl でコンポーネントを自前の Ollama ホストに向けられるため、プロンプトと応答がマシンの外に出ることはありません。
このコンポーネントが利用するサービスとプロトコルの一次情報です。