name: open-webui description: 完整的 Open WebUI API 集成,用于管理 LLM 模型、聊天补全、Ollama 代理操作、文件上传、知识库(RAG)、图像生成、音频处理和管道。当通过 REST API 与 Open WebUI 实例交互时使用此技能 - 列出模型、与 LLM 聊天、为 RAG 上传文件、管理知识集合或通过 Open WebUI 代理执行 Ollama 命令。需要 OPENWEBUI_URL 和 OPENWEBUI_TOKEN 环境变量或显式参数。 compatibility: 需要 Python 3.8+ 和 requests 库,或 curl。适用于任何 Open WebUI 实例(本地或远程)。外部实例需要互联网访问。
Open WebUI API 技能
完整的 Open WebUI API 集成 - 一个用于 LLM(包括 Ollama、OpenAI 和其他提供商)的统一接口。
何时使用
当用户想要时激活此技能:
- 从其 Open WebUI 实例列出可用模型
- 通过 Open WebUI 向模型发送聊天补全
- 为 RAG(检索增强生成)上传文件
- 管理知识集合并向其中添加文件
- 使用 Ollama 代理端点(生成、嵌入、拉取模型)
- 通过 Open WebUI 生成图像或处理音频
- 检查 Ollama 状态或管理模型(加载、卸载、删除)
- 创建或管理管道
不要为以下情况激活:
- 安装或配置 Open WebUI 服务器本身(使用系统管理技能)
- 关于 Open WebUI 是什么的一般问题(使用一般知识)
- 排除 Open WebUI 服务器故障(使用故障排除指南)
- 与 Open WebUI API 无关的本地文件操作
先决条件
环境变量(推荐)
export OPENWEBUI_URL="http://localhost:3000" # 您的 Open WebUI 实例 URL
export OPENWEBUI_TOKEN="your-api-key-here" # 来自 Open WebUI 的 设置 > 账户
认证
- 需要 Bearer Token 认证
- 从 Open WebUI 获取令牌:设置 > 账户
- 替代方案:用于高级用例的 JWT 令牌
激活触发器
应激活此技能的示例请求:
- “列出我的 Open WebUI 中所有可用模型”
- “通过 Open WebUI 向 llama3.2 发送聊天补全,提示为 ‘解释量子计算’”
- “将 /path/to/document.pdf 上传到 Open WebUI 知识库”
- “在 Open WebUI 中创建一个名为 ‘研究论文’ 的新知识集合”
- “使用 nomic-embed-text 模型为 ‘Open WebUI 很棒’ 生成嵌入”
- “通过 Open WebUI Ollama 代理拉取 llama3.2 模型”
- “从我的 Open WebUI 实例获取 Ollama 状态”
- “使用我的 Open WebUI 与 gpt-4 聊天,并在集合 ‘docs’ 上启用 RAG”
- “使用 Open WebUI 生成图像,提示为 ‘一座未来城市’”
- “从 Open WebUI Ollama 中删除 old-model”
不应激活此技能的示例请求:
- “如何安装 Open WebUI?”(安装/管理)
- “什么是 Open WebUI?”(一般知识)
- “配置 Open WebUI 环境变量”(服务器配置)
- “排除 Open WebUI 无法启动的原因”(服务器故障排除)
- “将 Open WebUI 与其他 UI 进行比较”(一般比较)
工作流程
1. 配置检查
- 验证
OPENWEBUI_URL和OPENWEBUI_TOKEN是否已设置 - 验证 URL 格式(http/https)
- 使用 GET /api/models 或 /ollama/api/tags 测试连接
2. 操作执行
使用 CLI 工具或直接 API 调用:
# 使用 CLI 工具(推荐)
python3 scripts/openwebui-cli.py --help
python3 scripts/openwebui-cli.py models list
python3 scripts/openwebui-cli.py chat --model llama3.2 --message "你好"
# 使用 curl(替代方案)
curl -H "Authorization: Bearer $OPENWEBUI_TOKEN" \
"$OPENWEBUI_URL/api/models"
3. 响应处理
- HTTP 200:成功 - 解析并呈现 JSON
- HTTP 401:认证失败 - 检查令牌
- HTTP 404:端点/模型未找到
- HTTP 422:验证错误 - 检查请求参数
核心 API 端点
聊天与补全
| 端点 | 方法 | 描述 |
|---|---|---|
/api/chat/completions |
POST | OpenAI 兼容的聊天补全 |
/api/models |
GET | 列出所有可用模型 |
/ollama/api/chat |
POST | 原生 Ollama 聊天补全 |
/ollama/api/generate |
POST | Ollama 文本生成 |
Ollama 代理
| 端点 | 方法 | 描述 |
|---|---|---|
/ollama/api/tags |
GET | 列出 Ollama 模型 |
/ollama/api/pull |
POST | 拉取/下载模型 |
/ollama/api/delete |
DELETE | 删除模型 |
/ollama/api/embed |
POST | 生成嵌入 |
/ollama/api/ps |
GET | 列出已加载模型 |
RAG 与知识
| 端点 | 方法 | 描述 |
|---|---|---|
/api/v1/files/ |
POST | 为 RAG 上传文件 |
/api/v1/files/{id}/process/status |
GET | 检查文件处理状态 |
/api/v1/knowledge/ |
GET/POST | 列出/创建知识集合 |
/api/v1/knowledge/{id}/file/add |
POST | 向知识库添加文件 |
图像与音频
| 端点 | 方法 | 描述 |
|---|---|---|
/api/v1/images/generations |
POST | 生成图像 |
/api/v1/audio/speech |
POST | 文本转语音 |
/api/v1/audio/transcriptions |
POST | 语音转文本 |
安全与边界
需要确认
在以下操作前始终确认:
- 删除模型 (
DELETE /ollama/api/delete) - 不可逆 - 拉取大型模型 - 可能需要大量时间/带宽
- 删除知识集合 - 数据丢失风险
- 上传敏感文件 - 隐私考虑
编辑与安全
- 切勿记录完整的 API 令牌 - 编辑为
sk-...XXXX格式 - 清理文件路径 - 上传前验证文件是否存在
- 验证 URL - 确保外部实例使用 HTTPS
- 优雅地处理错误 - 不要暴露包含令牌的堆栈跟踪
工作区安全
- 文件上传默认到工作区目录
- 访问工作区外的文件前需确认
- 无需 sudo/root 操作(纯 API 客户端)
示例
列出模型
python3 scripts/openwebui-cli.py models list
聊天补全
python3 scripts/openwebui-cli.py chat \
--model llama3.2 \
--message "解释 RAG 的好处" \
--stream
为 RAG 上传文件
python3 scripts/openwebui-cli.py files upload \
--file /path/to/document.pdf \
--process
向知识库添加文件
python3 scripts/openwebui-cli.py knowledge add-file \
--collection-id "research-papers" \
--file-id "doc-123-uuid"
生成嵌入(Ollama)
python3 scripts/openwebui-cli.py ollama embed \
--model nomic-embed-text \
--input "Open WebUI 非常适合 LLM 管理"
拉取模型(需要确认)
python3 scripts/openwebui-cli.py ollama pull \
--model llama3.2:70b
# 代理必须确认:"这将下载约 40GB。继续吗? [y/N]"
检查 Ollama 状态
python3 scripts/openwebui-cli.py ollama status
错误处理
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 401 未授权 | 无效或缺少令牌 | 验证 OPENWEBUI_TOKEN |
| 404 未找到 | 模型/端点不存在 | 检查模型名称拼写 |
| 422 验证错误 | 无效参数 | 检查请求体格式 |
| 400 错误请求 | 文件仍在处理中 | 等待处理完成 |
| 连接被拒绝 | URL 错误 | 验证 OPENWEBUI_URL |
边缘情况
文件处理竞态条件
为 RAG 上传的文件是异步处理的。在添加到知识库之前:
- 上传文件 → 获取 file_id
- 轮询
/api/v1/files/{id}/process/status直到status: "completed" - 然后添加到知识集合
大型模型下载
拉取模型(例如,70B 参数)可能需要数小时。始终:
- 开始前与用户确认
- 如果可能,显示进度
- 允许取消
流式响应
聊天补全支持流式传输。使用 --stream 标志进行实时输出,或为非流式收集完整响应。
CLI 工具参考
包含的 CLI 工具 (scripts/openwebui-cli.py) 提供:
- 从环境变量自动认证
- 具有可选格式的结构化 JSON 输出
- 所有命令的内置帮助
- 具有用户友好消息的错误处理
- 长操作的进度指示器
运行 python3 scripts/openwebui-cli.py --help 获取完整用法。