適用於誰
- 搜「ollama api 調用」「ollama api 地址」「ollama api key 怎麼獲取」「python 調用 ollama api」的人;
- 想把本機的 Ollama 接到自己的腳本,或接到支持 OpenAI 接口的第三方工具裏的人。
本文根據 Ollama 官方文檔整理,資料核對於 2026-10-11。還沒裝 Ollama 的話先看《Ollama怎麼用》。
結論先說
- 本地 API 地址是
http://localhost:11434,Ollama 啟動後自動提供,不需要另外開服務。 - 本地調用不需要 API Key。只有直接調用 Ollama 雲端模型才需要在 ollama.com 創建 Key。
- 有兩套接口可選:原生接口(
/api/chat、/api/generate)和 OpenAI 兼容接口(/v1/chat/completions等)。已有的 OpenAI 代碼,改一下base_url就能用。 - 用 OpenAI SDK 時
api_key這個參數必須填,但本地服務會忽略它,官方示例填的是ollama。
步驟
1. 先確認服務在運行
bash
ollama ls # 能列出模型,說明服務正常
ollama pull gemma4 # 沒有模型就先下載一個
官方給出的三組地址:
| 接口 | 本地 Ollama 服務 | 直接訪問雲端 |
|---|---|---|
| Ollama 原生接口 | http://localhost:11434/api | https://ollama.com/api |
| OpenAI 兼容接口 | http://localhost:11434/v1 | https://ollama.com/v1 |
| Anthropic 客戶端 base URL | http://localhost:11434 | https://ollama.com |
2. 用 curl 調原生接口
bash
curl http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "gemma4",
"messages": [{"role": "user", "content": "用一句話介紹你自己"}],
"stream": false
}'
回答在返回 JSON 的 message.content 裏。官方示例都帶着 "stream": false,表示一次性返回完整結果;去掉它則是逐塊流式返回。
Windows PowerShell 裏引號轉義比較麻煩,官方 Windows 文檔給的寫法是用 Invoke-WebRequest:
powershell
(Invoke-WebRequest -method POST -Body '{"model":"gemma4", "prompt":"天空為什麼是藍色的?", "stream": false}' -uri http://localhost:11434/api/generate ).Content | ConvertFrom-json
3. 用官方 Python 庫
bash
pip install ollama
python
from ollama import chat
response = chat(
model="gemma4",
messages=[{"role": "user", "content": "用三句話解釋什麼是量化"}],
)
print(response.message.content)
流式輸出把 stream=True 傳進去,然後逐塊讀取:
python
for chunk in chat(model="gemma4", messages=[{"role": "user", "content": "寫一首四行詩"}], stream=True):
print(chunk.message.content, end="", flush=True)
官方還提供 JavaScript 庫(ollama-js),用法類似。
4. 用 OpenAI SDK(兼容接口)
已有的 OpenAI 代碼只改兩處,base_url 和 model:
python
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama", # 必填,但本地服務不校驗
)
resp = client.chat.completions.create(
model="gemma4",
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)
官方兼容文檔列出的端點包括 /v1/chat/completions、/v1/completions、/v1/models、/v1/embeddings 和 Responses API(/v1/responses)。其中 Responses API 不支持有狀態的用法:previous_response_id 和 conversation 兩個參數標註為不支持,多輪對話要自己把歷史消息帶上。
5. 接到第三方工具
凡是能自定義「OpenAI 兼容接口地址」的客戶端,都按下面填:
- 接口地址(Base URL):
http://localhost:11434/v1 - API Key:隨便填一個非空字符串,例如
ollama - 模型名:
ollama ls裏顯示的名字
有些工具寫死了 gpt-3.5-turbo 這類模型名、不讓改。官方給的辦法是給本地模型複製一個別名:
bash
ollama cp gemma4 gpt-3.5-turbo
之後把 gpt-3.5-turbo 當模型名傳進去,實際調用的是本地的 gemma4。
6. 兩個常用的調節項
模型在內存裏留多久:預設 5 分鐘後卸載。請求裏的 keep_alive 參數可以改:
- 時長字符串,如
"10m"、"24h"; - 秒數,如
3600; - 負數(如
-1)表示一直留在內存; 0表示回答完立刻卸載。
只發模型名、不帶內容的請求可以預加載模型,避免第一次提問等待:
bash
curl http://localhost:11434/api/generate -d '{"model": "gemma4", "keep_alive": -1}'
上下文長度:OpenAI 接口本身沒有設定上下文長度的參數。官方的做法是寫一個 Modelfile 把 num_ctx 固定下來,再用新名字調用:
FROM gemma4
PARAMETER num_ctx 32768
bash
ollama create gemma4-32k -f Modelfile
也可以用環境變量 OLLAMA_CONTEXT_LENGTH 統一設定服務的預設值。
常見問題
Q:Ollama 的 API Key 在哪裏獲取?
本地調用不需要。只有不經過本機、直接請求 https://ollama.com/api 的雲端模型時才需要,登入 ollama.com 後在 Settings 的 Keys 頁面創建,並以 Authorization: Bearer 請求頭攜帶。官方提醒 Key 要放在服務端,不要寫進瀏覽器代碼或提交到代碼倉庫。
Q:連接被拒絕(connection refused)怎麼辦?
先確認 Ollama 在運行(任務欄有圖標,或 ollama ls 有輸出)。Ollama 預設只監聽 127.0.0.1:11434,從另一台電腦、Docker 容器或 WSL 裏訪問需要改監聽地址,見《Ollama 修改模型存儲位置與局域網訪問》。
Q:瀏覽器裏的網頁或插件調用報跨域錯誤?
官方 FAQ 說明,預設只允許來自 127.0.0.1 和 0.0.0.0 的跨域請求,其他來源要通過環境變量 OLLAMA_ORIGINS 添加。
Q:返回 503 是什麼意思?
官方 FAQ 的解釋是請求太多、服務過載。排隊上限由 OLLAMA_MAX_QUEUE 控制(預設 512),單個模型同時處理的請求數由 OLLAMA_NUM_PARALLEL 控制(預設 1)。
Q:接口會變嗎?
官方說明 API 沒有嚴格的版本號,但預期保持穩定和向後兼容,少數棄用會寫在發佈說明裏。
參考資料
- Ollama 文檔:API Introduction — https://docs.ollama.com/api/introduction
- OpenAI compatibility — https://docs.ollama.com/api/openai-compatibility
- Quickstart — https://docs.ollama.com/quickstart
- FAQ — https://docs.ollama.com/faq
- 官方 Python 庫 — https://github.com/ollama/ollama-python
0 條評論
還沒有評論,來搶沙發~