AI Agent
TsgcAIAgent 让您的 Delphi 7 至 13 应用程序具备智能体能力。给它一个 TsgcAIChat 和您的工具,调用 Run,它就会连同工具一起发送提示词,执行模型请求的每一次工具调用,把结果送回模型,并返回最终答案。
TsgcAIAgent 让您的 Delphi 7 至 13 应用程序具备智能体能力。给它一个 TsgcAIChat 和您的工具,调用 Run,它就会连同工具一起发送提示词,执行模型请求的每一次工具调用,把结果送回模型,并返回最终答案。
为您完成 AI 模型的工具循环。本地工具、您自己对象的方法以及 MCP 服务器的工具都会提供给模型,每次调用都会经过检查,必要时经过批准,然后执行,循环在得到答案、达到步数上限、达到令牌上限、被取消或出错时停止。
版本。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 说明运行如何结束:aasrCompleted、aasrMaxSteps、aasrCancelled、aasrError 或 aasrMaxTokens。aasrMaxTokens 表示答案被令牌上限截断,被截断答案中的工具调用不会执行,因为其参数可能不完整。
Tools.Add(Name, Description) 返回一个工具。用 AddParam 描述它的参数(字符串、整数、数字、布尔、数组或对象),或在 InputSchema 中提供原始 JSON Schema,并在 OnExecute 中给出结果。在 Delphi 2010 及更高版本上,Tools.AddMethod 可把对象的公共方法变成工具。没有处理程序的工具会触发 OnToolCall。
把 TsgcWSAPIClient_MCP 客户端添加到 MCPClients。启用 Options.ImportMCPTools 后,智能体会初始化每个客户端,分页列出其工具,并通过 CallTool 调用它们。被 MCP 工具固定(tool pinning)拦截的工具不会提供给模型,同名的本地工具优先。
标记为 ReadOnly 的工具会立即运行。其他工具会先询问 OnToolApproval。被拒绝或未知的工具会以错误文本返回给模型,因此对话历史始终保持有效。把 TsgcAIGuardrails 关联到聊天组件,即可按工具名称允许、拒绝或要求批准。
Options.MaxSteps(默认 10)限制一次运行中的模型请求数。最后一次允许的请求所带的工具仍会运行,其结果会被保存,因此之后的 Run 会基于真实结果继续。Options.ImportMCPTools 用于开启或关闭 MCP 导入。
OnStep 报告每一步:模型文本、工具调用、工具结果、被拒绝的工具和最终答案。OnUsage 报告该次运行中每个模型请求的令牌数。把 TsgcAIUsageMeter 关联到聊天组件即可为它们计价。
智能体适用于 TsgcAIChat 的所有提供商:OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral,各自使用自己的工具调用格式。配置聊天组件的 fallback 后,某个提供商失败时运行会在下一个提供商上继续。
该组件所用服务和协议的权威资料来源。