Ollama API 与 OpenAI API:哪个适合你的项目
Ollama 在你自己的机器上运行模型,而 OpenAI 在其服务器上运行其模型。本页比较了两者在托管、请求格式、成本、限制和内容规则方面的差异,然后展示了介于两者之间的第三种选择。
已更新

要点
- Ollama 是你自己托管的本地运行时;OpenAI API 是按 token 计费的托管服务。
- 两者都接受 OpenAI 风格的聊天请求,因此一个客户端可以通过更改 base URL 与任一服务通信。
- 本地运行需要硬件和时间成本,托管运行需要 token 成本;盈亏平衡点取决于你的用量。
- 具有开放权重模型的托管 OpenAI 兼容接口让你无需拥有 GPU 即可按需付费。
简短回答
Ollama API 与 OpenAI API 的问题主要涉及模型的运行位置。使用 Ollama 时,模型位于你控制的计算机上,你的代码调用 localhost。使用 OpenAI 时,模型位于他人的数据中心,你的代码调用公共 HTTPS 地址,并在月底收到账单。
其他所有方面都源于这一差异:成本结构、可调整的延迟、谁可以看到你的提示词、你可以选择哪些模型,以及当你同时发送一百个请求时会发生什么。表格列出了适用于两者的事实。
| 主题 | Ollama | OpenAI API |
|---|---|---|
| 运行位置 | 你的笔记本电脑、工作站或服务器 | OpenAI 的服务器 |
| 谁设置模型 | 你自行拉取和更新权重 | OpenAI 选择并更新其模型 |
| 计费 | 本地运行时没有按 token 计费;你为硬件和电力付费 | 按 token 计费,来自具有计费功能的账户 |
| 请求格式 | 原生路由加上 OpenAI 风格的 /v1 层 | 原始 OpenAI 格式 |
| 吞吐量 | 受限于你的硬件 | 受账户速率限制限制 |
如果你想要中间路径,可以使用托管接口,它使用相同的 OpenAI 格式但服务于开放权重模型,这在页面末尾附近有所介绍。
每个 API 的实际定义
Ollama
Ollama 是一个下载开放权重模型并通过 HTTP 在你的机器上提供服务的程序。默认情况下,它监听 11434 端口。它有自己的路由,例如 /api/chat 和 /api/generate,并且它还暴露了一个 OpenAI 风格的层 /v1,以便现有的 OpenAI 客户端代码可以指向它。在通常的本地设置中,没有账户,也没有密钥。要求包含密钥字段的客户端会获得一个占位符字符串。
你可以选择模型、量化和上下文设置。这种自由是主要吸引力,也是成本:如果模型不适合你的内存,它将变慢或根本无法加载。
OpenAI API
OpenAI API 是一项托管服务。你创建账户,添加计费,生成密钥,并向 OpenAI 的地址发送请求。你获得 OpenAI 提供的模型,遵循 OpenAI 的使用政策,并受你的账户层级允许的任何限制。容量、升级和正常运行时间是他们的工作,不是你的工作。大多数教程中看到的请求格式,带有 messages 数组和回复中的 choices 数组,来自此 API。
人们为什么比较它们
之所以进行比较,是因为两者都可以使用相同的客户端代码访问。官方 OpenAI SDK 允许你覆盖 base URL,而 Ollama 的 /v1 层支持聊天补全。因此,为其中一个编写的脚本通常只需一行代码即可指向另一个。这很方便,但也隐藏了实际差异,下一节将对此进行说明。
相同的客户端代码,两个 base URL
这是使切换成本降低的部分。下面的 Python 代码片段连接到本地 Ollama 服务器。只有 base URL、密钥和模型名称是针对目标特定的。
from openai import OpenAI
# Local Ollama through its OpenAI-style layer
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
reply = client.chat.completions.create(
model="llama3.2", # whatever model you pulled locally
messages=[{"role": "user", "content": "Summarize what a base URL is."}],
)
print(reply.choices[0].message.content)要向托管的 OpenAI 兼容接口发送相同的请求,你需要更改三个值。这是该站点的版本,模型 ID 为 uncensored。
from openai import OpenAI
client = OpenAI(base_url="https://api.ollamaapi.com/v1", api_key="YOUR_KEY")
reply = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarize what a base URL is."}],
)
print(reply.choices[0].message.content)相同的请求也适用于 curl,这在你在接触任何应用程序代码之前进行快速测试时很有用。
curl https://api.ollamaapi.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}]}'在这些目标之间切换时有一个注意事项。兼容性涵盖请求和响应的形状,而不是行为。不同的模型以不同的方式遵循指令,以不同的方式处理工具调用,并产生不同的格式。在信任新目标之前,请用你自己的提示词进行测试。
成本:你拥有的硬件与你购买的 token
本地推理看起来是免费的,因为没有发票到达。它不是免费的。你为 GPU 或大内存机器、电力以及安装驱动程序、选择量化和重启耗尽内存的服务器所花费的时间付费。如果你已经拥有强大的硬件,并且每天运行几个提示词,那么从实际角度来看,该成本接近零。如果你必须购买一张卡才能运行你想要的模型,数学计算就会改变。
托管定价的结构则相反:无需预付,费用随使用量增长。在本网站上,价格为每 1M 输入 token $0.15,每 1M 输出 token $0.50,来自预付额度且无订阅。对于 OpenAI,请查看其当前定价页面,因为价格因模型而异且会随时间变化。
以下是此接口上针对实际任务的托管定价计算方式。假设一个应用程序在一个月内发送 40,000 次请求,每次请求包含 1,500 个输入 token 和 400 个输出 token。
- 输入:40,000 x 1,500 = 60,000,000 tokens,即 60M。按每 1M $0.15 计算,费用为 $9.00。
- 输出:40,000 x 400 = 16,000,000 tokens,即 16M。按每 1M $0.50 计算,费用为 $8.00。
- 总计:该月的 $17.00。
你可以将该数字与购买、供电和维护合适机器所需的成本进行比较。对于轻度或突发流量,按 token 付费通常更胜一筹。对于你已拥有硬件的持续高流量,本地通常更胜一筹。请参阅 定价页面 以了解充值金额和奖金。
模型、内容规则和隐私
使用 Ollama 时,你可以决定运行哪个开放权重模型,没有中间环节位于你的提示词和权重之间。内容行为完全取决于该模型的行为。一些社区模型经过调整以减少拒绝,而另一些则不会,你可以自由替换它们。
托管供应商应用自己的使用政策和自己的过滤。这对于通用服务来说是合理的立场,这也是为什么一些作家、角色扮演开发人员和从事成熟小说研究的人员发现托管答案被截断的原因。阅读你计划依赖的任何提供商的政策,并检查他们当前的规则,而不是假设。
本网站处于不同的位置。它提供一个开放权重模型,由独立提供商运行,并经过调整,以便在合法成人使用时回答时不进行内容审查。它不是 OpenAI、Meta、Mistral 或任何其他供应商的官方 API,也不是跨供应商的路由器。有一个硬性限制:禁止涉及未成年人的性内容。提示词不用于训练。失败或被拒绝的请求不收费。
在隐私方面,本地 Ollama 将提示词保留在你的机器上,这是任何托管服务都无法比拟的。如果你的数据绝不能离开机构,请本地运行并停止比较。如果你可以将文本发送到托管服务,请先阅读提供商的隐私页面。我们的隐私页面位于 /privacy/。
限制、并发与功能
本地限制是物理性的。一块 GPU 在每项请求变慢之前只能服务少量并发请求,而长上下文会迅速消耗内存。托管限制是策略性的。在此接口上,完整密钥允许 8 个并发请求和每分钟 300 个请求,试用密钥允许 2 个并发和每分钟 60 个请求。上下文窗口为 100,000 个 token(包含提示词和补全),请求体最多可为 8 MB。
如果你超出限制,会收到 HTTP 429 错误。每分钟请求超出的错误代码为 rate_limited,同时请求过多则为 concurrency。带有 Retry-After: 5 标头的 429 错误表示临时过载,请等待五秒后重试。流式请求会占用其并发槽位,直到流结束,如果你并行打开多个流,这一点很重要。
托管侧的功能覆盖以聊天为主。你可以通过 SSE 获得流式输出并在末尾包含使用情况,支持函数调用、JSON 模式,并透传 temperature、top_p、stop、seed 和惩罚参数。没有图像、音频或视频生成,没有嵌入,也没有微调。如果你需要这些功能,请计划从其他地方获取。我们的 文档 列出了确切的请求字段。
响应标头包括 X-Request-Id 和 X-Balance-USD,因此你可以记录请求并查看剩余额度,而无需单独调用。
如何选择
根据对你影响最大的约束进行选择。
- 提示词必须保留在你的硬件上。 本地使用 Ollama。
- 你已经拥有强大的 GPU 并希望进行实验。 在本地使用 Ollama,如果流量超出其承载能力,再稍后迁移。
- 你需要特定供应商的前沿模型或其生态系统。 使用该供应商的 API。不同的提供商不能替代特定模型。
- 你想要托管的、按量付费的开放权重模型访问权限,且模型不会对合法的成人用途进行拒绝,同时无需专人维护硬件。 使用此类托管的 OpenAI 兼容端点。
许多团队最终会同时使用两者:在笔记本电脑上使用 Ollama 进行开发,在托管接口上处理任何需要从服务器或客户浏览器访问的任务。由于两者都使用相同的请求格式,切换只需更改配置值,无需重写代码。如果你想尝试托管服务,新用户注册后可以在 API 密钥页面 一键领取 $0.50 的试用额度。无需绑定信用卡,有效期为 7 天。付费充值起步价为 $20,支持信用卡或加密货币。
更多指南
问答
Ollama API 是否与 OpenAI SDK 兼容?
Ollama 在 /v1 下暴露了 OpenAI 风格的层,用于处理聊天补全,因此官方 OpenAI SDK 可以通过更改基础 URL 指向它。请查阅 Ollama 文档,了解你的版本支持哪些字段。
Ollama 比 OpenAI API 更便宜吗?
这取决于你的硬件和使用量。本地运行时没有按 token 计费,但你需要承担机器及其维护的成本。对于轻度或不规则使用,按 token 计费通常比购买 GPU 更便宜。
我可以使用此站点的接口代替本地 Ollama 吗?
可以,如果你想要托管的 OpenAI 兼容端点。将基础 URL 设置为 https://api.ollamaapi.com/v1,并将模型设置为 uncensored。它不是 Ollama,也不在你的机器上运行。
托管接口支持工具调用和流式输出吗?
支持。它支持通过 SSE 进行流式输出、工具调用和 JSON 模式,上下文窗口为 100,000 个 token。