---
title: 自動選擇模型
description: 模型填 "auto" 時，Gateway 會判斷任務有多難，從工作區允許的模型裡挑一個。指定的模型絕不會被替換，每個回覆都會告訴你是哪個模型回答的。
url: https://agentlab.cresclab.com/docs/zh-tw/gateway/auto
language: zh-Hant
updated: 2026-10-30
---

# 自動選擇模型

模型填 "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 怎麼挑

1. **判斷任務** 由能回傳結構化輸出、最便宜的允許模型，讀取請求的一小段摘錄（系統提示詞的開頭、第一則和最新一則使用者訊息，以及工具名稱，最多 8 KiB，絕不讀整段對話），判斷這是哪一類任務、需不需要多個步驟。
2. **挑選模型** 多步驟的工作用較強的模型。一般的分析、寫程式和規劃用標準模型。一般的擷取、改寫和對話用最便宜的允許模型。
3. **同一輪用同一個模型** 同一個工具迴圈的後續步驟，沿用第一步的模型，讓加密推理、thinking 簽章和提示詞快取繼續有效。

判斷失敗、逾時（6 秒）或不確定時，由標準模型回答。auto 判斷不出來時，絕不會挑比較便宜的模型。

工作區的每月花費額度剩不到 20% 時，被判斷為多步驟的工作會改用標準模型，不用較強的模型。

判斷本身也是一次模型呼叫。它會記錄在同一把金鑰下、照樣計費，並連結到它所判斷的那個請求。

## 只用某幾家的模型

想讓請求只用某幾家公司的模型，在 Chat Completions 或 Responses 裡帶 `provider.only`，格式和 OpenRouter 一樣：

```json
{
  "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`）。
