模型 ID 並不通用:api.anthropic.com 要求帶日期的 ID,Gemini 要求自己的版本字串,而每個閘道都定義不同的 slug。這裡的 404 表示「此主機沒有完全符合該字串的模型」——修正方式一律是詢問端點實際提供哪些模型。
錯誤
{
"error": {
"type": "model_not_found",
"message": "The model 'claude-sonnet' does not exist or you do not have access to it.",
"code": "model_not_found"
}
}原因與解決方法一覽
| 原因 | 解決方法 |
|---|---|
| 來自其他主機的模型 ID | 每個 API 都有自己的命名空間——請從端點自己的模型清單複製 ID,不要從部落格文章複製。 |
| 已淘汰/重新命名的版本 | 供應商會淘汰帶日期的快照;請固定使用目前的 ID,並訂閱淘汰通知。 |
| 拼寫錯誤或遭截斷的 slug | claude-sonnet 在任何地方都不是模型;精確字串很重要。 |
| 模型存在,但已針對你的金鑰/方案停用 | 有些主機會依方案限制模型——清單端點會顯示你的金鑰可以呼叫哪些模型。 |
從你正在呼叫的端點列出模型
在任何 OpenAI 相容主機上,GET /v1/models 都是事實標準——它會精確回傳你的金鑰可使用的 ID:
curl -s https://api.kunavo.com/v1/models \
-H "Authorization: Bearer $KUNAVO_API_KEY" \
| python3 -c "import json,sys; print('\n'.join(m['id'] for m in json.load(sys.stdin)['data']))"在執行階段解析模型,而不是寫死
模型目錄會變動(新增快照、淘汰模型)。請在啟動時解析模型清單,優先使用已設定的 slug 並提供備援,當已設定的 slug 從 /v1/models 消失時發出警示,而不要讓正式環境中的請求回傳 404。
如果你透過 Kunavo 呼叫
Kunavo 使用穩定且易讀的 slug(claude-sonnet-5、gpt-5-6-terra、claude-fable-5),並在 GET /v1/models 中列出每個模型的中繼資料;已淘汰的 slug 會在網站模型頁面上以 301 重新導向至後繼模型,因此連結不會失效。清單端點具有權威性——任何讀取它的代理程式都能在 llms.txt 中看到相同資訊。
常見問題
為什麼相同的模型 ID 在一個 API 上可用,在另一個 API 上卻回傳 404?
因為 ID 會依主機建立命名空間:Anthropic 的帶日期 ID、Gemini 的版本化名稱,以及每個閘道的 slug,對於相關模型而言都是不同字串。請一律從目標端點自己的模型清單複製。
如何防範模型淘汰?
在啟動時解析 /v1/models,將模型 ID 放在設定中(不要寫死在程式碼裡),定義備援鏈,並在已設定的 ID 消失時通知自己——如此就能把正式環境中的 404 轉化為設定變更。