后端控制且 UI 兼容的 API 流程
warning
本教程是社区贡献的内容,不属于 Open WebUI 团队的官方支持 范围。它仅作为如何针对特定用例自定义 Open WebUI 的演示。想要贡献?请查看 贡献教程。
后端控制且 UI 兼容的 API 流程
本教程演示了如何实现 Open WebUI 对话的服务端编排,同时确保助手的回复在前端 UI 中正常显示。这种方法不需要前端参与,并且允许对聊天流进行完整的后端控制。 本教程已验证适用于 Open WebUI v0.6.15 版本。未来的版本可能会引入行为或 API 结构的更改。
前提条件
在跟随本教程之前,请确保您拥有:
- 一个正在运行的 Open WebUI 实例
- 有效的 API 身份验证令牌 (Token)
- 对 Open WebUI 后端 API 的访问权限
- 对 REST API 和 JSON 的基础了解
- 命令行工具:
curl、jq(可选,用于 JSON 解析)
概述
本教程描述了一个全面的 7 步过程,该过程支持 Open WebUI 对话的服务端编排,同时确保助手回复在前端 UI 中正常显示。
流程步骤
关键步骤如下:
- 使用用户消息创建新聊天 - 使用用户的输入初始化对话
- 使用助手消息丰富聊天响应 - 在内存中的响应对象中添加助手消息
- 使用助手消息更新聊天 - 将丰富后的聊天状态发送到服务器
- 触发助手补全 (Completion) - 生成实际的 AI 响应(可选集成知识库)
- 等待响应完成 - 监控助手响应直到完全生成
- 完成助手消息 - 将响应标记为已完成
- 获取并处理最终聊天 - 检索并解析完成的对话
这使得服务端编排成为可能,同时仍能让回复在前端 UI 中显示,就像通过正常用户交互生成的一样。
实现指南
关键步骤:使用助手消息丰富聊天响应
在触发补全之前,必须将助手消息作为关键前提条件添加到内存中的聊天响应对象中。这一步至关重要,因为 Open WebUI 前端期望助手消息存在于特定的结构中。
助手消息必须出现在以下两个位置:
chat.messages[]- 主消息数组chat.history.messages[<assistantId>]- 索引后的消息历史
助手消息的预期结构:
{
"id": "<uuid>",
"role": "assistant",
"content": "",
"parentId": "<user-msg-id>",
"modelName": "gpt-4o",
"modelIdx": 0,
"timestamp": "<currentTimestamp>"
}
如果没有这一丰富过程,即使补全成功,助手的响应也不会出现在前端界面中。