# 兼容接口

> Anthropic Messages、OpenAI Responses、legacy Completions 与模型清单。
> 分组：模型接入
> 更新时间：2026-10-12
> 原文：https://www.chenra.com/docs/model-compatible

## 兼容接口

除了 OpenAI 标准端点，网关还提供几个生态兼容入口，让现有客户端**不改代码**直接指向本站。

### Anthropic Messages（Claude 生态）

把 Anthropic SDK 的 base_url 设为 https://api.chenra.com/api/relay（SDK 会自己补 /v1/messages）。
支持文本、图片、工具调用与流式；返回的 content 是 Anthropic 的内容块数组。

from anthropic import Anthropic

client = Anthropic(
 api_key="sk-你的密钥",
 base_url="https://api.chenra.com/api/relay",
)

msg = client.messages.create(
 model="deepseek-chat",
 max_tokens=512,
 messages=[{"role": "user", "content": "你好"}],
)
print(msg.content[0].text)

### OpenAI Responses

POST /responses：支持 instructions、input（字符串或消息数组）、图片、工具调用与流式
（response.created → response.output_* → response.completed）。

### 文本补全（legacy Completions）

POST /completions：OpenAI 已废弃的补全接口，折成一次文本对话，响应为 text_completion 形状
（choices[].text）。只支持文本模型。

### 模型清单

GET /models 返回 OpenAI 格式的模型列表（{object:"list", data:[...]}），
GET /models/{id} 返回单个模型；id 即填进请求体 model 字段的标识。

## Anthropic Messages（兼容）

`POST /messages`

Claude 生态入口；base_url 用 https://api.chenra.com/api/relay，SDK 自动补 /v1/messages。

### 请求参数

| 参数 | 类型 | 必填 | 说明 | 默认值 |
| --- | --- | --- | --- | --- |
| model | string | 是 | 模型标识 |  |
| max_tokens | integer | 是 | 最大生成 token 数（Anthropic 必填） |  |
| messages | array | 是 | Anthropic 消息数组 |  |
| system | string | 否 | 系统提示 |  |
| stream | boolean | 否 | 是否流式 | false |

### 请求示例

```bash
curl https://api.chenra.com/api/relay/v1/messages \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-chat",
    "max_tokens": 512,
    "messages": [{"role": "user", "content": "你好"}]
  }'
```

### 响应示例

```json
{
  "id": "msg_9c1a...",
  "type": "message",
  "role": "assistant",
  "model": "deepseek-chat",
  "content": [
    { "type": "text", "text": "你好！有什么可以帮你的吗？" }
  ],
  "stop_reason": "end_turn",
  "usage": { "input_tokens": 10, "output_tokens": 12 }
}
```

### 错误码

| 错误码 | 说明 |
| --- | --- |
| 400 | 缺少 model / messages 参数 |
| 404 | 模型不存在或未启用 |

## OpenAI Responses（兼容）

`POST /responses`

支持 instructions、input（字符串或消息数组）、图片、工具调用与流式。

### 请求参数

| 参数 | 类型 | 必填 | 说明 | 默认值 |
| --- | --- | --- | --- | --- |
| model | string | 是 | 模型标识 |  |
| input | string \| array | 是 | 输入内容 |  |
| instructions | string | 否 | 系统指令 |  |
| stream | boolean | 否 | 是否流式 | false |

### 请求示例

```bash
curl https://api.chenra.com/api/relay/v1/responses \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.7-flash",
    "input": "你好"
  }'
```

### 响应示例

```json
{
  "id": "resp_5b7c...",
  "object": "response",
  "status": "completed",
  "model": "qwen3.7-flash",
  "output": [
    { "type": "message", "role": "assistant", "status": "completed", "content": [{ "type": "output_text", "text": "你好！" }] }
  ],
  "output_text": "你好！",
  "usage": { "input_tokens": 8, "output_tokens": 4, "total_tokens": 12 }
}
```

### 错误码

| 错误码 | 说明 |
| --- | --- |
| 400 | 缺少 model / input 参数 |
| 404 | 模型不存在或未启用 |

## 文本补全（legacy）

`POST /completions`

OpenAI 已废弃的补全接口，折成一次文本对话，响应为 text_completion 形状。

### 请求参数

| 参数 | 类型 | 必填 | 说明 | 默认值 |
| --- | --- | --- | --- | --- |
| model | string | 是 | 文本模型标识 |  |
| prompt | string | 是 | 提示词 |  |
| stream | boolean | 否 | 是否流式 | false |

### 请求示例

```bash
curl https://api.chenra.com/api/relay/v1/completions \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.7-flash",
    "prompt": "用一句话介绍杭州"
  }'
```

### 响应示例

```json
{
  "id": "cmpl-1f3b...",
  "object": "text_completion",
  "model": "qwen3.7-flash",
  "choices": [
    { "index": 0, "text": "杭州是一座以西湖闻名的历史文化名城。", "finish_reason": "stop" }
  ]
}
```

### 错误码

| 错误码 | 说明 |
| --- | --- |
| 400 | 缺少 model / prompt，或该模型不支持文本补全 |

## 模型清单

`GET /models`

OpenAI 格式的模型列表；id 即填进请求体 model 字段的标识。

### 请求示例

```bash
curl https://api.chenra.com/api/relay/v1/models \
  -H "Authorization: Bearer sk-你的密钥"
```

### 响应示例

```json
{
  "object": "list",
  "data": [
    { "id": "qwen3.7-flash", "object": "model", "owned_by": "bailian", "capabilities": ["llm", "vlm"] }
  ]
}
```

### 错误码

| 错误码 | 说明 |
| --- | --- |
| 401 | 未带 Key 或 Key 无效 |
