外观
OpenAI 兼容格式
AI通道对外提供与 OpenAI 官方 SDK 完全兼容的接口,路径、参数、响应结构都保持一致。你只需要替换 base_url 和 api_key。
接口地址
https://ai.aitongdao.com/v1所有 OpenAI 风格的 endpoint(/chat/completions、/responses、/models 等)都拼接在这个前缀后面。
认证方式
使用 Bearer Token:
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxsk- 开头的字符串就是你在后台"令牌"页创建得到的 API Key。
Chat Completions
接口说明
OpenAI 最常用的对话接口。
请求地址
POST https://ai.aitongdao.com/v1/chat/completionsGPT 系列必须流式
GPT 系列强制流式
调用 gpt-5、gpt-5-codex 等 GPT 系列模型时,stream 参数必须设为 true。非流式请求会被拒绝。Claude 和 Gemini 系列可以自由选择是否流式。
请求示例
bash
curl https://ai.aitongdao.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"stream": true,
"messages": [
{"role": "system", "content": "你是一个简洁的助手。"},
{"role": "user", "content": "解释一下什么是 token。"}
]
}'请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名,如 gpt-5、claude-sonnet-4-6 |
messages | array | 是 | 对话消息数组,每项含 role 和 content |
stream | boolean | GPT 必填 | 是否流式输出,GPT 系列必须为 true |
max_tokens | integer | 否 | 限制输出的最大 token 数 |
temperature | number | 否 | 采样温度,0-2 之间 |
top_p | number | 否 | 核采样阈值,0-1 之间 |
n | integer | 否 | 生成几条候选结果 |
stop | string/array | 否 | 触发终止的字符串 |
user | string | 否 | 用户标识,便于追踪 |
Messages 格式
json
[
{"role": "system", "content": "系统提示"},
{"role": "user", "content": "用户消息"},
{"role": "assistant", "content": "模型回复"}
]多轮对话时把历史消息全部按顺序放进 messages 数组。
响应格式
非流式响应(Claude、Gemini 可用):
json
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1712345678,
"model": "claude-sonnet-4-6",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "回复内容"},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 12, "completion_tokens": 30, "total_tokens": 42}
}流式输出
流式响应是一串以 data: 前缀的 SSE 事件:
- 客户端发送
stream: true的请求。 - 服务端先返回首个 chunk(含元数据)。
- 后续每个 chunk 带一段增量文本(
delta.content)。 - 最后一个事件是
data: [DONE]。
支持的模型
GPT 系列(必须流式)
| 模型 | 说明 | 上下文 | 流式要求 |
|---|---|---|---|
gpt-5 | GPT-5 主力 | 长 | 必须 |
gpt-5-codex | GPT-5 代码优化版 | 长 | 必须 |
gpt-5.2-codex | 更新的代码版本 | 长 | 必须 |
Claude 系列(OpenAI 格式、流式可选)
| 模型 | 说明 | 上下文 | 流式 |
|---|---|---|---|
claude-opus-4-6 | 旗舰 Opus | 超长 | 可选 |
claude-sonnet-4-6 | 平衡型 Sonnet | 超长 | 可选 |
Gemini 系列(OpenAI 格式、流式可选)
| 模型 | 说明 | 上下文 | 流式 |
|---|---|---|---|
gemini-2.5-pro | Gemini 2.5 Pro | 长 | 可选 |
完整模型列表以后台"可用模型"页面为准。
代码示例
Python(GPT 流式)
python
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://ai.aitongdao.com/v1")
stream = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "写一段快排的 Python 实现"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)Python(Claude 非流式)
python
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://ai.aitongdao.com/v1")
resp = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "解释 TCP 三次握手"}],
)
print(resp.choices[0].message.content)Node.js(GPT 流式)
javascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://ai.aitongdao.com/v1",
});
const stream = await client.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "写一段快排" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}cURL(非 GPT)
bash
curl https://ai.aitongdao.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "你好"}]
}'错误处理
错误响应格式
json
{
"error": {
"message": "具体错误描述",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}常见错误码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 401 | authentication_error | API Key 无效、禁用或过期 |
| 403 | permission_error | 当前分组没有该模型的权限 |
| 429 | rate_limit_error | 触发限流 |
| 400 | invalid_request_error | 请求参数错误(比如 GPT 没开流式) |
| 500 | server_error | 上游或网关内部错误 |
带重试的调用
python
import time
from openai import OpenAI, APIError
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://ai.aitongdao.com/v1")
def call_with_retry(messages, retries=3):
for i in range(retries):
try:
return client.chat.completions.create(
model="claude-sonnet-4-6", messages=messages
)
except APIError as e:
if i == retries - 1:
raise
time.sleep(2 ** i)最佳实践
- 给每个请求设超时(30-120 秒,视模型而定),避免客户端卡死。
- 重试用指数退避:429/5xx 等瞬时错误适合重试。
- GPT 系列用流式:既是硬性要求,也能更早拿到第一字节。
- 压住
max_tokens:给输出一个合理上限,避免预算浪费。
速率限制
| 维度 | 默认值 |
|---|---|
| 每分钟请求数 | 受分组和账户等级限制 |
| 每小时请求数 | 受分组和账户等级限制 |
| 并发请求数 | 受分组和账户等级限制 |
触发限流会返回 429,请在客户端做好退避重试。高并发需求可联系客服调整。