跳到主要内容

Open WebUI 集成

Open WebUI(126k★)是目前最受欢迎的自托管 AI 聊天界面。通过 Hermes Agent 内置的 API 服务器,你可以使用 Open WebUI 作为你代理的精美网页前端——支持对话管理、用户账户以及现代化的聊天界面。

架构

Open WebUI 与 Hermes Agent 的 API 服务器连接方式,就像连接 OpenAI 一样。你的代理会使用其完整的工具集(终端、文件操作、网络搜索、记忆、技能等)处理请求,并返回最终响应。

Open WebUI 以服务器到服务器的方式与 Hermes 通信,因此你无需为该集成配置 API_SERVER_CORS_ORIGINS

快速设置

1. 启用 API 服务器

将以下内容添加到 ~/.hermes/.env

API_SERVER_ENABLED=true
API_SERVER_KEY=your-secret-key

2. 启动 Hermes Agent 网关

hermes gateway

你应该会看到:

[API Server] API server listening on http://127.0.0.1:8642

3. 启动 Open WebUI

docker run -d -p 3000:8080 \
-e OPENAI_API_BASE_URL=http://host.docker.internal:8642/v1 \
-e OPENAI_API_KEY=your-secret-key \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main

4. 打开 UI

访问 http://localhost:3000。创建你的管理员账户(第一个用户将成为管理员)。你应该能在模型下拉菜单中看到你的代理(名称为你配置文件的名称,或默认配置文件为 hermes-agent)。开始聊天吧!

Docker Compose 设置

为了更持久的部署,创建一个 docker-compose.yml 文件:

services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
environment:
- OPENAI_API_BASE_URL=http://host.docker.internal:8642/v1
- OPENAI_API_KEY=your-secret-key
extra_hosts:
- "host.docker.internal:host-gateway"
restart: always

volumes:
open-webui:

然后执行:

docker compose up -d

通过 Admin UI 配置

如果你更倾向于通过 UI 而非环境变量来配置连接:

  1. 登录 Open WebUI,访问 http://localhost:3000
  2. 点击你的 个人资料头像Admin Settings
  3. 进入 Connections
  4. OpenAI API 下,点击 扳手图标(Manage)
  5. 点击 + Add New Connection
  6. 输入:
    • URL: http://host.docker.internal:8642/v1
    • API Key: 你的密钥或任意非空值(例如 not-needed
  7. 点击 勾号 以验证连接
  8. 保存

此时,你的代理模型应出现在模型下拉菜单中(名称为你配置文件的名称,或默认配置文件为 hermes-agent)。

注意

环境变量仅在 Open WebUI 首次启动时 生效。之后,连接设置将存储在其内部数据库中。如需后续修改,请使用 Admin UI 或删除 Docker 卷并重新开始。

API 类型:Chat Completions 与 Responses

当连接到后端时,Open WebUI 支持两种 API 模式:

模式格式适用场景
Chat Completions(默认)/v1/chat/completions推荐。开箱即用。
Responses(实验性)/v1/responses用于通过 previous_response_id 实现服务端对话状态。

这是默认模式,无需额外配置。Open WebUI 发送标准 OpenAI 格式的请求,Hermes Agent 会相应地响应。每次请求都包含完整的对话历史。

使用 Responses API

要使用 Responses API 模式:

  1. 进入 Admin SettingsConnectionsOpenAIManage
  2. 编辑你的 hermes-agent 连接
  3. API Type 从 "Chat Completions" 改为 "Responses (Experimental)"
  4. 保存

使用 Responses API 时,Open WebUI 以 Responses 格式发送请求(包含 input 数组和 instructions),Hermes Agent 可通过 previous_response_id 保留跨轮次的完整工具调用历史。

备注

目前,即使在 Responses 模式下,Open WebUI 仍由客户端管理对话历史——它在每次请求中发送完整的消息历史,而非使用 previous_response_id。Responses API 模式主要为未来前端演进提供兼容性支持。

工作原理

当你在 Open WebUI 中发送一条消息时:

  1. Open WebUI 发送 POST /v1/chat/completions 请求,包含你的消息和对话历史
  2. Hermes Agent 创建一个带有完整工具集的 AIAgent 实例
  3. 代理处理你的请求——可能调用工具(终端、文件操作、网络搜索等)
  4. 工具执行过程中,进度消息会实时流式传输到 UI,让你可以查看代理正在做什么(例如 `💻 ls -la`, `🔍 Python 3.12 release`
  5. 代理的最终文本响应流式返回 Open WebUI
  6. Open WebUI 在其聊天界面中显示响应

你的代理拥有与 CLI 或 Telegram 使用时相同的全部工具和功能——唯一的区别只是前端界面。

工具进度

启用流式传输(默认)后,你会看到工具运行时的简短内联指示——包含工具图标和其关键参数。这些信息会在代理最终答案之前出现在响应流中,让你清晰了解后台正在发生什么。

配置参考

Hermes Agent(API 服务器)

变量默认值描述
API_SERVER_ENABLEDfalse启用 API 服务器
API_SERVER_PORT8642HTTP 服务器端口
API_SERVER_HOST127.0.0.1绑定地址
API_SERVER_KEY(必需)认证用的 Bearer Token。需与 OPENAI_API_KEY 一致。

Open WebUI

变量描述
OPENAI_API_BASE_URLHermes Agent 的 API 地址(包含 /v1
OPENAI_API_KEY必须非空。需与 API_SERVER_KEY 一致。

故障排除

下拉菜单中没有显示模型

  • 检查 URL 是否包含 /v1 后缀http://host.docker.internal:8642/v1(不是仅 :8642
  • 验证网关是否正在运行curl http://localhost:8642/health 应返回 {"status": "ok"}
  • 检查模型列表curl http://localhost:8642/v1/models 应返回包含 hermes-agent 的列表
  • Docker 网络配置:在容器内部,localhost 指的是容器自身,而非宿主机。请使用 host.docker.internal--network=host

连接测试通过但模型未加载

这几乎总是因为缺少 /v1 后缀。Open WebUI 的连接测试仅是基本连通性检查——它不会验证模型列表功能是否正常。

响应耗时过长

Hermes Agent 可能在生成最终响应前执行多个工具调用(如读取文件、运行命令、网络搜索)。对于复杂查询,这是正常现象。当代理完成所有操作后,响应将一次性呈现。

“无效 API 密钥”错误

请确保 Open WebUI 中的 OPENAI_API_KEY 与 Hermes Agent 中的 API_SERVER_KEY 一致。

多用户设置(使用配置文件)

要为每个用户运行独立的 Hermes 实例——每个实例拥有独立的配置、记忆和技能——请使用 配置文件。每个配置文件会在不同端口上运行自己的 API 服务器,并自动将配置文件名称作为模型名称在 Open WebUI 中显示。

1. 创建配置文件并配置 API 服务器

hermes profile create alice
hermes -p alice config set API_SERVER_ENABLED true
hermes -p alice config set API_SERVER_PORT 8643
hermes -p alice config set API_SERVER_KEY alice-secret

hermes profile create bob
hermes -p bob config set API_SERVER_ENABLED true
hermes -p bob config set API_SERVER_PORT 8644
hermes -p bob config set API_SERVER_KEY bob-secret

2. 启动每个网关

hermes -p alice gateway &
hermes -p bob gateway &

3. 在 Open WebUI 中添加连接

管理员设置连接OpenAI API管理 中,为每个配置文件添加一个连接:

连接URLAPI 密钥
Alicehttp://host.docker.internal:8643/v1alice-secret
Bobhttp://host.docker.internal:8644/v1bob-secret

模型下拉菜单将显示 alicebob 作为独立模型。您可以通过管理员面板为 Open WebUI 用户分配模型,使每位用户拥有独立的 Hermes 代理。

自定义模型名称

模型名称默认为配置文件名称。如需覆盖,请在配置文件的 .env 中设置 API_SERVER_MODEL_NAME

hermes -p alice config set API_SERVER_MODEL_NAME "Alice's Agent"

Linux Docker(无 Docker Desktop)

在无 Docker Desktop 的 Linux 系统上,host.docker.internal 默认无法解析。可选方案:

# Option 1: Add host mapping
docker run --add-host=host.docker.internal:host-gateway ...

# Option 2: Use host networking
docker run --network=host -e OPENAI_API_BASE_URL=http://localhost:8642/v1 ...

# Option 3: Use Docker bridge IP
docker run -e OPENAI_API_BASE_URL=http://172.17.0.1:8642/v1 ...