繁中 ▾

Ollama API 與 OpenAI API:哪個適合你的專案

Ollama 在您的自有機器上執行模型,而 OpenAI 則在其伺服器上執行其模型。本頁比較兩者在託管、請求格式、成本、限制與內容過濾規則方面的差異,並提供介於兩者之間的第三種選項。

更新

本機電腦與雲端機櫃透過發光的數據線連接的等距插圖

重點摘要

  1. Ollama 是由你自行託管的本地執行環境;OpenAI API 則是按 token 計費的託管服務。
  2. 兩者都接受 OpenAI 風格的聊天請求,因此只需變更 Base URL,同一個客戶端即可與兩者通訊。
  3. 本機執行需要硬體與時間成本,託管執行則消耗 token;兩者的成本平衡點取決於你的用量。
  4. 託管的 OpenAI 相容端點搭配開放權重模型,讓你在無需擁有 GPU 的情況下即可按用量付費。

簡短答案

Ollama API 與 OpenAI API 的比較主要取決於模型的運行位置。使用 Ollama 時,模型運行在你控制的電腦上,你的程式碼呼叫 localhost。使用 OpenAI 時,模型運行在別人的資料中心,你的程式碼呼叫公開的 HTTPS 地址,,並附帶金鑰,月底收到帳單。

其他所有差異都源自這一點:成本結構、可調整的延遲、誰能看到你的提示詞、你可以選擇哪些模型,以及當你在同一時間發送一百個請求時會發生什麼。表格列出了兩者都適用的事實。

主題OllamaOpenAI API
執行位置你的筆電、工作站或伺服器OpenAI 的伺服器
誰設定模型你自行拉取與更新權重OpenAI 選擇並更新其模型
帳單本地執行環境沒有每 token 費用;你需負擔硬體與電力成本按 token 計費,需有帳戶與計費設定
請求格式原生路由加上 OpenAI 風格的 /v1 介面原始的 OpenAI 格式
吞吐量受您的硬體限制受帳戶速率上限限制

如果你想要折衷方案,可以考慮託管端點,它使用相同的 OpenAI 格式但提供開放權重模型。詳情請見本頁末尾。

每個 API 的實際定義

Ollama

Ollama 是一個程式,用於下載開放權重模型並在你的機器上透過 HTTP 提供服務。預設情況下,它會在通訊埠 11434 上監聽。它有自己的路由,例如 /api/chat 和 /api/generate,並且它也在 /v1 下提供 OpenAI 風格的介面層,以便現有的 OpenAI 客戶端程式碼可以指向它。在一般的本地設定中,沒有帳戶也沒有金鑰。需要金鑰欄位的客戶端會獲得一個佔位字串。

你可以選擇模型、量化方式與上下文設定。這種自由是主要吸引力,也是代價:如果模型無法放入記憶體,執行速度會變慢或完全無法載入。

OpenAI API

OpenAI API 是一個託管服務。你建立帳戶、新增帳單資訊、產生金鑰,並將請求傳送至 OpenAI 的地址。你獲得 OpenAI 提供的模型,遵循 OpenAI 的使用政策,並受你的帳戶層級允許的任何限制約束。容量、升級和可用性是他們的責任,不是你的。你在大多數教學中看到的請求格式,包含 messages 陣列和回覆中的 choices 陣列,來自此 API。

人們為何會比較它們

進行比較是因為兩者都可以使用相同的客戶端程式碼存取。官方的 OpenAI SDK 允許你覆寫基本 URL,而 Ollama 的 /v1 層支援聊天完成 API。因此,為其中一個撰寫的腳本通常可以透過一行程式碼指向另一個。這很方便,但也隱藏了實際差異,下一節將逐步說明。

相同的客戶端程式碼,兩個 base URL

這是使切換成本降低的部分。下方的 Python 程式碼片段連線到本地 Ollama 伺服器。僅基礎 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 和 penalties 的傳遞。沒有圖像、音訊或影片生成,沒有嵌入向量,也沒有微調。如果您需要這些功能,請計畫從其他來源取得。我們的 說明文件 列出了確切的請求欄位。

回應標頭包含 X-Request-Id 與 X-Balance-USD,因此你可以記錄請求並查看剩餘額度,無需額外呼叫。

如何選擇

根據影響最大的限制來選擇。

  • 提示詞必須保留在你的硬體上。 在本機使用 Ollama。
  • 你已經擁有功能強大的 GPU,並且想要進行實驗。 先在本地使用 Ollama,等流量超出其負載能力時再遷移。
  • 您需要特定供應商的 frontier model 或其生態系統。 使用該供應商的 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 的上下文視窗。

只差一張表單,即可取得金鑰

建立帳號、複製金鑰、更改基礎 URL。這就是整個設定過程。

取得 API 金鑰閱讀文件