自動選擇模型
模型填 "auto" 時,Gateway 會判斷任務有多難,從工作區允許的模型裡挑一個。指定的模型絕不會被替換,每個回覆都會告訴你是哪個模型回答的。
指定模型或使用 auto#
model 欄位可以填 GET /v1/models 裡的模型名稱,或填 auto:
model | 會發生什麼 |
|---|---|
auto | Gateway 依任務難度,從工作區允許的模型裡挑一個。 |
| 模型名稱 | 只由這個模型回答,絕不會換成別的模型。 |
agentlab/… | 以 400 invalid_model 拒絕;訊息會列出可以用的值。 |
| Gateway 不認得的名稱 | 以 404 model_not_found 拒絕;訊息會列出可以用的值。 |
| 工作區排除的模型 | 以 403 model_not_enabled 拒絕。 |
/v1/chat/completions 和 /v1/responses 會從所有允許的模型裡挑,不分是哪一家做的。/v1/messages 只用 Claude 模型;只有 OpenAI 模型能處理的 Responses 請求(例如帶 code_interpreter 工具)只用 OpenAI 模型。
Claude Code 和 Codex 送出前會檢查模型名稱,所以沒辦法送 auto。它們在請求裡保留一個真的模型名稱,再加上標頭 X-AgentLab-Routing: auto,讓 Gateway 來選。這個標頭的值必須剛好是 auto,而且只能送一次;其他情況會以 400 拒絕。
auto 怎麼挑#
- 判斷任務 由能回傳結構化輸出、最便宜的允許模型,讀取請求的一小段摘錄(系統提示詞的開頭、第一則和最新一則使用者訊息,以及工具名稱,最多 8 KiB,絕不讀整段對話),判斷這是哪一類任務、需不需要多個步驟。
- 挑選模型 多步驟的工作用較強的模型。一般的分析、寫程式和規劃用標準模型。一般的擷取、改寫和對話用最便宜的允許模型。
- 同一輪用同一個模型 同一個工具迴圈的後續步驟,沿用第一步的模型,讓加密推理、thinking 簽章和提示詞快取繼續有效。
判斷失敗、逾時(6 秒)或不確定時,由標準模型回答。auto 判斷不出來時,絕不會挑比較便宜的模型。
工作區的每月花費額度剩不到 20% 時,被判斷為多步驟的工作會改用標準模型,不用較強的模型。
判斷本身也是一次模型呼叫。它會記錄在同一把金鑰下、照樣計費,並連結到它所判斷的那個請求。
只用某幾家的模型#
想讓請求只用某幾家公司的模型,在 Chat Completions 或 Responses 裡帶 provider.only,格式和 OpenRouter 一樣:
{
"model": "auto",
"provider": { "only": ["anthropic"] },
"messages": [{ "role": "user", "content": "Hello" }]
}- 這裡的「家」是做這個模型的公司,和主控台模型清單顯示的一樣:
anthropic、openai、google、meta、xai、deepseek、moonshot、mistral、zhipu、qwen、minimax、amazon、microsoft、cohere或black-forest-labs。anthropic也包含 Amazon Bedrock 和 Google Vertex AI 上的 Claude。 - auto、它的判斷、重試,以及
models裡的auto項目,都只會用這幾家的模型。工作區的模型設定照樣適用。 - 指定了清單以外的模型、不認得的名稱,或
provider裡的其他選項,會以 400 拒絕,param為provider.only(或該選項的名稱)。清單裡的公司沒有任何模型能處理這個請求時,也以 400 拒絕,訊息會列出可以處理的公司。 provider只由 Gateway 讀取,絕不會送給模型。
看 auto 選了什麼#
每個有回答的請求都會帶:
| 標頭 | 值 |
|---|---|
X-Agentlab-Model | 實際回答的模型。 |
X-Agentlab-Decision | 原因:指定模型時是 requested_model;使用 auto 時是 auto_assessed、auto_reused、auto_uncertain、auto_assessment_failed、auto_assessment_timeout 或 auto_budget_guard。 |
X-Agentlab-Assessment | 使用 auto 時的判斷結果,例如 analysis/multi_step;沒有判斷時是 unavailable。 |
X-Request-Id | 請求的 id,和用量頁及匯出檔裡的相同。 |
Chat Completions 也會在 model 回傳實際回答的模型,並在 agentlab_decision.reason 回傳原因(auto 或 requested_model)。