AI Agent

TsgcAIAgent 让您的 Delphi 7 至 13 应用程序具备智能体能力。给它一个 TsgcAIChat 和您的工具,调用 Run,它就会连同工具一起发送提示词,执行模型请求的每一次工具调用,把结果送回模型,并返回最终答案。

TsgcAIAgent

为您完成 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 和 Cancel

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。

MCP 工具

把 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 后,某个提供商失败时运行会在下一个提供商上继续。

规范与参考资料

该组件所用服务和协议的权威资料来源。

继续探索

在线帮助sgcAI 组件的完整 API 参考和使用指南。
所有 sgcAI 组件浏览每个 sgcAI 组件的完整功能矩阵。
下载免费试用版用您自己的 API 密钥试用。
价格Single、Team 和 Site 授权,均含完整源代码。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

准备好开始了吗?

下载免费试用版,让语言模型调用您 Delphi 应用程序中的函数。