Ollama API 与 OpenAI API:接口与代码
Ollama API 与 OpenAI API 的问题归结为两种请求格式和两种运行模型的位置。Ollama 拥有自己的原生 API 以及 OpenAI 兼容层,因此迁移到托管的 OpenAI 风格接口可能涉及 Base URL 和密钥的更改。


无需绑卡。注册后,一键领取 $0.50 免费试用额度(每人限领一次)。
获取 API 密钥要点
- Ollama 在 /api 下有原生路由,在 /v1 下有 OpenAI 兼容层;为 OpenAI SDK 编写的客户端通常两者均可使用。
- 原生 Ollama 流式输出换行分隔的 JSON,而 OpenAI 格式流式输出服务器发送事件(SSE)。
- 从本地迁移到托管意味着更改 Base URL、密钥和模型名称,而不是代码。
- 本地部署将数据保留在你的机器上;托管部署消除了硬件工作,但增加了按 token 计费。
简短说明
两者都要求你 POST 消息列表并获取文本返回。区别在于请求的结构、服务器所在的位置以及谁为 GPU 付费。Ollama 在你自己的计算机上运行模型,并在 11434 端口监听。OpenAI API 是一项托管服务,拥有自己的付费模型。在 ollama api 与 openai api 的比较中,人们经常忽略第三点:Ollama 还暴露了 OpenAI 兼容的路由,因此两种格式存在重叠。
正是这种重叠使得迁移成本很低。如果你的应用已经使用 OpenAI SDK,你可以今天将其指向本地 Ollama,明天指向兼容 OpenAI 的托管 URL。本站点的托管接口就是其中之一。它提供单一模型 uncensored,地址为 https://api.ollamansfw.com/v1,它不是 OpenAI、Meta 或任何其他实验室的官方产品。
逐接口差异
| 任务 | Ollama 原生 | OpenAI 风格 |
|---|---|---|
| 聊天 | POST /api/chat | POST /v1/chat/completions |
| 单条提示词 | POST /api/generate | POST /v1/responses 或 聊天补全 |
| 列出模型 | GET /api/tags | GET /v1/models |
| 认证 | 默认无 | Authorization: Bearer key |
| 流式输出 | 换行分隔的 JSON | 服务器发送事件,以 done 标记结尾 |
| 模型名称 | 你拉取的任意模型,例如 llama3 | 提供商列出的任意模型 |
Ollama 还在同一端口提供 /v1/chat/completions 和 /v1/models,这使得 OpenAI 客户端能够与之兼容。对于原生调用,其默认设置为流式输出,因此当你需要单个 JSON 回复时,请设置 stream: false。
托管接口实现了 POST /v1/chat/completions、POST /v1/responses 和 GET /v1/models,以及 GET /v1/balance 处的余额检查。完整列表请参阅 API 文档。
同一种请求的三种方式
Python 中的原生 Ollama 用法:
import requests
r = requests.post(
"http://localhost:11434/api/chat",
json={
"model": "llama3",
"messages": [{"role": "user", "content": "Say hello in five words."}],
"stream": False,
},
)
print(r.json()["message"]["content"])OpenAI SDK,本地和托管设置并排显示。仅注释行发生变化:
from openai import OpenAI
# Local Ollama through its OpenAI-compatible layer:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
# Hosted endpoint, same code from here on:
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored", # local would be e.g. "llama3"
messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(resp.choices[0].message.content)以及针对托管接口的 curl 命令,开启流式输出:
curl https://api.ollamansfw.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":true}'原生侧的解析方式不同:每行流式数据都是一个包含 message.content 的 JSON 对象,最后一行包含 done: true。在 OpenAI 格式中,每个事件以 data: 开头,携带 choices[0].delta.content 片段,流以 [DONE] 结束。使用 SDK 时,你都不会看到这些。
每种方式适用的场景
当隐私是首要考虑因素,或者你拥有具有足够内存来运行所需模型的 GPU,或者你经常折腾许多模型时,本地 Ollama 是合适的选择。没有任何数据离开你的机器,也没有按 token 计费。成本体现为硬件、电力和你的时间。我们的 使用 GUI 操作 Ollama 指南涵盖了该路径的友好方面。
当你缺乏硬件、需要大量并发请求、为其他人运行机器人或服务,或需要一个不依赖你的笔记本电脑保持唤醒的稳定 URL 时,托管的 OpenAI 兼容接口更适合。全功能密钥允许 8 个并发请求和每分钟 300 个请求。上下文窗口为 100,000 token,这比许多本地设置能容纳在内存中的更多。
许多人同时使用两者:本地用于实验,托管用于需要保持在线的任务。如果你正在权衡其他本地工具,请阅读 Ollama 软件替代方案。
从本地 Ollama 迁移到托管
- 首先切换到 OpenAI 格式。 如果你的代码调用
/api/chat,将其移动到指向 Ollama/v1路由的 OpenAI SDK。确认其在本地仍有效。 - 获取密钥。 注册并在 API 密钥页面 领取 $0.50 试用额度。无需付款,有效期为 7 天。
- 更改三个值。 Base URL 改为
https://api.ollamansfw.com/v1,密钥改为你的密钥,模型改为uncensored。 - 检查参数。 Temperature、top_p、stop、seed 和惩罚参数会透传。本地独有选项如 Ollama 的
num_ctx或keep_alive不适用;窗口固定为 100,000 token。 - 添加重试逻辑。 托管 API 在超过限制时返回带有
rate_limited或concurrency的 429 状态码,在临时过载期间返回带有Retry-After: 5的 429 状态码。本地服务器很少这样做,因此现有代码可能无法处理。
如果切换后出现失败,关于 常见 Ollama API 错误 的文章涵盖了常见原因,如端口错误和缺少模型名称。
托管的费用及其功能限制
计费为按量付费,从预付额度扣除:每 1M 输入 token $0.15,每 1M 输出 token $0.50。一次包含 1,000 个输入和 400 个输出的聊天轮次成本为 $0.00015 + $0.0002 = $0.00035,因此 $20 可覆盖约 57,000 次此类轮次。失败或被拒绝的请求不收费,且额度永不过期。充值金额从 $20 到 $500 不等,充值 $50 起获得 +5% 奖励,$100 起获得 +10% 奖励,$200 起获得 +15% 奖励。仅支持加密货币支付(TRC20 上的 USDT 或 Base 上的 USDC)。更多详情请见 定价页面。
需要注意的限制:仅支持文本,因此不支持嵌入、图像生成或微调。如果你依赖本地嵌入,请保持本地。该模型针对在无内容拒绝的情况下进行回答进行了优化,适用于合法的成人用途。涉及未成年人的性内容始终不允许。提示词不用于训练。
更多指南
问答
Ollama API 与 OpenAI API 兼容吗?
部分兼容。Ollama 在 /api 下有原生路由,同时也提供 /v1/chat/completions 等 OpenAI 风格路由,因此 OpenAI SDK 客户端可以与其通信。
从本地 Ollama 迁移到托管接口需要更改什么?
Base URL、API 密钥和模型名称。如果你的代码已使用 OpenAI SDK,则无需其他更改。
托管 API 是否支持类似 Ollama 的嵌入(embeddings)?
不支持。它仅支持文本生成:聊天补全和响应,不支持嵌入、图像或微调。
Ollama 免费吗?
该软件免费下载和运行。你仍需为硬件和电力付费,而托管 API 按 token 收费。