如何使用 Ollama 配合图形界面(以及托管备用方案)
Ollama 本身在终端中运行,但任何支持 OpenAI 格式的聊天前端都可以覆盖在其之上。以下是如何设置一个,以及如何将同一窗口指向托管接口。

无需绑卡。注册后,一键领取 $0.50 免费试用额度(每人限领一次)。
获取 API 密钥要点
- Ollama 没有内置的聊天窗口;你需要添加如 Open WebUI 这样的前端。
- 前端可以与 Ollama 或任何 OpenAI 兼容的 URL 通信,因此一个图形界面可以支持两个连接。
- 对于托管连接,使用基础 URL https://api.ollamansfw.com/v1 和模型 ID uncensored。
- 流式输出、函数调用和 JSON 模式都可以通过托管接口配合标准客户端设置使用。
为什么 Ollama 需要单独的图形界面
如果你想了解 如何使用 GUI 运行 ollama,首先要接受的事实是:Ollama 项目是一个服务器和命令行工具。它在本地端口上拉取模型并响应请求。聊天窗口是其他软件的工作,而且有几个不错的选择。
这种分离很有用。因为 Ollama 在你自己的机器上暴露了 OpenAI 风格的 API(默认在端口 11434 下的 /v1 路径),任何允许你设置自定义 OpenAI 基础 URL 的前端都可以使用它。同样的特性意味着你可以稍后将该前端指向其他地方。本文首先介绍本地设置,然后将托管接口作为第二个连接添加。
选择前端
三类工具涵盖了大多数人的需求。请查看每个项目的官方文档以获取最新的安装步骤,因为它们经常更改。
- Open WebUI。 自托管的浏览器界面。它直接支持 Ollama,也接受任何 OpenAI 兼容的连接。通常使用 Docker 或 pip 安装。
- 桌面客户端。 原生应用如 Chatbox 或 Msty 允许你通过设置界面添加 Ollama 服务器或 OpenAI 兼容提供商。无需运行服务器。
- 角色扮演和写作前端。 SillyTavern 允许你添加一个兼容 OpenAI 的接口,类似的工具也适用于长篇小说和面向成人的伴侣角色。
如果你不想使用 Docker 容器,桌面客户端是最短的路径。如果你想要一个供网络上多个人使用的共享界面,Open WebUI 是通常的选择。
使用 Open WebUI 的分步指南
- 安装并启动 Ollama,然后使用
ollama pull命令拉取模型。在继续之前,确认它在终端中响应。 - 启动 Open WebUI。使用 Docker 时,通常的模式是发布端口并挂载卷以保存其数据。
- 打开网页,创建第一个本地账户(将成为管理员),并在管理员设置中查找连接区域。
- 检查 Ollama URL 是否指向运行 Ollama 的机器。当两者在同一主机上时,这通常是端口 11434 上的本地地址。当 Open WebUI 在容器内运行时,
localhost意味着容器本身,这是模型列表为空的最常见原因。 - 重新加载,从下拉菜单中选择模型,并发送消息。
这是一个完整的本地图形界面。数据不会离开你的计算机,速度取决于你的 GPU 或 CPU。
添加托管的 OpenAI 兼容连接
接下来是备用方案。假设你本地运行的模型对于长场景来说太小,或者你的 GPU 正忙于渲染。你可以向同一个 GUI 添加第二个连接。为此你需要一个 API 密钥,可以通过 Google 或邮箱和密码注册后在 API 密钥页面 领取。只需一键即可获得 $0.50 试用额度,无需付款,有效期为 7 天。
在 Open WebUI 中,使用以下值添加 OpenAI 连接:
- 基础 URL:
https://api.ollamansfw.com/v1 - API 密钥:你的密钥,作为
Authorization: Bearer发送 - 模型:
uncensored
如果在启动容器时更喜欢使用环境变量,Open WebUI 为此记录了 OPENAI_API_BASE_URL 和 OPENAI_API_KEY:
docker run -d -p 3000:8080 \
-e OPENAI_API_BASE_URL=https://api.ollamansfw.com/v1 \
-e OPENAI_API_KEY=YOUR_KEY \
-v open-webui:/app/backend/data \
--name open-webui ghcr.io/open-webui/open-webui:main
# model to pick in the UI: uncensored
重新加载后,uncensored 应出现在本地模型旁边的下拉菜单中。前端通过 GET /v1/models 找到它。你现在可以在同一对话列表中在本地模型和托管模型之间切换。
先在图形界面之外测试接口
当图形界面显示模糊错误时,最快的判断方法是进行直接调用,以确认问题是出在密钥还是接口上。以下是使用 curl 的流式请求:
curl -N https://api.ollamansfw.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"stream": true,
"messages": [{"role": "user", "content": "Write two sentences about a lighthouse keeper."}]
}'
你应该看到一系列以使用信息结尾的 data: 行。如果这有效,则密钥和 URL 没问题,问题出在前端。故障排除页面 涵盖了典型的错误,如缺少 /v1 或密钥中的尾随空格。
你用于本地模型的客户端设置大多可以沿用。温度、top_p、停止序列、种子以及惩罚参数都会传递给模型。
在你的代码中使用托管接口
图形界面只是一个客户端。脚本和小应用是另一种客户端,托管接口与标准 OpenAI SDK 兼容。支持函数调用和 JSON 模式,如果你的图形界面或代理使用它们,这很重要。
from openai import OpenAI
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": "Reply with a JSON object with keys title and summary."},
{"role": "user", "content": "A short story about a lighthouse keeper."},
],
)
print(resp.choices[0].message.content)
Node.js 中的模式相同:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.ollamansfw.com/v1",
apiKey: process.env.API_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [{ role: "user", content: "Name three sailing knots." }],
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content ?? "");
}
快速入门 有更多示例,包括使用 tool_choice 的工具调用。
常见问题及解决方法
图形界面设置中的大多数故障来自简短的原因列表。
- 本地连接的模型列表为空。 前端无法连接到 Ollama。检查地址,并记住容器化的图形界面看不到你的主机作为
localhost。 - 托管端点返回 401。 密钥缺失或错误。再次粘贴它,不要带空格,并确保图形界面将其作为 bearer token 发送。
- 每个请求都返回 404。 base URL 可能缺少
/v1,或者包含了两次。 - 回复停止或界面挂起。 一些前端通过代理缓冲流式输出。尝试上面的直接 curl 测试,如果它流式传输,请检查你的图形界面前面的代理设置。
- 本地回复缓慢。 模型对于你的 VRAM 来说太大,正在溢出到系统内存。选择较小的量化,或将该聊天切换到托管连接。
对于小说和成人伴侣应用,请牢记一条规则:托管模型在合法成人使用时不会拒绝内容,但涉及未成年人的性内容永远不允许,服务将其作为硬性限制执行。
图形界面中需要注意的限制和费用
前端可以同时发送多个请求,例如当它们在后台生成聊天标题时,主回复正在流式传输。完整密钥允许 8 个并发请求和每分钟 300 个请求。试用密钥允许 2 个并发和每分钟 60 个。流式请求在其流结束之前保持其槽位。如果你超过限制,你会得到带有代码 rate_limited 或 concurrency 的 HTTP 429,以及在临时过载时带有 Retry-After: 5 的 429。在试用密钥上关闭后台标题生成是一个简单的修复方法。
费用按 token 计算:每 1M 输入 0.15 美元,每 1M 输出 0.50 美元。包含 2,000 个 token 历史记录和 500 个 token 回复的聊天回合成本为 0.0003 美元加 0.00025 美元,即 0.00055 美元。响应头包括 X-Balance-USD,因此你可以观察你的信用额度减少。充值详情见 定价页面。该站点仅支持加密货币:TRC20 上的 USDT 或 Base 上的 USDC,任何整金额从 $20 到 $500。
上下文窗口为 100,000 token,所以非常长的聊天随着历史记录的增长,每次转动的成本会更高,因为每次都会发送整个历史记录。大多数图形界面都有一个设置来修剪或总结旧消息。
更多指南
问答
Ollama 有自己的图形界面吗?
Ollama 主要是一个服务器和命令行工具。聊天窗口来自独立的项目,例如 Open WebUI 或你连接到的桌面客户端。
一个 GUI 能同时使用本地模型和托管模型吗?
可以,如果前端支持多个连接。将 Ollama 添加为一个连接,将 OpenAI 兼容的 URL 添加为另一个连接,然后为每个聊天选择模型。
为什么我的 GUI 在托管接口上没有显示模型?
检查 base URL 是否以 /v1 结尾,密钥没有多余空格,并且 GUI 被允许调用 GET /v1/models。如果仍然失败,请手动输入模型 ID uncensored。
如果我收到 HTTP 429 该怎么办?
你触发了速率或并发限制。减少并行请求,等待 Retry-After 中指定的秒数,然后重试。