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 | 伺服器發送的事件,以完成標記結束 |
| 模型名稱 | 你拉取的任意模型,例如 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 在超過限制時會返回 429 並帶有
rate_limited或concurrency,在暫時過載時會返回 429 並帶有Retry-After: 5。本地伺服器很少這樣做,因此現有程式碼可能無法處理此情況。
如果切換後出現問題,關於常見 Ollama API 錯誤的文章涵蓋了常見原因,例如端口錯誤與遺漏模型名稱。
託管費用與限制
計費方式為預付額度按量付費:輸入 token 每 1M 個 $0.15,輸出 token 每 1M 個 $0.50。一次包含 1,000 個輸入 token 與 400 個輸出 token 的對話輪次成本為 $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 下有原生路由,也提供 OpenAI 風格的路由(如 /v1/chat/completions),因此 OpenAI SDK 用戶端可以與之通訊。
從本地 Ollama 遷移至託管端點需要更改什麼?
Base URL、API 金鑰和模型名稱。如果你的程式碼已使用 OpenAI SDK,則無需其他變更。
託管 API 是否支援嵌入,就像 Ollama 那樣?
否。它僅限文字生成:聊天完成與回應,不支援嵌入、影像或微調。
Ollama 是免費的嗎?
該軟體可免費下載與執行。你仍需為硬體與電力付費,而託管 API 則按 token 計費。