bricks/docs/ai/llmout.md
2025-11-13 18:04:58 +08:00

88 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LlmOut
LlmOut 是一个用于展示大模型输出内容的容器控件,能够根据返回的数据动态渲染文本、音频、视频、图片及错误信息。类型为**容器控件**,继承自 `bricks.VBox`
---
## 主要方法
- **`update(data)`**
更新控件显示内容。接收一个包含大模型响应数据的对象,支持以下字段:
- `content`: 主要应答文本Markdown 格式)
- `reasoning_content`: 推理过程文本
- `error`: 错误信息
- `audio`: 音频资源 URL 或 Base64 编码字符串
- `video`: 视频资源 URL 或 Base64 编码字符串
- `image`: 单个图像 URL 或图像 URL 数组
控件会自动创建对应的子控件(如 `AudioPlayer``VideoPlayer``Image``MdWidget` 等)并添加到内部布局中。
- **`clear_widgets()`**
清除当前所有子控件(来自父类 `VBox`),在每次更新前调用以确保界面刷新。
---
## 主要事件
无自定义事件。但可通过 Bricks 的事件系统监听其子控件触发的事件(例如音频播放完成、视频加载失败等)。
---
## 源码例子
```json
{
"id": "llm_output_area",
"widgettype": "LlmOut",
"options": {
"width": "100%",
"css": "llm-response-container"
},
"subwidgets": [],
"binds": [
{
"actiontype": "event",
"wid": "submit_btn",
"event": "click",
"target": "llm_output_area",
"dispatch_event": "loading:start",
"params": {
"message": "正在请求大模型响应..."
}
},
{
"actiontype": "urlwidget",
"wid": "submit_btn",
"event": "click",
"target": "llm_output_area",
"mode": "replace",
"options": {
"url": "/api/llm/response",
"method": "POST",
"params": {
"prompt": "data:text_input.getValue()"
}
},
"conform": {
"title": "确认提交",
"message": "您确定要发送此请求吗?",
"confirmText": "确定",
"cancelText": "取消"
}
}
]
}
```
> **注释说明:**
> - `widgettype: "LlmOut"` 表示使用已注册的 LlmOut 控件。
> - `options.width`: 设置控件宽度占满父容器。
> - `binds` 中定义了两个行为:
> 1. 当按钮 `submit_btn` 被点击时,向 `llm_output_area` 派发 `loading:start` 自定义事件,可用于显示加载状态。
> 2. 同时发起一个远程请求获取新的 LLM 响应,并将结果替换当前 `LlmOutputArea` 的内容。
> - `data:text_input.getValue()` 是运行时数据绑定语法,表示从 ID 为 `text_input` 的控件中获取用户输入作为请求参数。
> - 使用 `conform` 提供用户确认弹窗,防止误操作。
---
该控件适用于 AI 对话系统、智能助手界面等需要动态展示多模态输出的场景。