sgcAI 功能矩阵
sgcAI 的全部能力,对应到 SGC AI 面板页上的 15 个组件。通过一个组件与七家模型提供商聊天,托管或使用 Model Context Protocol 服务器,把您自己的数据索引为向量,并用语音驱动整套流程。每份授权都提供完整源代码。点击组件即可进入它自己的页面,查看属性、事件和示例。
sgcAI 的全部能力,对应到 SGC AI 面板页上的 15 个组件。通过一个组件与七家模型提供商聊天,托管或使用 Model Context Protocol 服务器,把您自己的数据索引为向量,并用语音驱动整套流程。每份授权都提供完整源代码。点击组件即可进入它自己的页面,查看属性、事件和示例。
sgcAI 是自包含的。下表中的所有内容都在一个包里交付,同时附带这些组件所基于的 sgcWebSockets Core 运行时。
聊天和 MCP 组件可在所有平台上运行。TsgcAIChat 和两个 Model Context Protocol 组件可为 Windows、macOS、Linux、iOS 和 Android 编译,IDE 在所有平台的窗体上都会提供它们。
有四个组件仍然只能用于 Windows,因为它们调用 Windows 的音频和语音 API:TsgcAudioRecorderMCI、TsgcAudioRecorderWave、TsgcAudioPlayerMCI 和 TsgcTextToSpeechSystem。参见下方的平台与语言。
它们全部注册在名为 SGC AI 的同一个面板页上。
| 组件 | 类 | 家族 | 描述 |
|---|---|---|---|
| AI Chat | TsgcAIChat | 聊天 | 一个聊天客户端,同时支持 OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral。 |
| AI Agent | TsgcAIAgent | 聊天 | 在所有提供商上运行工具循环,使用您的工具、MCP 服务器的工具,并对修改数据的工具要求批准。 |
| Guardrails | TsgcAIGuardrails | 聊天 | PII 脱敏、允许和拒绝的工具、工具批准,以及答案的 JSON schema 校验。 |
| Usage Meter | TsgcAIUsageMeter | 聊天 | 按提供商和模型计算成本,按用户和会话设置预算,支持 CSV、TDataSet 和 OpenTelemetry 导出。 |
| OpenAI ChatBot | TsgcAIOpenAIChatBot | 聊天 | 语音聊天机器人:录音、用 Whisper 转写、作答、朗读回复。 |
| OpenAI Translator | TsgcAIOpenAITranslator | 聊天 | 语音输入、语音输出,可翻译为任意语言:转写加聊天翻译。 |
| OpenAI Assistant | TsgcAIOpenAIAssistant | 聊天 | Assistants API:线程、运行、File Search、Code Interpreter、函数调用。 |
| MCP Server | TsgcWSAPIServer_MCP | MCP | 通过 HTTP 或 HTTP Streamable 发布工具、提示词和资源。 |
| MCP Client | TsgcWSAPIClient_MCP | MCP | 通过 HTTP、HTTP Streamable 或 stdio 使用任意 MCP 服务器。 |
| OpenAI Embeddings | TsgcAIOpenAIEmbeddings | 向量 | 从文本或文件生成嵌入向量,并查询最接近的匹配项。 |
| Vector Database (File) | TsgcAIDatabaseVectorFile | 向量 | 基于本地文件的向量存储,无需服务器,也无需账户。 |
| Vector Database (Pinecone) | TsgcAIDatabaseVectorPinecone | 向量 | 通过 Pinecone REST API 使用托管向量索引。 |
| Text to Speech (System) | TsgcTextToSpeechSystem | 语音 | 使用机器上已安装的引擎朗读,无需密钥。 |
| Text to Speech (Google) | TsgcTextToSpeechGoogle | 语音 | Google Cloud Text-to-Speech,采用服务账户身份验证。 |
| Text to Speech (Amazon) | TsgcTextToSpeechAmazon | 语音 | Amazon Polly,支持签名 AWS 请求和 SSML。 |
| Audio Recorder (MCI) | TsgcAudioRecorderMCI | 音频 | 将麦克风采集录制为 WAV 文件,带静音检测。 |
| Audio Recorder (Wave) | TsgcAudioRecorderWave | 音频 | 流式麦克风采集,可完全控制采样格式。 |
| Audio Player (MCI) | TsgcAudioPlayerMCI | 音频 | 播放音频,并提供真正的播放结束通知。 |
通过一个 Provider 属性接入七家提供商,另有三个 OpenAI 组件用于语音和智能体场景。
| 能力 | 组件 | 说明 |
|---|---|---|
| OpenAI | TsgcAIChat | Provider := aicpOpenAI。通过 Chat Completions API 使用 GPT 模型。 |
| Anthropic | TsgcAIChat | Provider := aicpAnthropic。通过 Messages API 使用 Claude 模型。 |
| Google Gemini | TsgcAIChat | Provider := aicpGemini。 |
| DeepSeek | TsgcAIChat | Provider := aicpDeepSeek。deepseek-flash 和 deepseek-v4-pro。 |
| Ollama(本地模型) | TsgcAIChat | Provider := aicpOllama。ChatOptions.BaseUrl 指向您自己的主机,数据不会离开本机。 |
| xAI Grok | TsgcAIChat | Provider := aicpGrok。 |
| Mistral | TsgcAIChat | Provider := aicpMistral。 |
| 阻塞调用 | TsgcAIChat | Chat(aMessage) 返回助手文本。 |
| 流式传输 | TsgcAIChat | ChatStream 配合 OnChatStream,后者带有 Cancel 标志,可在生成过程中中止。 |
| 异步 | TsgcAIChat | 在 Delphi 2010 及更高版本上,ChatAsync 返回一个 future。 |
| 系统提示词 | TsgcAIChat | SystemMessage 应用于每一轮对话,或用 ChatWithSystem 只作用于单轮。 |
| 有界历史 | TsgcAIChat | MaxHistoryMessages 限制回放的上下文量。ClearHistory 和 GetHistory 用于管理对话记录。 |
| 采样控制 | TsgcAIChat | MaxTokens、Temperature 和 TopP。后两者不设置时采用提供商的默认值。 |
| 文档与附件 | TsgcAIChat | ChatWithDocument、ChatWithDocumentBase64、ChatWithAttachments 和 ChatJSONWithAttachments 会随消息一起发送 PDF 和图片,一个或多个文件保存在 TsgcAIChatAttachments 列表中。 |
| 工具调用 | TsgcAIChat | 七家提供商全部支持 ChatWithTools 和 AddToolResult,各自使用自己的格式:OpenAI 风格的 tools、Anthropic tool use 和 Gemini function declarations。 |
| AI 智能体 | TsgcAIAgent | Run 会提供您的工具、您对象的方法(AddMethod,Delphi 2010 及更高版本)以及 MCPClients 的工具,执行调用,对非 ReadOnly 的工具询问 OnToolApproval,并在得到答案、达到 Options.MaxSteps、达到令牌上限(aasrMaxTokens)、Cancel 或出错时停止。OnStep 和 OnUsage 报告运行情况。 |
| 模型别名 | TsgcAIChat | ModelAliases 把 fast 或 smart 这样的名称映射到某个模型或 provider:model,可从文件、JSON 或 URL 加载。ProviderApiKeys 保存每个提供商的密钥。 |
| 提供商 fallback | TsgcAIChat | 在连接错误、HTTP 5xx、HTTP 429 或未知模型时,Fallbacks 会把请求转到下一个提供商和模型,并支持工具和流式传输。OnFallback 报告每一次切换。 |
| 令牌用量 | TsgcAIChat | LastUsage 和 OnChatUsage:每个请求的提供商、模型、输入、输出和缓存令牌数,并带有 UserId 和 SessionId。LastFinishReason:最后一个答案结束的原因,例如 stop 或 length。 |
| 成本与预算 | TsgcAIUsageMeter | 每百万令牌的价格、按用户和会话的总量、可拒绝请求的总量、每日或每月预算、SaveToCSV、ExportToDataSet,以及遵循 GenAI 约定的 OpenTelemetry span。 |
| Guardrails | TsgcAIGuardrails | 在请求之前对邮箱、电话、银行卡、IBAN、IP 地址和自定义模式脱敏,并在答案中还原;支持带通配符的 AllowedTools 和 DeniedTools、ToolApproval,以及结构化答案的 JSON schema 校验。 |
| 文档提取 | TsgcAIDocumentExtractor | 输入 PDF 或图片以及 JSON schema,输出经过校验的 JSON。内置 dpInvoice、dpReceipt 和 dpIDCard 预设,逐字段给出置信度,低于 MinConfidence 时触发 OnLowConfidence,答案未通过校验时会自动重试一次。关联 TsgcAIOCRTesseract 或内置于 Windows 10 及更高版本的 TsgcAIOCRWindows 即可在本地识别文字,这样 Ollama 上的纯文本模型也能完成提取。 |
| 实时语音代理 | TsgcAIVoiceAgent | 通过 OpenAI Realtime 或 Gemini Live 倾听、检测轮次、回话并调用工具,支持 WebSocket,或在使用 OpenAI 时支持 WebRTC,可在 Windows、Android 和 iOS 上运行。服务器端 VAD、语义 VAD、客户端 VAD 或手动轮次,可停止代理并截断其回答的打断(barge-in),OnTranscript 上用户与代理的实时转写,来自 OnToolCall 和已分配的 MCPClient 的工具,以及用于电话场景的 8 kHz G.711 mu-law 或 A-law。 |
| 实时语音翻译器 | TsgcAIVoiceTranslator | 把麦克风音频流式传给 OpenAI gpt-realtime-translate,翻译后的语音一到就播放,并通过 OnInputTranscript 和 OnOutputTranscript 提供原文和译文的实时转写。会话运行期间可以更改 Language,也可以关闭设备,用 SendAudio 推送您自己的 PCM16 音频。使用 Windows 音频,在 Linux 和 macOS 上使用您自己的音频。 |
| 语音转文本 | TsgcAIOpenAIChatBot、TsgcAIOpenAITranslator | 使用 gpt-transcribe 转写,并通过聊天模型翻译成任意语言,同时提供事件以便在使用前审阅文本。 |
| 检索增强回答 | TsgcAIOpenAIChatBot | 关联一个 Embeddings 组件,检索到的上下文会在调用模型之前加入。 |
| 助手、线程和运行 | TsgcAIOpenAIAssistant | CreateAssistant、CreateThread、CreateMessageText、CreateRun、CreateRunAndWait。 |
| File Search 和 Code Interpreter | TsgcAIOpenAIAssistant | AssistantOptions.Tools,并用 UploadVectorStoreFile 添加您自己的文档。 |
| 函数调用 | TsgcAIOpenAIAssistant | Tools.Functions 加上 OnFunctionCall 事件。 |
AI 客户端用来访问工具、提示词和资源的协议的两端。支持 MCP 2026-07-28,并完全向下兼容 2025-11-25。
| 能力 | 客户端 | 服务器 | 说明 |
|---|---|---|---|
| HTTP JSON-RPC 传输 | aimcptrHttp | TransportOptions.Http | 一次请求,一次响应,随后连接关闭。 |
| HTTP Streamable 传输 | aimcptrHttpStreamable | TransportOptions.HttpStreamable | 保持连接并附带一条 SSE 流,通知和服务器发起的请求都通过它传送。 |
| stdio 传输 | aimcptrStdio | 独立的 stdio 宿主 | 客户端会启动一个本地子进程。服务器端的 stdio 由专门的宿主类提供,而非面板组件。 |
| 握手 | Initialize | OnMCPInitialize | 能力协商和会话 id 分配。 |
| 会话 | Session、HeartBeat | OnMCPSessionNew、OnMCPSessionEnd、SessionTimeout | 空闲会话会在服务器上过期,客户端可通过定期 ping 保持其存活。 |
| 工具 | ListTools、RequestTool | Tools、OnMCPRequestTool | 列出并调用。服务器触发事件,由您的代码完成实际工作。 |
| 工具固定 | MCPOptions.ToolPinning、OnMCPToolChanged | — | 每个列出工具的 SHA-256 指纹。描述、输入 schema 或注解发生变化的工具会被隐藏并被拒绝,直到您接受该变更,从而防止工具投毒。 |
| 提示词 | ListPrompts、RequestPrompt | Prompts、OnMCPRequestPrompt | 与工具采用相同的模式。 |
| 资源 | ListResources、RequestResource、ListResourceTemplates | Resources、ResourceTemplates、OnMCPRequestResource | 列表接受游标以便分页。 |
| 资源订阅 | SubscribeResource、UnsubscribeResource | SendNotificationResourcesUpdated | 跟踪某个资源,并在其变化时收到通知。 |
| 列表变更通知 | 接收 | SendNotificationToolsListChanged 以及提示词和资源的对应方法 | 需要 streamable 传输。 |
| Roots | OnMCPListRoots | RequestRootsList | 服务器询问客户端可以使用哪些文件系统根目录。 |
| 采样 | OnMCPSamplingCreateMessage | RequestSamplingCreateMessage | 服务器请求客户端的模型生成一次补全。 |
| 引导询问 | OnMCPElicitationCreate | RequestElicitationCreate | 服务器通过客户端向用户索取输入。 |
| 补全 | Complete | 已处理 | 工具和提示词的参数值补全。 |
| 日志 | SetLoggingLevel | SendLogMessage | 结构化日志消息,级别由客户端控制。 |
| 身份验证 | API 密钥、自定义头部、OAuth 2.0 | API 密钥、自定义头部、OAuth 2.0 | 两端都使用 MCPOptions.AuthenticationOptions。 |
| 内置授权服务器 | — | ✓ | 动态客户端注册、同意页面、PKCE 和刷新令牌,遵循 RFC 8414 和 RFC 9728。 |
| Origin 校验 | — | HttpStreamable.ValidateOrigin | 将会话固定到创建它时所用的 Origin 头部。 |
| MCP 2026-07-28(无状态) | MCPOptions.ProtocolEra、Discover | 按请求检测版本 | 逐请求的 _meta、server/discover,经过校验的 Mcp-Method、Mcp-Name 和 Mcp-Param 请求头。客户端会自动回退到 2025-11-25。 |
| 缓存提示 | 接收 | MCPOptions.Cache | 2026-07-28 结果上的 ttlMs 和 cacheScope。 |
| subscriptions/listen | SubscriptionsListen、SubscriptionsCancel | MCPOptions.Subscriptions | 同一条流承载列表变更和资源更新。 |
| Multi Round-Trip Requests | OnMCPInputRequired | aResponse.InputRequired、MCPOptions.MRTR | 引导询问(表单和 URL)、采样和 roots,使用 HMAC 签名的 requestState。 |
| Tasks 扩展 | MCPOptions.Tasks.Enabled、TasksGet | CreateTask、MCPOptions.Tasks | 面向长时间运行工具调用的 io.modelcontextprotocol/tasks;客户端可通过 AutoPoll 自动轮询。 |
| 客户端授权 | MCPOptions.Authorization | — | 受保护资源元数据发现、Client ID Metadata Documents、动态注册回退、PKCE、resource indicators、RFC 9207 iss 校验、按 issuer 区分的凭据。 |
把您自己的文档转换成向量,存储在本地或托管索引中,并为每个问题检索上下文。
| 能力 | 文件存储 | Pinecone | 说明 |
|---|---|---|---|
| 生成嵌入向量 | ✓ | ✓ | TsgcAIOpenAIEmbeddings.CreateEmbeddings 和 CreateEmbeddingsFromFile。 |
| 分块 | ✓ | ✓ | EmbeddingsOptions.ChunkSize,默认 4096 个字符。 |
| 嵌入模型 | ✓ | ✓ | EmbeddingsOptions.Model,默认为 text-embedding-3-small。 |
| 批量写入 | 关闭时写入 | 单次 REST upsert | 两种存储都提供 BeginAddData、AddData、EndAddData。 |
| 最近邻查询 | QueryData | QueryData | 返回最接近向量背后所存储的源文本。 |
| 为提示词检索上下文 | ✓ | ✓ | GetEmbedding(aInput, aParams) 对查询做嵌入并返回最佳匹配。 |
| 进度与取消 | ✓ | ✓ | OnCreateEmbeddingsStart、带继续标志的 OnCreateEmbeddingsProgress、OnCreateEmbeddingsStop。 |
| 逐块钩子 | ✓ | ✓ | OnBeforeCreateEmbedding 可以否决某个请求,OnAfterCreateEmbedding 报告请求和响应。 |
| 可离线工作 | ✓ | — | 文件存储在查询时无需网络。生成嵌入向量仍会调用提供商。 |
| 跨机器共享 | — | ✓ | 一个 Pinecone 索引可以由一个应用程序写入,由另一个读取。 |
| 配置 | VectorFileOptions.InputFilename、VectorFilename | PineconeOptions、PineconeIndexOptions | 两个文件,或者一个 API 密钥加上索引和项目 id。 |
| id 控制 | OnBeginAddData | OnBeginAddData | 设置起始 id 和 id 标签,使多次导入可以共用同一个存储。 |
三者共用同一个接口,因此聊天机器人、翻译器和助手都可以接受其中任意一个。
| 能力 | 系统 | Amazon | |
|---|---|---|---|
| 朗读字符串 | TextToSpeech | TextToSpeech | TextToSpeech |
| 需要凭据 | 否 | 服务账户 JSON | AWS 访问密钥和密钥 |
| 需要网络 | 否 | 是 | 是 |
| 按字符计费 | 无 | 按提供商定价 | 按提供商定价 |
| 语音选择 | 机器的语音设置 | Language、VoiceId、Gender | Engine、VoiceId |
| 输出格式 | 直接播放 | AudioEncoding、FileName | OutputFormat、FileName |
| SSML | — | — | TextType |
| 需要音频播放器 | 否 | 需要,AudioPlayer | 需要,AudioPlayer |
| 身份验证处理 | — | 签名 JWT,并缓存访问令牌 | AWS Signature Version 4 |
| 开始和停止事件 | ✓ | ✓ | ✓ |
两款取舍不同的录音组件,以及闭合语音回路的播放器。
| 能力 | 录制器 (MCI) | 录制器 (Wave) | 播放器 (MCI) |
|---|---|---|---|
| 使用的 Windows API | MCI | waveIn | MCI |
| 输出 | WAV 文件 | 实时流 | 播放文件 |
| 采样格式控制 | 固定,16 位单声道 22050 Hz | SampleRate、Channels、BitsPerSample | — |
| 静音检测 | MCIOptions.LevelMin、StopAfter | WaveOptions.LevelMin、StopAfter、WaitForAudio | — |
| 手动或自动 | RecorderOptions.Mode:camoManual 或 camoAuto | Start 和 Stop | Play |
| 并发实例 | ✓,每个组件使用唯一的 MCI 别名 | ✓ | ✓ |
| 播放结束通知 | — | — | ✓,真正的 MCI 通知,而非定时器 |
| 被语音组件使用 | 默认录制器 | 流式场景 | 云语音组件的输出 |
精确说明支持范围。
| 领域 | 细节 |
|---|---|
| 操作系统 | Windows、macOS、Linux、iOS 和 Android。SGC_AI 在所有平台上都有定义,因此 AI 单元可为 Win32、Win64、macOS(Intel 和 ARM)、Linux64、iOS 和 Android 编译。调用 Windows 音频和语音 API 的单元只在 Windows 上编译。访问提供商的 HTTPS 调用需要各平台通常的 TLS 配置,例如 Linux 上的 OpenSSL 库。 |
| Delphi | Delphi 7 到 RAD Studio 13 Florence,支持 VCL 和 FireMonkey,目标平台为 Win32 和 Win64。 |
| C++ Builder | C++ Builder 10.1 Berlin 到 C++ Builder 13,通过生成的头文件使用,目标平台为 Win32 和 Win64。 |
| AI 面板组件 | TsgcAIChat 声明为 [ComponentPlatforms(0)],因此 IDE 在所有平台上都会提供它。聊天机器人、翻译器、助手、嵌入向量、向量、文档提取、OCR 和云端语音组件声明为 [ComponentPlatforms(pidWin32 or pidWin64)]:IDE 在 Win32 和 Win64 窗体上提供它们,而它们的单元可为所有平台编译。TsgcAudioRecorderMCI、TsgcAudioRecorderWave、TsgcAudioPlayerMCI 和 TsgcTextToSpeechSystem调用 Windows 的 MCI、Wave 和 SAPI API,只存在于 Windows 上。 |
| MCP 组件 | TsgcWSAPIServer_MCP 和 TsgcWSAPIClient_MCP 声明为 [ComponentPlatforms(0)],因此没有平台限制,只要 sgc HTTP 栈能运行的地方就能运行,包括 Windows、macOS、Linux、iOS 和 Android。 |
| 内置运行时 | 已包含 sgcWebSockets Core 运行时,因此 HTTP 客户端栈、JSON 层以及 MCP 服务器 API 背后的 HTTP 服务器都无需单独授权。 |
| TLS | 所有提供商调用均使用 OpenSSL 或 SChannel,遵循 sgcWebSockets 的配置。 |
| 源代码 | 每个付费层级都提供完整的 Object Pascal 源代码。 |
| 再分发 | 您构建的二进制文件免版税,没有按席位或按服务器的运行时费用。 |