从零开始接入 OpenAI 兼容 API:5 分钟快速上手

前提条件

  1. 在任意中转站注册账号并获取 API Key
  2. 安装 Python 3.8+ 或 Node.js 18+
  3. 记下中转站提供的 Base URL(如 https://api.example.com/v1)

💡 不知道选哪家中转站?访问 APIS 套餐中心 查看推荐。

Python 接入

第一步:安装 SDK

pip install openai

第二步:基础对话

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.your-relay.com/v1"  # 替换为中转站地址
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "你是一个有帮助的助手。"},
        {"role": "user", "content": "用一句话解释什么是 API。"}
    ],
    max_tokens=100
)

print(response.choices[0].message.content)

第三步:流式输出(Streaming)

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "写一首关于编程的短诗"}],
    stream=True
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)

Node.js 接入

第一步:安装 SDK

npm install openai

第二步:基础对话

import OpenAI from 'openai'

const client = new OpenAI({
  apiKey: 'your-api-key',
  baseURL: 'https://api.your-relay.com/v1'
})

async function chat() {
  const response = await client.chat.completions.create({
    model: 'gpt-4o',
    messages: [
      { role: 'system', content: '你是一个有帮助的助手。' },
      { role: 'user', content: '用一句话解释什么是 API。' }
    ],
    max_tokens: 100
  })

  console.log(response.choices[0].message.content)
}

chat()

第三步:流式输出

async function streamChat() {
  const stream = await client.chat.completions.create({
    model: 'gpt-4o',
    messages: [{ role: 'user', content: '写一首关于编程的短诗' }],
    stream: true
  })

  for await (const chunk of stream) {
    const content = chunk.choices[0]?.delta?.content
    if (content) process.stdout.write(content)
  }
}

streamChat()

使用 cURL 快速测试

如果你只是想快速测试 API Key 是否可用:

curl https://api.your-relay.com/v1/chat/completions \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Hello!"}],
    "max_tokens": 50
  }'

切换模型

中转站的最大优势之一是一个 Key 调用多个模型。只需修改 model 参数:

# 使用 Claude
response = client.chat.completions.create(
    model="claude-sonnet-4-20250514",
    messages=[{"role": "user", "content": "你好"}]
)

# 使用 Gemini
response = client.chat.completions.create(
    model="gemini-2.5-pro",
    messages=[{"role": "user", "content": "你好"}]
)

# 使用 DeepSeek
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "你好"}]
)

常见问题

Q:返回 401 错误?

检查 API Key 是否正确,以及是否在请求头中使用了 Bearer 前缀。

Q:返回 429 错误?

触发了速率限制(Rate Limit)。检查中转站的 RPM/TPM 限制,或稍后重试。

Q:模型返回乱码?

确认 model 参数名称与中转站支持的模型列表一致。不同中转站的模型名可能略有差异。

💡 对比各中转站的费率差异?试试 APIS 智能对比