很多人第一次接触这两个名字,会以为它们是同类东西,结果配置时把 Ollama 的本地地址当成 OpenAI 的 key 接口,或者反过来拿 OpenAI 的模型名去 Ollama 拉取,报错看不懂。这篇按「一个跑在哪、一个卖给谁」的角度把定位拆开,再给一套换用场景下的判断清单和排错顺序,帮你少走几轮试错。
很多人第一次同时碰到这两个名字,会下意识当成同一类东西,于是配置时就乱套:把 Ollama 的本地地址填进 OpenAI 的 key 字段,或者拿 OpenAI 的模型名去 Ollama 里拉取,报错一长串看不懂。这篇从「一个跑在哪、一个卖给谁」的角度把定位拆开,再给一套换用时的判断清单和排错顺序。
先记住一句话:Ollama 是帮你把模型跑在自己机器上的那层壳,OpenAI 是卖模型调用能力的云端服务。理解这条,后面大部分坑都能提前避开。想比对具体接入方和价格,去 /sites 和 /price-watch 看当时的数字,本文不写死。
先分清定位:一个是跑模型的壳,一个是卖模型的接口
Ollama 本身不产出模型能力,它负责下载、加载、管理量化档位和监听端口,让模型在你自己的机器上跑起来。OpenAI 则是提供模型和 API 的厂商服务,你付的是调用额度,模型在对方机房,本地不需要显卡。判断依据不是谁更强,而是数据能不能出内网、有没有能跑的显卡、调用量稳不稳定这三件事。
| 对比项 | Ollama | OpenAI |
|---|---|---|
| 模型跑在哪 | 你自己的电脑或服务器 | 对方机房 |
| 本地要不要显卡 | 要,显存决定能跑多大 | 不要 |
| 付费方式 | 一次性硬件与电费 | 按调用用量计费 |
| 数据是否出网 | 默认不出 | 会发到远端 |
| 主要维护责任 | 你自己 | 服务方 |
按场景选:三个问题决定你该站哪边
别先比效果,先回答三个问题,答案基本就把方向定死了。三个问题里有任何一个卡住,就先按卡住的那条走,不要先搭环境再说。
- 问题一:数据能不能出内网或出境。不能,就只剩本地这条路,Ollama 是入口工具之一。
- 问题二:手上有没有能跑的显卡。没有独显或显存吃紧,本地只能上很小的模型,效果落差要提前接受。
- 问题三:调用频率和并发。偶发个人用本地省心,多人并发要稳定吞吐就别指望单机。
- 拿不准时做最小验证:本地小模型跑通一条问答,再拿云端同样提示词比一遍,用任务本身的输出判断,而不是看宣传。
如果最后倾向自己部署,别直接照网上的教程堆环境,先到 /guides 看部署与选型相关的指南,把显存、并发和上下文需求对齐,再决定要不要买卡。数字和档位会变,以站内当时页面为准。
接口长得很像,但不是一回事
Ollama 对外提供本地 HTTP 服务,还带一层兼容 OpenAI 格式的入口,所以「用 OpenAI 的 SDK 调本地模型」是成立的。但成立不代表两者是同一个服务,混淆点集中在地址、密钥、模型名这三样东西上,它们各归各的。
- 地址
- 本地指向本机端口,云端指向官方或你用的接入方地址,别在一个文件里混填。
- 密钥
- 本地服务通常没有真正云厂商密钥的概念,你填的值只用来占位或做本地校验。
- 模型名
- 本地模型名来自已下载清单的标签,云端模型名来自厂商目录,两边名字通常对不上。
正确做法是把 base_url、api_key、model 做成三项独立配置,从环境变量或配置文件读,不要硬编码。下面是最小验证的样子,改完先跑通这一条,再动整个项目。
# 先确认本地服务在跑
curl http://127.0.0.1:11434/api/tags
# 再发一条最小请求,只改地址和模型名
curl http://127.0.0.1:11434/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"你在本地已下载的模型名","messages":[{"role":"user","content":"你好"}]}'从一边换到另一边,按这个顺序改
换用时最忌讳一口气改完再一起报错,那样你分不清是地址问题、模型名问题还是能力不支持。按下面顺序一次只改一层,每层都先用最小请求打通。
- 改地址本地指向本机端口,云端指向官方或你用的接入方地址。改完先发一条最小请求,通了再往下。
- 换模型名本地模型名来自已下载清单,云端模型名来自厂商目录。名字对不上是常态,不要复制粘贴。
- 对照能力边界把上下文长度、是否支持图片、是否支持流式输出这三项写成一个小表,逐项打勾,本地小模型经常缺项。
- 重算成本口径本地是一次性硬件加电费,云端按用量计费。用 /price-watch 对照当时的数字,别凭印象估算。
| 要检查的项 | 本地侧怎么确认 | 云端侧怎么确认 |
|---|---|---|
| 地址是否连通 | 请求本机端口的健康检查 | 请求官方或接入方的连通测试 |
| 模型是否存在 | 列出已下载模型清单 | 查账号可用的模型目录 |
| 上下文够不够 | 看模型最大上下文与显存占用 | 看服务方文档的上限说明 |
| 输出是否流式 | 确认服务端支持流式返回 | 确认调用参数开启流式 |
常见报错,按这个顺序排
排错要按「先通不通、再认不认、最后快不快」的顺序走,跳步只会浪费轮次。下面四类基本覆盖换用时的高频问题,每一类都写清先看哪里。
- 连不上:先确认本地服务在跑、端口没被防火墙挡,再看请求地址有没有漏掉版本段。
- 鉴权失败:分清是本地服务不接受你填的密钥,还是云端地址填错了,两边错误码含义不同。
- 模型不存在:核对名字的大小写与标签,本地要先完成下载,云端要确认账号有没有该模型权限。
- 输出慢或截断:本地看显存装不装得下、有没有退到 CPU,云端看是不是触发限流或输入超了上限。
如果问题出在接入方而不是模型本身,别急着改代码,先查接入方的可用性和限流情况。想系统性挑接入方,可以到 /rankings 看评测汇总,具体名次和数字以页面当时展示为准。
下一步想继续排查接入方质量或比价格,先去站点导航和价格追踪页核对当时的数字,再回来按本文的迁移清单改配置。→常见问题
Ollama 是不是就等于 OpenAI 的开源替代?
不完全。Ollama 只是本地运行模型的工具,能跑的开源模型另有来源;OpenAI 卖的是云端模型能力加接口。前者解决「在哪跑」,后者解决「谁来算」,把两者当成同类会选错方向。
能不能用 OpenAI 的 SDK 调本地模型?
多数情况下可以,Ollama 提供了兼容格式的入口,改 base_url 和模型名即可。但要注意并非所有参数都一一对应,图片、工具调用这类能力在不同版本上支持程度不同,接之前先用最小请求验证。
本地跑一套和直接用云端,成本怎么比?
本地是显卡等硬件的一次性投入加电费,云端是按用量付钱。用量小、模型小,云端往往更省;用量稳定且数据不能外传,本地的账才可能算得过来。具体数字到站内价格页和算力页对照当时的行情。