# 模型能力与兼容性

来源: https://platform.lyrouter.com/ai_gateway/docs/capabilities
更新日期: 2026-10-14

LYRouter 用同一个地址提供 Chat Completions、Anthropic Messages 和 Responses 三种对话接口，以及图像、视频、语音等接口；一次调用能否成功、参数是否生效，取决于所选模型和实际服务它的通道。网关会在 Chat Completions 与 Anthropic Messages 之间自动转换，Responses 请求则原样转发到通道的 Responses 接口。模型不支持请求的接口或输入时，网关直接返回 400；图像、视频接口会丢弃部分模型不支持的参数，并在响应头中列出。

## 接口与通道协议

每个通道使用一种上游协议：OpenAI 兼容或 Anthropic。网关按通道协议决定是否转换请求：

| 客户端调用的接口 | 网关的处理 | 选择模型时注意 |
| --- | --- | --- |
| [Chat Completions](https://platform.lyrouter.com/ai_gateway/docs/chat-completions)（`/v1/chat/completions`） | OpenAI 兼容通道直接发送；Anthropic 协议通道先转换成 Messages 请求，响应再转换回来 | 对话模型都可以使用 |
| [Anthropic Messages](https://platform.lyrouter.com/ai_gateway/docs/anthropic-messages)（`/v1/messages`） | 先转换成内部的 Chat Completions 结构，再按通道协议发出 | 对话模型都可以使用，不要求模型来自 Anthropic |
| [Responses](https://platform.lyrouter.com/ai_gateway/docs/responses-api)（`/v1/responses`） | 不做协议转换，原样转发到通道的 Responses 接口 | 通道必须提供 Responses 接口，Anthropic 协议通道没有该接口 |

通过 `/v1/messages` 调用时，错误响应也会转换成 Anthropic 格式，只有 `error.type` 和 `error.message`，没有 `error.code`。

### 转换时的参数处理

跨协议转换只保留双方都有对应含义的字段，其余字段会被去掉，这类去掉不会写进响应头。依赖下列参数的应用，请确认实际服务的通道协议：

| 方向 | 处理 |
| --- | --- |
| Chat Completions → Anthropic 协议通道 | 去掉 `n`、`logprobs`、`top_logprobs`、`response_format`、`frequency_penalty`、`presence_penalty`、`seed`、`parallel_tool_calls`、`logit_bias`、`reasoning_effort` 等字段；`stop` 转为 `stop_sequences`；没有 `max_tokens` 时补 4096；`enable_thinking`、`thinking_budget` 转为 Anthropic 的 `thinking` 设置 |
| Anthropic Messages → OpenAI 兼容通道 | `model`、`messages`、`system`、`max_tokens`、`stop_sequences`、`tools`、`tool_choice`、`thinking` 按含义转换；`stream`、`temperature`、`top_p`、`top_k`、`service_tier` 原样保留；其他字段去掉，消息和工具上的 `cache_control` 标记也会去掉 |

`reasoning_effort`、`enable_thinking`、`thinking_budget` 三个推理参数分属不同服务商，网关不在它们之间换算；对已适配的服务商，会去掉它不认识的那几个。同一模型由多个通道提供时，请对每个通道验证 JSON 输出、推理和缓存行为，见[应用接入多个服务商](https://platform.lyrouter.com/ai_gateway/docs/multi-provider)。

## 网关拒绝的请求

网关在发出请求前，按模型目录中声明的能力检查接口和输入，不符合时直接返回 400，不调用上游，也不改用备用模型：

| 报错原文（`error.message`） | `error.code` | 原因与处理 |
| --- | --- | --- |
| `This model does not support the <接口> API` | `unsupported_model_api` | 模型声明的接口不含当前接口，例如对话模型调用 `/v1/images/generations`，或只声明了 Chat Completions 的模型调用 `/v1/responses`。`<接口>` 为 `chat_completions`、`responses`、`embeddings`、`rerank`、`images`、`videos`、`audio` 之一。换用支持该接口的模型 |
| `This model does not support the <操作> operation` | `unsupported_model_operation` | 接口家族支持，但不支持具体操作，例如只会文生图的模型调用 `/v1/images/edits` |
| `This model accepts text input only` | `unsupported_model_input` | 输入和输出都只有文本的模型收到了图片、音频、视频或文件 |

模型目录没有声明接口范围时，网关通常放行，由上游决定是否接受。备用模型应与主模型支持相同的接口和输入类型，见[失败重试与备用模型](https://platform.lyrouter.com/ai_gateway/docs/fallback)。

## 视觉输入与图像生成

两者是不同的能力，使用不同的接口：

- **视觉理解**：在对话接口的消息中放入图片，模型输出文本。模型的输入模态需要包含图像，只接受文本的模型会返回 400 `This model accepts text input only`。
- **图像生成与编辑**：调用 `/v1/images/generations` 或 `/v1/images/edits`，使用输出模态包含图像的模型，模型输出图片。
- **视频生成**：调用 `/v1/videos` 提交异步任务。

在模型广场左侧用「输入模态」「输出模态」筛选，就能区分这几类模型。各模型的接口、参数和计费见[多模态能力](https://platform.lyrouter.com/ai_gateway/docs/multimodal)。

（截图：公开模型广场列出网关已完成适配的模型，可按输入和输出模态筛选；能否调用以工作空间模型广场为准。）

## 图像与视频接口的参数

在图像、视频接口上，网关会丢弃部分所选模型不支持的参数后照常调用，并在响应头 `X-Gateway-Unsupported-Parameters` 中列出被丢弃的参数名。希望这类情况直接报错时，在请求中加上：

```bash
curl "$LYROUTER_BASE_URL/v1/images/generations" \
  -H "Authorization: Bearer $LYROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Gateway-Strict-Parameters: true" \
  -d '{"model":"google/gemini-3-pro-image","prompt":"一只坐在窗边的猫"}'
```

开启严格模式后，出现会被丢弃的参数时返回 400 `unsupported parameters for this model: <参数名>`，`error.code` 为 `unsupported_parameters`，不调用上游。各模型支持哪些参数、会丢弃哪些参数，见[多模态能力](https://platform.lyrouter.com/ai_gateway/docs/multimodal)。环境变量的设置见[完成第一次模型调用](https://platform.lyrouter.com/ai_gateway/docs/quickstart)。

## 查询模型声明的能力

用 API Key 调用 [`GET /v1/models`](https://platform.lyrouter.com/ai_gateway/docs/models)，列表中的模型条目在模型目录有相应信息时会带上：

| 字段 | 含义 |
| --- | --- |
| `api_types` | 模型声明支持的接口，如 `chat_completions`、`responses`、`images` |
| `input_modalities` / `output_modalities` | 输入、输出模态，如 `text`、`image` |
| `context_length` / `max_output_tokens` | 上下文长度和最大输出长度 |
| `supported_params` | 模型声明支持的参数，仅供参考，网关不据此删减对话请求的参数 |

上下文长度、工具调用和结构化输出由上游最终判定。更换模型、服务商或通道后，请用真实请求重新验证参数、流式事件和工具调用，见[模型版本与下线](https://platform.lyrouter.com/ai_gateway/docs/versions)。

## 常见问题

### 设置了 `response_format`，为什么有时没有返回 JSON？

**答：** 请求被路由到 Anthropic 协议的通道时，`response_format` 会在转换中被去掉。在[请求日志](https://platform.lyrouter.com/ai_gateway/docs/logs)中查看这次请求的「服务商」，并对照「原始报文」中的「上游请求」。需要稳定的 JSON 输出时，在提示词中明确要求输出格式；也可以请账号管理员在模型详情中停用不需要的来源，见[应用接入多个服务商](https://platform.lyrouter.com/ai_gateway/docs/multi-provider)。

### Codex 调用返回错误，但同一个模型用 Chat Completions 正常，怎么办？

**答：** Codex 使用 Responses 接口，请求会原样转发给通道的 Responses 接口。返回 400 `This model does not support the responses API` 时换用声明支持 Responses 的模型；返回上游的 404 等错误时，可能是服务这次请求的通道没有提供 Responses 接口，请换用其他模型，或请账号管理员调整该模型的来源。
