sgcAI 功能矩阵
sgcAI 的全部能力,对应到 SGC AI 面板页上的 15 个组件。通过一个组件与七家模型提供商聊天,托管或使用 Model Context Protocol 服务器,把您自己的数据索引为向量,并用语音驱动整套流程。每份授权都提供完整源代码。点击组件即可进入它自己的页面,查看属性、事件和示例。
sgcAI 的全部能力,对应到 SGC AI 面板页上的 15 个组件。通过一个组件与七家模型提供商聊天,托管或使用 Model Context Protocol 服务器,把您自己的数据索引为向量,并用语音驱动整套流程。每份授权都提供完整源代码。点击组件即可进入它自己的页面,查看属性、事件和示例。
sgcAI 是自包含的。下表中的所有内容都在一个包里交付,同时附带这些组件所基于的 sgcWebSockets Core 运行时。无需购买基础授权。
sgcAI 是 Windows 产品。AI 包仅在 MSWINDOWS 下编译,因此组件面板上 15 个组件中有 13 个只为 Win32 和 Win64 注册,无法为 macOS、Linux、iOS 或 Android 构建。
两个 Model Context Protocol 组件 TsgcWSAPIServer_MCP 和 TsgcWSAPIClient_MCP 是例外。它们没有平台限制,只要 sgc HTTP 栈能运行的地方就能运行。参见下方的平台与语言。
它们全部注册在名为 SGC AI 的同一个面板页上。
| 组件 | 类 | 家族 | 描述 |
|---|---|---|---|
| AI Chat | TsgcAIChat | 聊天 | 一个聊天客户端,同时支持 OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral。 |
| 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-chat 和 deepseek-reasoner。 |
| 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。后两者不设置时采用提供商的默认值。 |
| 语音转文本 | TsgcAIOpenAIChatBot、TsgcAIOpenAITranslator | Whisper 转写和翻译,并提供事件以便在使用前审阅文本。 |
| 检索增强回答 | TsgcAIOpenAIChatBot | 关联一个 Embeddings 组件,检索到的上下文会在调用模型之前加入。 |
| 助手、线程和运行 | TsgcAIOpenAIAssistant | CreateAssistant、CreateThread、CreateMessageText、CreateRun、CreateRunAndWait。 |
| File Search 和 Code Interpreter | TsgcAIOpenAIAssistant | AssistantOptions.Tools,并用 UploadVectorStoreFile 添加您自己的文档。 |
| 函数调用 | TsgcAIOpenAIAssistant | Tools.Functions 加上 OnFunctionCall 事件。 |
AI 客户端用来访问工具、提示词和资源的协议的两端。
| 能力 | 客户端 | 服务器 | 说明 |
|---|---|---|---|
| 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 | 列出并调用。服务器触发事件,由您的代码完成实际工作。 |
| 提示词 | 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 头部。 |
把您自己的文档转换成向量,存储在本地或托管索引中,并为每个问题检索上下文。
| 能力 | 文件存储 | 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。SGC_AI 只在 MSWINDOWS 下定义,它控制着整个 SGC AI 面板的注册。AI 组件没有 macOS、Linux、iOS 或 Android 版本,唯一的例外是下方的 MCP 组件对。 |
| Delphi | Delphi 7 到 RAD Studio 13 Florence,支持 VCL 和 FireMonkey,目标平台为 Win32 和 Win64。 |
| C++ Builder | C++ Builder 10.1 Berlin 到 C++ Builder 13,通过生成的头文件使用,目标平台为 Win32 和 Win64。 |
| AI 面板组件 | 15 个组件中有 13 个声明为 [ComponentPlatforms(pidWin32 or pidWin64)]。聊天、智能体、嵌入向量、向量、语音和音频组件仅支持 Win32 和 Win64。 |
| 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 源代码。 |
| 再分发 | 您构建的二进制文件免版税,没有按席位或按服务器的运行时费用。 |