Overview
Qt-UI AgentKit 产品概览
Qt-UI AgentKit 是面向 Qt Widgets 应用的智能体开发套件,帮助桌面产品接入 AI 对话、工具调用、审批确认、执行追踪和流程编排能力。
适用场景
- 工业软件中的设备状态分析、告警摘要和报告生成。
- 企业内部工具中的智能问答、操作建议和数据查询。
- Qt 桌面产品中的嵌入式 AI 助手。
- 需要工具调用、人工审批和流程追踪的 Agent 工作流。
核心能力
- 多种大语言模型接入,支持 Mock 离线模型、OpenAI-compatible 接口和 DeepSeek 接口。
- Mock 离线模型,便于无网络演示和开发调试。
- ChatPanel、模型配置、TraceView、ApprovalDialog 等 Qt Widgets 原生界面组件。
- Tool Registry 和函数工具调用。
- Prompt Template、输出解析、对话记忆、RAG 检索。
- 基于状态的工作流编排,支持条件路由、循环、检查点和人工审核。
Slogan
Build Intelligent Qt Applications, Visually and Natively.
Quick Start
快速接入
1. 配置模型
AgentKit 示例程序支持从本地配置读取模型信息。可以在运行目录或 UIGearsAgentKit 目录放置 agentkit.local.json。
OpenAI-compatible 配置示例:
{
"provider": "openai",
"baseUrl": "https://api.example.com/v1",
"apiKey": "your-api-key",
"model": "your-model",
"maxTokens": 1024,
"timeoutMs": 60000,
"stream": true
}
DeepSeek 配置示例:
{
"provider": "deepseek",
"baseUrl": "https://api.deepseek.com",
"apiKey": "your-deepseek-api-key",
"model": "deepseek-v4-flash",
"maxTokens": 1024,
"timeoutMs": 60000,
"stream": true
}
也可以通过环境变量配置真实模型。OpenAI-compatible provider 使用 OPENAI_API_KEY、OPENAI_BASE_URL、OPENAI_MODEL;DeepSeek provider 使用 DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL、DEEPSEEK_MODEL。
没有配置时,示例程序会自动使用 Mock 模型离线运行。
2. 创建聊天请求
using namespace UIGQtLib::QtAgent;
ChatRequest request;
request.addSystemMessage("你是 Qt 应用中的智能助手。");
request.addUserMessage("分析当前设备状态。");
ChatReply* reply = model->chat(request, {}, parent);
3. 注册工具
ToolRegistry registry;
registry.registerTool(new FunctionTool(
"query_device_status",
"查询设备状态。",
schema,
ToolPermission::ReadOnly,
[](const QJsonObject& args) {
return ToolResult{true, {}, "设备状态正常。"};
}
));
4. 运行示例程序
打开 AgentKit 示例程序后,可通过左侧能力树分别查看基础对话、模型能力、流程能力和设备监控分析示例。
Usage Guide
使用指南
模型接入
AgentKit 使用 ChatModel 抽象模型接口。首版内置:
MockChatModel:本地离线模型,用于演示和测试。OpenAICompatibleModel:兼容 OpenAI Chat Completions 协议的 HTTP 客户端。DeepSeekModel:DeepSeek 模型客户端,默认使用 OpenAI-compatible 接口https://api.deepseek.com和deepseek-v4-flash。
示例程序支持三种 provider:mock、openai、deepseek。配置文件 agentkit.local.json 中把 provider 设置为 deepseek 后,只需要填写 DeepSeek API Key 即可使用真实模型;也可以通过 DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL、DEEPSEEK_MODEL 环境变量配置。
工具调用
业务功能通过 AgentTool 或 FunctionTool 注册到 ToolRegistry。工具包含名称、说明、JSON Schema、权限和执行函数。
工具权限包括:
ReadOnlyWriteDestructiveExternalNetworkFileSystemSystemCommand
涉及写入、文件系统或更高风险操作时,应通过审批弹窗确认。
Trace 追踪
每次工具调用会生成 ToolCallTrace,用于展示工具名称、状态、权限、输入、输出、错误和耗时。ToolCallTraceView 可直接用于产品调试界面。
工作流编排
StateGraph 使用 QJsonObject 作为状态对象。节点读取状态并返回局部更新,边和条件边决定下一步执行位置。
适合实现:
- 多步骤任务。
- 条件路由。
- 循环直到完成。
- 人工审核。
- 工具节点和模型节点组合。
Capabilities Overview
AgentKit 能力模块
Qt-UI AgentKit 的接口位于命名空间 UIGQtLib::QtAgent。建议业务代码统一引入聚合头文件:
#include "QtAgentKit.h"
本章按 AgentKit 的能力模块说明 SDK 的核心类、接口方法、参数、返回值和常见调用示例。
类关系概览
ChatModel
├─ MockChatModel
├─ OpenAICompatibleModel
└─ DeepSeekModel
AgentTool
└─ FunctionTool
ToolRegistry
AgentExecutor
PromptTemplate
ChatPromptTemplate
RunnableChain
RunnableParallel
StringOutputParser
JsonOutputParser
StructuredOutputParser
ChatMemory
InMemoryRetriever
SimpleRagChain
StateGraph
MemoryCheckpointer
AgentChatPanel
ModelConfigWidget
ToolCallTraceView
ApprovalDialog
选型建议
| 场景 | 推荐模块 |
|---|---|
| 只需要普通 AI 对话 | ChatRequest + OpenAICompatibleModel 或 DeepSeekModel |
| 需要在 UI 中显示流式输出 | ChatReply + AgentChatPanel |
| 需要模型调用本地业务函数 | ToolRegistry + FunctionTool + AgentExecutor |
| 需要高风险操作确认 | ToolPermission + ApprovalDialog |
| 需要知识库问答 | InMemoryRetriever + SimpleRagChain |
| 需要多步骤可追踪流程 | StateGraph + GraphTrace |
| 需要保存流程状态 | MemoryCheckpointer |
| 需要快速验证产品能力 | MockChatModel + 示例页面 |
Model Chat
模型对话
模型对话模块负责统一不同模型 Provider 的调用方式。开发阶段可使用 MockChatModel 离线验证,也可以使用 OpenAICompatibleModel 接入兼容 OpenAI Chat Completions 协议的服务;对于 DeepSeek,AgentKit 提供了独立的 DeepSeekModel 入口,内部复用 OpenAI-compatible 请求格式。
核心类
| 类名 | 说明 |
|---|---|
ChatRequest |
保存 system、user、assistant 等消息,并导出为模型接口需要的 JSON。 |
ModelConfig |
保存 provider、baseUrl、apiKey、model、maxTokens、timeoutMs 等模型配置。 |
ChatReply |
表示一次模型调用的异步结果,通过 Qt signal 返回流式片段、最终结果或错误。 |
ChatModel |
抽象模型基类。 |
MockChatModel |
离线模型,适合功能验证、单元测试和无网络环境。 |
OpenAICompatibleModel |
OpenAI-compatible HTTP 模型实现。 |
DeepSeekModel |
DeepSeek 模型实现,默认使用 https://api.deepseek.com 和 deepseek-v4-flash。 |
支持的 Provider
| Provider | 模型类 | 默认 Base URL | 默认模型 | 说明 |
|---|---|---|---|---|
mock |
MockChatModel |
无 | 无 | 本地离线演示,不需要网络和 API Key。 |
openai |
OpenAICompatibleModel |
https://api.openai.com/v1 |
gpt-4.1-mini |
适用于 OpenAI 或兼容 OpenAI Chat Completions 的服务。 |
deepseek |
DeepSeekModel |
https://api.deepseek.com |
deepseek-v4-flash |
适用于 DeepSeek OpenAI-compatible 接口。 |
ChatRequest 常用方法
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
addMessage(const ChatMessage& message) |
追加一条完整消息。 | message: 消息对象。 |
无 |
addSystemMessage(const QString& content) |
追加 system 消息。 | content: 系统提示词。 |
无 |
addUserMessage(const QString& content) |
追加 user 消息。 | content: 用户输入。 |
无 |
addAssistantMessage(const QString& content) |
追加 assistant 消息。 | content: 助手回复。 |
无 |
clear() |
清空全部消息。 | 无 | 无 |
messages() const |
获取消息列表。 | 无 | const QVector<ChatMessage>& |
messagesJson() const |
导出 OpenAI-compatible 消息 JSON。 | 无 | QJsonArray |
ChatModel 常用方法
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
setConfig(const ModelConfig& config) |
设置模型配置。 | config: 模型配置。 |
无 |
config() const |
获取当前模型配置。 | 无 | ModelConfig |
chat(const ChatRequest& request, const QVector<ToolDefinition>& tools, QObject* parent) |
发起对话请求。 | request: 对话消息。tools: 可选工具定义。parent: Qt 对象父级。 |
ChatReply* |
ChatReply 信号和方法
| 接口 | 说明 | 参数 | 返回值 |
|---|---|---|---|
deltaReceived(const QString& delta) |
流式输出片段。 | delta: 新增文本。 |
signal |
responseReceived(const QJsonObject& response) |
收到完整原始 JSON 响应。 | response: 原始响应。 |
signal |
finished(const QString& text) |
模型调用完成。 | text: 最终文本。 |
signal |
failed(const QString& error) |
模型调用失败。 | error: 错误说明。 |
signal |
canceled() |
请求被取消。 | 无 | signal |
cancel() |
取消当前请求。 | 无 | slot |
isCanceled() const |
判断是否已取消。 | 无 | bool |
finalText() const |
获取最终文本。 | 无 | QString |
rawResponse() const |
获取原始响应 JSON。 | 无 | QJsonObject |
示例
#include "QtAgentKit.h"
using namespace UIGQtLib::QtAgent;
auto* model = new OpenAICompatibleModel(this);
ModelConfig config;
config.provider = "openai";
config.baseUrl = "https://api.example.com/v1";
config.apiKey = qgetenv("OPENAI_API_KEY");
config.model = "gpt-5.4-mini";
config.stream = true;
model->setConfig(config);
ChatRequest request;
request.addSystemMessage("你是一个 Qt 桌面应用助手。");
request.addUserMessage("说明如何在 Qt 中接入 AgentKit。");
ChatReply* reply = model->chat(request, {}, this);
connect(reply, &ChatReply::deltaReceived, this, [](const QString& delta) {
qDebug() << delta;
});
connect(reply, &ChatReply::finished, this, [](const QString& text) {
qDebug() << "finished:" << text;
});
connect(reply, &ChatReply::failed, this, [](const QString& error) {
qWarning() << error;
});
示例:接入 DeepSeek
#include "QtAgentKit.h"
using namespace UIGQtLib::QtAgent;
auto* model = new DeepSeekModel(this);
ModelConfig config;
config.provider = "deepseek";
config.baseUrl = "https://api.deepseek.com";
config.apiKey = qgetenv("DEEPSEEK_API_KEY");
config.model = "deepseek-v4-flash";
config.stream = true;
model->setConfig(config);
ChatRequest request;
request.addSystemMessage("你是一个 Qt 桌面应用助手。");
request.addUserMessage("用三句话说明 AgentKit 的作用。");
ChatReply* reply = model->chat(request, {}, this);
connect(reply, &ChatReply::deltaReceived, this, [](const QString& delta) {
qDebug() << delta;
});
connect(reply, &ChatReply::failed, this, [](const QString& error) {
qWarning() << error;
}); Prompt and Chain
Documentation is not configured yet.
Output Parser
Documentation is not configured yet.
Memory and RAG
Documentation is not configured yet.
Tool Calling and Approval
Documentation is not configured yet.
State Workflow
Documentation is not configured yet.
UI Widgets
UI 控件
AgentKit 提供 Qt Widgets 控件,便于把 Agent 能力嵌入桌面应用。
核心控件
| 类名 | 说明 |
|---|---|
AgentChatPanel |
聊天面板,包含历史消息、输入框、发送、停止、清空按钮。 |
ModelConfigWidget |
模型配置面板。 |
ToolCallTraceView |
工具调用 Trace 表格。 |
ApprovalDialog |
工具审批弹窗。 |
AgentChatPanel 方法和信号
| 接口 | 说明 | 参数 | 返回值 |
|---|---|---|---|
appendUserMessage(const QString& text) |
添加用户消息。 | text: 消息内容。 |
无 |
appendSystemMessage(const QString& text) |
添加系统消息。 | text: 消息内容。 |
无 |
beginAssistantMessage() |
开始助手消息块。 | 无 | 无 |
appendDelta(const QString& text) |
追加流式片段。 | text: 文本片段。 |
无 |
finishAssistantMessage() |
结束助手消息块。 | 无 | 无 |
setRunning(bool running) |
设置运行状态,控制按钮状态。 | running: 是否运行中。 |
无 |
sendRequested(const QString& text) |
用户点击发送。 | text: 输入内容。 |
signal |
stopRequested() |
用户点击停止。 | 无 | signal |
clearRequested() |
用户点击清空。 | 无 | signal |
ModelConfigWidget 方法
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
config() const |
获取模型配置。 | 无 | ModelConfig |
setConfig(const ModelConfig& config) |
设置模型配置。 | config: 模型配置。 |
无 |
provider() const |
获取当前 provider,返回 mock、openai 或 deepseek。 |
无 | QString |
useOpenAI() const |
判断当前是否使用 OpenAI-compatible provider。 | 无 | bool |
useDeepSeek() const |
判断当前是否使用 DeepSeek provider。 | 无 | bool |
configChanged() |
配置变化通知。 | 无 | signal |
ToolCallTraceView 方法
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
addTrace(const ToolCallTrace& trace) |
添加一条工具调用记录。 | trace: Trace 对象。 |
无 |
clearTraces() |
清空记录。 | 无 | 无 |
ApprovalDialog 方法
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
ApprovalDialog(const ApprovalRequest& request, QWidget* parent) |
构造审批弹窗。 | request: 审批对象。parent: 父控件。 |
对象实例 |
ask(const ApprovalRequest& request, QWidget* parent) |
显示审批弹窗并返回结果。 | request: 审批对象。parent: 父控件。 |
bool |
示例:嵌入聊天面板和 Trace 表格
auto* chat = new AgentChatPanel(this);
auto* traceView = new ToolCallTraceView(this);
auto* executor = new AgentExecutor(this);
executor->setModel(model);
executor->setToolRegistry(registry);
connect(chat, &AgentChatPanel::sendRequested, this, [chat, executor](const QString& text) {
chat->appendUserMessage(text);
chat->beginAssistantMessage();
chat->setRunning(true);
executor->run(text);
});
connect(chat, &AgentChatPanel::stopRequested, executor, &AgentExecutor::cancel);
connect(executor, &AgentExecutor::assistantDelta, chat, &AgentChatPanel::appendDelta);
connect(executor, &AgentExecutor::assistantFinished, this, [chat](const QString&) {
chat->finishAssistantMessage();
chat->setRunning(false);
});
connect(executor, &AgentExecutor::traceAdded, traceView, &ToolCallTraceView::addTrace); License
授权说明
Qt-UI AgentKit 提供试用版、基础版和完整版。
试用版
用于评估、学习和原型验证,不提供源码,不支持商用。下载内容后续补充,当前页面会保留试用入口。
基础版
包含 AgentKit 单产品完整源码,支持单项目商用,包含 1 年版本免费升级权益,提供邮件 + 工单支持。
完整版
统一价格为 ¥12,800,包含 StyleKit、WidgetKit、ChartKit、AgentKit 全系列 4 款产品完整源码,不限商用项目数量,包含 1 年版本免费升级权益,提供邮件 + 工单 + 优先支持。
下载说明
商业源码包下载内容后续补充。购买记录、下载入口和更新权益将在会员中心与订单查询页面中展示。