自架 New API 模型閘道:統一管理 Claude、OpenAI 和 Gemini,並串接 Claude Code 與 Codex
用 Zenavo 在自己的伺服器上部署 New API,把多家模型服務商統一成一個 API,依人發放金鑰和額度,再讓 Claude Code、Codex CLI 和 Open WebUI 透過它呼叫模型。
本文亦提供 English、简体中文、日本語、Español 和 Bahasa Indonesia。
團隊裡有人用 Claude Code,有人用 Codex CLI,還有人在 Open WebUI 裡聊天。每個工具各自存一份服務商金鑰,用量分散在不同的帳單上,誰用了多少、該撤銷哪一把金鑰,都很難說清楚。
New API 是一個開源的模型閘道:你把 OpenAI、Anthropic、Gemini 等服務商的 API 金鑰設定在它後面,再給每個人或每個工具一把由 New API 簽發的金鑰,各自設定可用模型和額度。它同時提供 OpenAI Chat Completions、Responses、Anthropic Messages 和 Gemini 格式的 API,所以常見的程式開發工具都能直接串接。
本文用 Zenavo 的 New API 範本,把閘道部署到你租用或自有的伺服器上。伺服器、Zenavo 和上游模型 API 各自計費;New API 只負責轉發請求和計量,不會讓模型呼叫變便宜。New API 側重團隊多成員的金鑰發放與額度記帳;如果主要是給自己或小團隊的編碼代理(Claude Code、Codex)做多協定轉換與故障切換,也可以參考更輕量的 Magpie。
部署 New API
先在 Zenavo 連接一台 Linux 伺服器,再打開 New API 範本,選擇伺服器並部署。
目前範本的設定如下:
| 設定 | 值或用途 |
|---|---|
| 映像檔 | calciumion/new-api:latest |
| HTTP 連接埠 | 3000 |
| 磁碟區 | /data,存放預設的 SQLite 資料庫和日誌 |
SESSION_SECRET |
建立專案時自動產生,用來簽署登入工作階段 |
TZ |
UTC,可以改成你所在的時區 |
latest 會跟著上游更新。打算長期使用時,在服務 Settings 的 Source 中把映像檔標籤改成你測試過的固定版本,並記錄下來。
綁定網域,馬上完成初始設定
在 new-api 服務的 Networking 頁為 3000 連接埠綁定網域,例如 ai.example.com,新增指向伺服器的 A 記錄,等待 HTTPS 生效。步驟見網域與 HTTPS。
第一次開啟網站時,New API 會進入設定精靈,由你建立管理員帳號。閘道拿到服務商金鑰後就會花錢,所以網域一生效就自己完成初始設定,再到系統設定確認是否允許新使用者自行註冊。只給自己和團隊使用時,請關閉公開註冊,由管理員建立帳號。
新增渠道:串接上游服務商
New API 把每個上游連線稱為 渠道(Channels)。在 渠道(Channels) 頁新增一個:選擇服務商類型,填入該服務商的 API 金鑰和要開放的模型,儲存後點 測試(Test),確認能收到回應。
幾點建議:
- 服務商金鑰只填在渠道裡,不要寫進 Zenavo 的變數,也不要出現在截圖和聊天紀錄中。
- 為渠道取清楚的名稱,例如「Anthropic 官方」,之後看日誌、停用渠道都比較方便。
- 只開放實際需要的模型。清單裡列得出來的模型,不代表你的服務商帳號都有權限呼叫。
- 使用服務商正式的 API 金鑰,並遵守它的使用條款。不要把個人的聊天訂閱包裝成 API 轉售或分享給別人。
發放金鑰和額度
在 令牌(Tokens) 頁為每個人或每個工具建立一把金鑰,設定可用模型、額度和有效期限。這把 sk- 開頭的金鑰由 New API 簽發:外洩時只要在這裡刪除它,不必輪換服務商的金鑰。
建議依「人 × 工具」分開發放,例如「小王的 Claude Code」和「小王的 Open WebUI」。這樣用量一目了然,撤銷其中一把也不會影響其他工具。
串接 Claude Code
Claude Code 可以透過環境變數,把請求送到自訂的 Anthropic Messages 端點。在你的電腦上執行:
export ANTHROPIC_BASE_URL="https://ai.example.com"
export ANTHROPIC_AUTH_TOKEN="sk-你在 New API 建立的令牌"
claude
ANTHROPIC_BASE_URL 只填網域,不要加 /v1:Claude Code 會自己補上 /v1/messages。如果 Claude Code 請求的模型名稱和渠道裡的不一樣,可以在 New API 的渠道中設定模型對應,或用 Claude Code 的 /model 選擇閘道提供的模型。如果你想直接在 Claude Code 裡透過 MCP 與 Skills 查看日誌、部署和回滾 Zenavo 服務,可以接著看用 Claude Code 部署和除錯 Zenavo 專案。
串接 Codex CLI
Codex CLI 在 ~/.codex/config.toml 中定義自訂服務商。把模型換成你在渠道裡開放的模型:
model = "你在渠道裡開放的模型名稱"
model_provider = "newapi"
[model_providers.newapi]
name = "New API"
base_url = "https://ai.example.com/v1"
env_key = "NEWAPI_API_KEY"
wire_api = "responses"
接著執行 export NEWAPI_API_KEY="sk-…",再啟動 codex。注意這裡的 base_url 要包含 /v1,和 Claude Code 不同。
串接 Open WebUI 與 LobeHub
如果你有在用 Open WebUI,打開 Settings → Admin → Connections,新增一個 OpenAI 相容連線:Base URL 填 https://ai.example.com/v1,API Key 填一把專門給 Open WebUI 的令牌。如果用的是 LobeHub,同樣在服務商設定或 OPENAI_PROXY_URL 中填入 https://ai.example.com/v1 即可。
兩者在同一個 Zenavo 專案裡時(用 Add Service → Templates 把 New API 加進 Open WebUI 所在的專案),可以改走私有網路:http://new-api.zenavo.internal:3000/v1。這樣請求就不會離開伺服器,詳見私有網路。
備份與升級
New API 的帳號、渠道和令牌都存在 /data 磁碟區裡,其中包含你的服務商金鑰,所以備份檔要和金鑰本身一樣嚴格保管。
在維護時段停止專案,在 new-api 服務的 Backup & Restore 頁備份磁碟區,完成後再啟動專案,並下載一份自行保存。升級前先讀版本說明,先備份再升級。如果升級改動了資料庫結構,單純換回舊映像檔不一定能復原,需要還原升級前的備份。
常見問題
Claude Code 回傳 404 或連不上?
先檢查 ANTHROPIC_BASE_URL 結尾是不是多了 /v1,再到 New API 的日誌看請求有沒有送達、用的是哪個模型名稱。
Codex 顯示模型不存在?
config.toml 中的 model 必須是渠道有開放、而且令牌允許使用的模型。也請確認 wire_api 設為 responses。
New API 會儲存對話內容嗎? 它會記錄呼叫日誌和用量,記錄哪些欄位取決於版本和設定。請求仍然會送到上游服務商:閘道架在自己的伺服器上,不代表資料只留在本機。
一台小伺服器夠用嗎? New API 本身很輕量,負載主要來自同時進行的請求。多人同時以串流方式產生長篇回應時,請留意伺服器的記憶體和頻寬。
從 New API 範本開始:先完成初始設定、關閉公開註冊,再新增渠道、發放令牌,最後把程式開發工具指向它。
這是 coding agent 讀到的內容,網址是 https://zenavo.app/zh-TW/blog/self-host-new-api.md。
無法載入 Markdown,請直接開啟: https://zenavo.app/zh-TW/blog/self-host-new-api.md