业务应用中的 AI 助手
ERP、CRM 和工程类应用加入一个助手,回答有关屏幕上数据的问题。助手以流式方式给出带代码和表格的答案,调用您应用程序的工具并把每次调用显示为一张卡片,用户可随时停止或重新生成答案。
- 流式 Markdown
- 工具调用卡片
- 任意 AI 提供程序
在您自己的应用程序中加入聊天功能。sgcChat 会在 AI 助手的答案流式到达时即时显示,支持 Markdown、代码块和工具调用,并通过在线状态、正在输入、已读回执和表情回应把用户彼此连接起来。同样的控件可运行在 VCL、FireMonkey、WinForms、WPF 和 Avalonia 上,Markdown 查看器也可以单独使用。
Result.AI := TsgcChatAI.Create(Result);
Result.AI.Conversation := Result.Conversation;
Result.AI.AssistantUserId := 'bot';
Result.AI.SystemPrompt := 'You are a helpful assistant.';
Result.AI.Provider := Result.Provider;
// the panel sends, stops, regenerates and edits through the binding
Result.Panel.AI := Result.AI;与任意语言模型对话,并提供用户在 AI 聊天应用中熟悉的各种操作。
AI 助手
AI 的答案是一小段一小段到达的,用户希望在答案生成的同时就能阅读。TsgcChatAI 把会话绑定到提供程序,发送历史记录和系统提示词,并在每一段到达时立即以格式化的 Markdown 显示。提供程序运行在工作线程中,窗口因此保持响应,聊天面板还为每条答案提供停止、重新生成以及编辑后重发。
AI 助手
sgcChat 不会把您绑定在某一家 AI 厂商上。TsgcChatAIProvider_AIChat 连接到 sgcWebSockets 的 TsgcAIChat,后者可与 OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral 通信。TsgcChatAIProvider_UICore 使用所有 sgcUI 产品共享的 AI 提供程序层,而 TsgcChatAIEventProvider 则让您在事件中从自己的后端进行流式传输。
TsgcChatAIProvider_AIChat 使用 sgcWebSockets 的 AI 提供程序TsgcChatAIProvider_UICore 使用 sgcUI 的 AI 提供程序层OnStream 事件使用您自己的后端应用程序用户之间的聊天,运行在您自己的服务器上。
团队聊天
服务台、现场团队和内部工具需要一种用户本来就会用的聊天。聊天视图会把每位作者的消息归在一起,并显示头像和名称,显示谁在线、离开或忙碌,显示谁正在输入,并把每条消息标记为已发送、已送达或已读。用户可以回复消息、对消息做出表情回应、编辑或删除自己的消息,以及发送附件。
团队聊天
聊天不依赖于某一台服务器。TsgcChatEventTransport 会把每条消息、输入状态变化、回执和表情回应以有文档说明的 JSON 帧交给您的代码。借助 sgcWebSockets,TsgcChatTransport_WebSocket 负责连接客户端,TsgcChatServer_WebSocket 则在同一频道的客户端之间转发消息,维护每位用户的在线状态,并把最近的消息发送给之后加入的用户。
聊天气泡背后的引擎,也可作为独立控件使用。
Markdown 查看器
发行说明、帮助文本和 AI 答案通常用 Markdown 编写。TsgcVCLMarkdownViewer 和 TsgcFMXMarkdownViewer 可显示标题、强调、引用、列表、任务列表、表格、链接和图片,并为 Pascal、C#、C++、JavaScript、Python、JSON、SQL 等语言的代码块做语法高亮。AppendMarkdown 会在文本到达时追加内容,用户可以选择并复制文本或整个代码块。
AppendMarkdown 和 Flush 实现流式显示OnLinkClick 事件主题、语言、辅助技术,以及无需窗口的输出。
外观与覆盖范围
聊天遵循 sgcUI 的浅色、深色和 Fluent 主题,因此与应用程序的其余部分保持一致。阿拉伯语或希伯来语的会话会镜像显示,自己的消息位于左侧。控件文本已翻译为英语、西班牙语、德语、法语、意大利语、葡萄牙语(巴西)、荷兰语、波兰语、土耳其语、日语、韩语和中文。
外观与覆盖范围
在 Windows 上,聊天视图对屏幕阅读器呈现为消息列表,包含每条消息的作者和时间,Markdown 查看器也会公开其文本。会话模型、Markdown 文档和视图不依赖 VCL 或 FireMonkey,因此服务可以无需窗口地把会话或 Markdown 文档渲染为 SVG 或 PNG,在 Linux64 上同样如此。
ERP、CRM 和工程类应用加入一个助手,回答有关屏幕上数据的问题。助手以流式方式给出带代码和表格的答案,调用您应用程序的工具并把每次调用显示为一张卡片,用户可随时停止或重新生成答案。
服务台、调度和现场服务类应用让用户无需第三方服务即可相互交流。WebSocket 转发服务运行在您自己的服务中,客户端显示在线状态、正在输入、已读回执和表情回应。
以 Markdown 编写的发行说明、帮助页面和消息,以与应用程序其余部分相同的外观显示,其中的高亮代码用户一键即可复制。
通过 sgcWebSockets 使用 OpenAI 回答,或者运行您自己的团队聊天服务器。
TsgcChatAIProvider_AIChat 把 TsgcChatAI 绑定连接到 sgcWebSockets 的 TsgcAIChat。修改 Provider 即可改用 Anthropic、Gemini、DeepSeek、Ollama、Grok 或 Mistral。
uses
SysUtils, Classes,
// sgcWebSockets
sgcAI, sgcAI_Chat,
// sgc
sgcChat_AI, sgcChatWS_AI;
procedure UseOpenAI(aAI: TsgcChatAI; const aApiKey: string);
var
oChat: TsgcAIChat;
oProvider: TsgcChatAIProvider_AIChat;
begin
oChat := TsgcAIChat.Create(aAI.Owner);
oChat.Provider := aicpOpenAI;
oChat.ChatOptions.ApiKey := aApiKey;
oChat.ChatOptions.Model := 'gpt-4o-mini';
oProvider := TsgcChatAIProvider_AIChat.Create(aAI.Owner);
oProvider.Chat := oChat;
aAI.Model := oChat.ChatOptions.Model;
aAI.Provider := oProvider;
end;转发服务器运行在服务或控制台程序中。每个客户端通过 TsgcChatTransport_WebSocket 连接到一个频道。
// the relay, in a service or a console program
function CreateRelay(aOwner: TComponent; aPort: Integer)
: TsgcChatServer_WebSocket;
var
oServer: TsgcWebSocketServer;
begin
oServer := TsgcWebSocketServer.Create(aOwner);
oServer.Port := aPort;
// the relay needs no main thread
oServer.NotifyEvents := neNoSync;
Result := TsgcChatServer_WebSocket.Create(aOwner);
Result.Server := oServer;
// the last 100 messages of every channel go to late joiners
Result.HistoryCount := 100;
oServer.Active := True;
end;.NET 控件使用相同的名称。此窗体承载一个 TsgcWinFormsChatPanel;WPF 和 Avalonia 面板的用法相同。
FConversation = new TsgcChatConversation();
FConversation.Users.Add("me", "You");
FConversation.Users.Add("bot", "Assistant");
FConversation.CurrentUserId = "me";
FPanel = new TsgcWinFormsChatPanel();
FPanel.Dock = DockStyle.Fill;
FPanel.Conversation = FConversation;
FPanel.Title = "Assistant";
FPanel.HeaderUserId = "bot";
Controls.Add(FPanel);
FProvider = new TsgcChatAIEventProvider();
FProvider.OnStream += DoStream;
FAI = new TsgcChatAI();
FAI.Conversation = FConversation;
FAI.AssistantUserId = "bot";
FAI.SystemPrompt = "You are a helpful assistant.";
FAI.Provider = FProvider;
// the panel sends, stops, regenerates and edits through the binding
FPanel.AI = FAI;演示项目随适用于 Delphi 和 C++ Builder 的 sgcUI 试用版一同安装。.NET 演示随 Registered 版 .NET 下载包提供。下方图片由 sgcChat 的无界面输出渲染。
绑定到 AI 提供程序的聊天面板:流式回答、停止、重新生成、编辑后重发以及工具调用卡片。提供 VCL 和 FireMonkey 版本,以及 C++ Builder 版本。
深色 Fluent 主题下的同一个会话。聊天遵循 sgcUI 的浅色、深色和 Fluent 主题。
基于 sgcWebSockets 的 VCL 客户端和控制台转发服务器:在线状态、正在输入、已读回执、表情回应、回复和附件。
单独使用的 Markdown 查看器,带有模拟的流式回答。提供 VCL 和 FireMonkey 版本,以及 C++ Builder 版本。
适用于 WinForms、WPF 和 Avalonia 的 MarkdownViewer、AIAssistant 和 TeamChat,以及 TeamChatServer 转发服务器。
sgcChat 包含在 sgcUI Enterprise 和 All-Access 套装中。它依赖 sgcUICore 和 sgcRichEdit,二者均已包含,安装程序会随之一并安装 sgcRichEdit 和 sgcPDF。没有免费的 Community 版。
包含 eSeGeCe 的所有产品,其中有 sgcUI Enterprise 和 sgcWebSockets,因此 sgcChat 的 AI 提供程序和 WebSocket 桥接开箱即用。
查看 All-Access →TsgcVCLChatPanel、TsgcVCLChatView、TsgcVCLChatInput 和 TsgcVCLMarkdownViewer。
TsgcFMXChatPanel、TsgcFMXChatView、TsgcFMXChatInput 和 TsgcFMXMarkdownViewer。
适用于 WinForms、WPF 和 Avalonia 的同款控件,例如 TsgcWinFormsChatPanel、TsgcWpfChatPanel 和 TsgcAvaloniaChatPanel。
TsgcChatAI 及其提供程序、TsgcChatEventTransport,以及带有 TsgcChatTransport_WebSocket 和 TsgcChatServer_WebSocket 的 sgcWebSockets 桥接。
| 目标 | 组件 | 版本和平台 |
|---|---|---|
| Delphi 7 至 13 | VCL 控件、模型、AI 和传输层单元 | Win32,以及 Delphi XE2 起的 Win64 |
| C++ Builder 2007 至 13 | 相同的类 | 生成的 .hpp 头文件和静态库 |
| FireMonkey | TsgcFMXChatPanel 及其他 FireMonkey 控件 | Delphi XE6 及更高版本 |
| Linux64 | 模型、Markdown 文档、视图、AI 和传输层核心、SVG 和 PNG 输出 | Delphi 10.2 及更高版本,无界面 |
| .NET 核心库 | esegece.sgcChat | .NET Standard 2.0、.NET Framework 4.7.2、.NET 6、8、9 和 10 |
| WinForms 和 WPF | TsgcWinFormsChatPanel, TsgcWpfChatPanel | Windows 上的 .NET Framework 4.7.2、.NET 8、9 和 10 |
| Avalonia | TsgcAvaloniaChatPanel | .NET 8、9 和 10 |
使用 sgcWebSockets 时,TsgcChatAIProvider_AIChat 使用 TsgcAIChat,它支持 OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral。不使用 sgcWebSockets 时,可通过 TsgcChatAIProvider_UICore 使用 sgcUI 的 AI 提供程序层,或者在 TsgcChatAIEventProvider 的 OnStream 事件中从任意后端进行流式传输。
仅桥接部分需要。WebSocket 传输层和转发服务器需要 sgcWebSockets,TsgcChatAIProvider_AIChat 需要其 AI 组件(Enterprise 版或 AI 包)。Markdown 查看器、聊天控件、AI 绑定和事件传输层无需它即可工作。
没有。sgcChat 属于 sgcUI Enterprise 和 All-Access。.NET 包仅提供 Registered 版,不在 nuget.org 上发布。请使用 sgcUI 试用版进行评估。
可以。TsgcVCLMarkdownViewer 和 TsgcFMXMarkdownViewer 本身就是独立的控件。设置 Markdown 即可显示文本,或调用 AppendMarkdown 在文本到达时追加内容。
与框架无关的单元可从 Delphi 10.2 起编译为 Linux64:会话模型、Markdown 文档、视图、AI 和传输层核心,并带有 SVG 和 PNG 输出。没有 Linux 控件。
包含。每个 sgcUI Enterprise 许可证都含完整源代码和 1 年更新。请参阅 sgcUI 价格页面。
sgcUI 帮助:Delphi、C++ Builder 和 .NET.
Delphi、C++ Builder 和 .NET,涵盖所有 sgcUI 产品。