繁中 ▾
取得 API 金鑰

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/chatPOST /v1/chat/completions
單一提示詞POST /api/generatePOST /v1/responses 或聊天完成端點
列出模型GET /api/tagsGET /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 遷移至託管

  1. 首先切換至 OpenAI 格式。 如果你的程式碼呼叫了 /api/chat,請將其移至指向 Ollama /v1 路徑的 OpenAI SDK。確認其在本地仍運作正常。
  2. 取得金鑰。 註冊並領取 API 金鑰頁面 上的 $0.50 試用額度。無需付款,有效期為 7 天。
  3. 更改三個值。 Base URL 改為 https://api.ollamansfw.com/v1,金鑰改為你的金鑰,模型改為 uncensored。
  4. 檢查參數。 Temperature、top_p、stop、seed 與懲罰參數會直接傳遞。僅限本地的選項如 Ollama 的 num_ctx 或 keep_alive 不適用;視窗固定為 100,000 token。
  5. 加入重試邏輯。 託管 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 計費。