UI 控件
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);