# 模型

URL: https://docs.router.ezat.io/zh/models

> 通过 EZAT Router 可以调用的所有 AI 模型、模型 id 和别名的规则、模型状态、各项能力的含义，以及如何通过 API 列出模型。

## 何时阅读本页

你需要为请求填写模型 id，想了解某个模型支持哪些能力，或者想在代码里列出模型。价格见[价格](https://docs.router.ezat.io/zh/pricing.md)。

## 模型

| 模型 id | 模型 | 别名 | 上下文 | 最大输出 | 能力 |
| --- | --- | --- | --- | --- | --- |
| `anthropic/claude-fable-5-1` | Claude Fable 5.1 | `claude-fable-5-1`, `claude-fable-5.1` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-fable-5` | Claude Fable 5 | `claude-fable-5` | 1M | 128K | 工具调用, 图片输入, 思考, 1 小时缓存 |
| `anthropic/claude-opus-5-5` | Claude Opus 5.5 | `claude-opus-5-5`, `claude-opus-5.5` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-opus-5` | Claude Opus 5 | `claude-opus-5` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-sonnet-5-5` | Claude Sonnet 5.5 | `claude-sonnet-5-5`, `claude-sonnet-5.5` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-sonnet-5` | Claude Sonnet 5 | `claude-sonnet-5` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-haiku-5-5` | Claude Haiku 5.5 | `claude-haiku-5-5`, `claude-haiku-5.5` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-opus-4-8` | Claude Opus 4.8 | `claude-opus-4-8`, `claude-opus-4.8` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-opus-4-7` | Claude Opus 4.7 | `claude-opus-4-7`, `claude-opus-4.7` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-opus-4-6` | Claude Opus 4.6 | `claude-opus-4-6`, `claude-opus-4.6` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |
| `anthropic/claude-sonnet-4-6` | Claude Sonnet 4.6 | `claude-sonnet-4-6`, `claude-sonnet-4.6` | 1M | 128K | 工具调用, 图片输入, 思考, 提示缓存, 1 小时缓存 |

此表实时读取自模型目录。上下文是一个请求最多能包含的输入 token 数；最大输出是模型接受的 `max_tokens` 最大值。

## 模型 id

- 规范 id 的格式是 `author/model`，例如 `anthropic/claude-sonnet-5-5`。author 是开发这个模型的公司，而不是提供服务的公司。
- 模型也可以用「别名」列中的名称调用：去掉 `author/` 前缀的提供方原名（`claude-sonnet-5-5`），以及（大多数模型）版本号中带点的同名写法（`claude-sonnet-5.5`）。Claude Code 和 Anthropic SDK 发送的就是这些名称，所以无需修改就能使用。
- id 和别名不区分大小写，前后的空格会被忽略。
- 两种 API 使用相同的 id：`POST /v1/messages` 和 `POST /openai/v1/chat/completions`。
- 响应中的 `model` 与你发送的名称完全一致，绝不会是提供方的内部 id。下文的模型列表始终返回规范 id。

## 状态

| 状态 | 是否列出 | 请求 |
| --- | --- | --- |
| 上线 | 是 | 正常处理 |
| 即将下线 | 是，带 **即将下线** 标记 | 仍会处理。请在它下线前换用同系列中较新的模型。 |
| 预览 | 只对有预览权限的 key 列出 | 只处理有预览权限的 key 的请求。其他 key 会收到与未知模型相同的 404。 |
| 已下线 | 否 | 以 404 拒绝 |

请求已下线或未知的模型，或者在没有预览权限时请求预览模型，会在到达模型之前就被拒绝，且不计费：

```json
{
  "type": "error",
  "error": { "type": "not_found_error", "message": "model: <the name you sent>" },
  "request_id": "…"
}
```

在兼容 OpenAI 的 API 上，返回的是带 `"code": "model_not_found"` 和 `"param": "model"` 的 404。见[错误](https://docs.router.ezat.io/zh/reference/errors.md)。

预览权限由 EZAT Router 按 API key 设置，控制台中没有对应的开关。如需申请，请发邮件至 support@ezat.io。

### 限定模型的 key

用 **仅限选中的模型** 创建的 key 只能调用选中的模型。调用其他模型会被拒绝，返回 403 `permission_error`（“This API key is not allowed to use …”），并且这个 key 的模型列表只显示它能用的模型。见 [API key](https://docs.router.ezat.io/zh/api-keys.md)。

### 暂无可用容量的模型

当目前没有任何提供方能提供某个模型时，公开模型目录会把它标为 `"available": false`，控制台的「模型」页面显示 **暂不可用**。对它的请求会收到 529 `overloaded_error`（兼容 OpenAI 的 API 上为 503），并带有 `retry-after` 响应头。见[速率限制](https://docs.router.ezat.io/zh/reference/rate-limits.md)。

## 能力

| 能力 | 含义 |
| --- | --- |
| 工具调用 | 工具使用：`/v1/messages` 上的 `tools`，兼容 OpenAI 的 API 上的函数 `tools` |
| 图片输入 | 图片输入（`image` 块，或 `image_url` 部分）和 PDF 输入（`document` 块，或带 `file_data` 的 `file` 部分） |
| 思考 | 扩展思考：`/v1/messages` 上的 `thinking`，兼容 OpenAI 的 API 上的 `reasoning_effort` |
| 提示缓存 | 支持 `cache_control` 断点，缓存的 token 按缓存读取价格计费。兼容 OpenAI 的 API 对这些模型自动缓存。不支持提示缓存的模型会移除断点，所有 token 都按普通输入计费。见[提示缓存](https://docs.router.ezat.io/zh/guides/prompt-caching.md)。 |
| 1 小时缓存 | 支持 `"ttl": "1h"` 的断点，按 1 小时缓存写入价格计费 |

公开模型目录还有一项 `sampling` 能力。有这项能力的模型接受 `temperature`、`top_p` 和 `top_k`。没有这项能力的模型只能使用默认采样：在 `/v1/messages` 上，模型会以 400 拒绝其他取值；兼容 OpenAI 的 API 则会丢弃这些字段。只要开启了思考，兼容 OpenAI 的 API 也会丢弃这些字段。

## 选择模型

先从适合任务的系列中最新的模型开始。旧模型会保留在目录中，让现有代码继续可用。

| 系列 | 适用场景 |
| --- | --- |
| Fable | 最难、运行时间最长的任务 |
| Opus | 复杂推理和 agent 编程 |
| Sonnet | 日常编程、agent 和生产负载，兼顾速度与质量 |
| Haiku | 大批量和对延迟敏感的任务 |

选择前，请先在[价格](https://docs.router.ezat.io/zh/pricing.md)页比较成本。上表中的每个模型都能用于两种 API。

## 通过 API 列出模型

列表有两类：

| 端点 | 需要 key | 返回 |
| --- | --- | --- |
| `GET https://api.router.ezat.io/v1/models` | 是 | 这个 key 能调用的模型，Anthropic 格式 |
| `GET https://api.router.ezat.io/openai/v1/models` | 是 | 同样的模型，OpenAI 格式 |
| `GET https://api.router.ezat.io/api/models` | 否 | 所有上线和即将下线的模型，含价格 |

两个需要 key 的列表包含上线和即将下线的模型；只有 key 有预览权限时才包含预览模型；如果 key 限定了模型，则只包含它能用的模型。这两个列表不含价格。

```bash tab="Anthropic format" test
curl -sS --fail-with-body https://api.router.ezat.io/v1/models \
  -H "x-api-key: $EZAT_API_KEY" \
  -H "anthropic-version: 2023-06-01"
```

```bash tab="OpenAI format" test
curl -sS --fail-with-body https://api.router.ezat.io/openai/v1/models \
  -H "Authorization: Bearer $EZAT_API_KEY"
```

| Anthropic 格式字段 | OpenAI 格式字段 | 值 |
| --- | --- | --- |
| `id` | `id` | 规范的 `author/model` id |
| `display_name` | | 显示名称 |
| `created_at` | `created` | 模型加入目录的时间（ISO 8601，或 Unix 秒数） |
| `type`: `"model"` | `object`: `"model"` | |
| | `owned_by` | author，例如 `anthropic` |

Anthropic 格式的列表一次返回全部结果（`has_more` 为 `false`）。

要查询单个模型，使用 `GET https://api.router.ezat.io/v1/models/{id}` 或 `GET https://api.router.ezat.io/openai/v1/models/{id}`。`{id}` 可以是规范 id，也可以是别名，响应中返回规范 id。在 `/v1/models/{id}` 上，规范 id 中的 `/` 要写成 `%2F`（`anthropic%2Fclaude-sonnet-5-5`）；SDK 会自动处理。key 不能调用的模型返回 404；如果 key 限定了其他模型，则返回 403。

### 公开模型目录

`GET https://api.router.ezat.io/api/models` 不需要 key。本页和[价格](https://docs.router.ezat.io/zh/pricing.md)页都是根据它生成的。

```bash
curl -sS https://api.router.ezat.io/api/models
```

`data` 中的每一项包含：

| 字段 | 值 |
| --- | --- |
| `id` | 规范 id |
| `aliases` | 模型的其他可用名称 |
| `displayName`, `description`, `family` | 显示名称、一句话描述、系列（`opus`、`sonnet` …） |
| `status` | `ACTIVE` 或 `DEPRECATED` |
| `contextWindow`, `maxOutputTokens` | token 上限 |
| `capabilities` | `tools`、`vision`、`thinking`、`promptCaching`、`cacheTtl1h`，以及适用时的 `sampling` |
| `available` | 目前没有提供方能提供这个模型时为 `false` |
| `pricing` | 价格，单位为美元 / 百万 token：`input`、`output`、`cacheWrite5m`、`cacheWrite1h`、`cacheRead`，以及 `longContext` 档位 |
| `officialPricing` | Anthropic 官方标价，结构相同 |

价格是字符串，以保留每一位小数。请忽略 `uuid` 字段：它仅供内部使用。

## 给 AI agent 的说明

1. 在 `model` 中发送规范 id（`author/model`）。目录中的别名也能用，不区分大小写。
2. 要查看用户的 key 能调用哪些模型，用这个 key（`x-api-key` 或 `Authorization: Bearer`）请求 `GET https://api.router.ezat.io/v1/models`；OpenAI 格式的工具请用 `GET https://api.router.ezat.io/openai/v1/models`。
3. 要查看所有模型及其价格和能力，请求 `GET https://api.router.ezat.io/api/models`（不需要 key），或读取 `https://docs.router.ezat.io/models.md`。
4. 不要在为用户编写的代码或配置中硬编码模型列表或价格；从上面的端点读取。
5. 404 `not_found_error`（OpenAI 格式：`model_not_found`）表示模型未知、已下线或处于预览阶段。请从列表中另选一个模型；重试没有用。
6. 优先选择同系列中最新的模型。新项目不要选择带 **即将下线** 标记的模型。