AI エージェント
TsgcAIAgent は、Delphi 7 から 13 のアプリケーションをエージェント対応にします。TsgcAIChat とツールを渡して Run を呼び出すと、ツールを添えてプロンプトを送信し、モデルが要求するツール呼び出しをすべて実行して結果を返送し、最終的な回答を返します。
TsgcAIAgent は、Delphi 7 から 13 のアプリケーションをエージェント対応にします。TsgcAIChat とツールを渡して Run を呼び出すと、ツールを添えてプロンプトを送信し、モデルが要求するツール呼び出しをすべて実行して結果を返送し、最終的な回答を返します。
AI モデルのツールループを代わりに実行します。ローカルツール、自分のオブジェクトのメソッド、MCP サーバーのツールがモデルに提示され、すべての呼び出しが検査され、必要に応じて承認されたうえで実行されます。ループは回答、ステップ上限、トークン上限、キャンセル、エラーのいずれかで終了します。
TsgcAIAgent
あらゆる LLM プロバイダー向けのツール呼び出しエージェント
Windows、macOS、Linux、iOS、Android
エディション。TsgcAIAgent は sgcAI、sgcWebSockets Enterprise、All-Access に含まれ、TsgcAIChat と同じエディションです。2026.11.0 の新機能です。sgcAI は単体で完結しており、コンポーネントの土台となる sgcWebSockets Core ランタイムを含みます。Delphi 7 から Delphi 13 と C++ Builder で利用できます。
チャットを割り当て、パラメータとハンドラーを持つツールを追加して Run を呼び出します。データを変更するツールは、先に承認を求めます。
uses
sgcAI, sgcAI_Chat, sgcAI_Agent;
procedure TForm1.AskAgent;
var
oTool: TsgcAIAgentTool;
vAnswer: string;
begin
sgcAIChat1.Provider := aicpAnthropic;
sgcAIChat1.ChatOptions.ApiKey := 'sk-ant-...';
sgcAIChat1.ChatOptions.Model := 'claude-opus-5-5';
sgcAIAgent1.Chat := sgcAIChat1;
// optional: the tools of an MCP server are offered too
sgcAIAgent1.MCPClients.Add(sgcWSAPIClient_MCP1);
oTool := sgcAIAgent1.Tools.Add('get_weather', 'Current weather of a city');
oTool.AddParam('city', aatpString, 'City name');
oTool.ReadOnly := True;
oTool.OnExecute := DoGetWeather;
sgcAIAgent1.Options.MaxSteps := 8;
sgcAIAgent1.OnToolApproval := DoToolApproval;
vAnswer := sgcAIAgent1.Run('Do I need an umbrella in Paris today?');
Memo1.Lines.Add(vAnswer);
end;
procedure TForm1.DoGetWeather(Sender: TObject; const aArguments: string;
var aResult: string);
begin
// aArguments is a JSON object, for example {"city":"Paris"}
aResult := '{"city":"Paris","celsius":18,"sky":"rain"}';
end;
procedure TForm1.DoToolApproval(Sender: TObject; const aToolName,
aArguments: string; var aApproved: Boolean);
begin
// tools that are not ReadOnly ask before they run
aApproved := MessageDlg('Run ' + aToolName + ' ' + aArguments + '?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes;
end;
最もよく使うメンバーです。
Run(aPrompt) はツールを添えてプロンプトを送信し、各ステップの呼び出しを実行して最終的な回答を返します。Cancel は、次のモデルリクエストまたはツールの前に実行を停止します。Running、StepCount、StopReason で終了の状況がわかります。StopReason は aasrCompleted、aasrMaxSteps、aasrCancelled、aasrError、aasrMaxTokens のいずれかです。aasrMaxTokens は、回答がトークン上限で打ち切られたことを意味します。打ち切られた回答のツール呼び出しは、引数が不完全な可能性があるため実行されません。
Tools.Add(Name, Description) はツールを返します。引数は AddParam(string、integer、number、boolean、array、object)または InputSchema の生の JSON Schema で記述し、OnExecute で応答します。Tools.AddMethod は、Delphi 2010 以降でオブジェクトの public メソッドをツールに変換します。ハンドラーのないツールは OnToolCall に届きます。
TsgcWSAPIClient_MCP クライアントを MCPClients に追加します。Options.ImportMCPTools を有効にすると、エージェントは各クライアントを初期化し、ツールをページ単位で一覧取得して、CallTool 経由で呼び出します。MCP のツールピンニングでブロックされたツールは提示されず、同名のローカルツールがある場合はそちらが優先されます。
ReadOnly を設定したツールはすぐに実行されます。それ以外のツールは、先に OnToolApproval で承認を求めます。拒否されたツールや未知のツールはエラーテキストとしてモデルに返されるため、会話履歴は常に整合性を保ちます。チャットに TsgcAIGuardrails を割り当てると、ツール名で許可、拒否、承認要求を設定できます。
Options.MaxSteps(既定値は 10)は、1 回の実行でのモデルリクエスト数を制限します。最後に許可されたリクエストのツールは引き続き実行されてその結果が保存されるため、後続の Run は実際の結果から続行できます。Options.ImportMCPTools は MCP のインポートを有効または無効にします。
OnStep は、モデルのテキスト、ツール呼び出し、ツールの結果、拒否されたツール、最終的な回答など、すべてのステップを通知します。OnUsage は、実行中のすべてのモデルリクエストのトークン数を通知します。チャットに TsgcAIUsageMeter を割り当てると、その料金を計算できます。
エージェントは TsgcAIChat のすべてのプロバイダー(OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok、Mistral)で動作し、それぞれのツール呼び出し形式を使います。チャットのフォールバックを設定すると、プロバイダーが失敗したときに次のプロバイダーで実行を続けます。
このコンポーネントが利用するサービスとプロトコルの一次情報です。