🚀 快速开始

Model API Relay 提供 OpenAI 兼容的 API 接口,你可以直接使用现有的 OpenAI SDK 或任何兼容 OpenAI 格式的工具来调用。

1. 获取 API Key

登录后在 个人中心 查看你的 API Key。

2. 调用 API

curl https://apio.m1f.cn/v1/chat/completions \
  -H "Authorization: Bearer sk-你的API密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "你好!"}],
    "stream": true
  }'

📡 API 端点

聊天补全 (Chat Completions)

POST /v1/chat/completions

完全兼容 OpenAI Chat Completions API。支持所有参数:

  • model - 模型名称(支持自动路由到对应通道)
  • messages - 消息列表
  • temperature - 温度 (0-2)
  • max_tokens - 最大生成 token 数
  • stream - 是否启用流式响应 (SSE)
  • tools - 工具调用(Function Calling)

Anthropic Messages (原生)

POST /v1/messages

直接使用 Anthropic 格式调用 Claude 模型。

模型列表

GET /v1/models

获取所有可用的模型列表。

🔄 格式自动转换

API Relay 的核心功能之一是自动在 OpenAI 和 Anthropic 格式之间转换:

OpenAI → Anthropic

当使用 OpenAI 格式调用但模型名为 Claude 系列时,系统会自动将请求转换为 Anthropic Messages API 格式,并将响应转换回 OpenAI 格式。

Anthropic → OpenAI

当使用 Anthropic 格式调用 OpenAI 模型时,系统会自动转换。

示例:使用 OpenAI SDK 调用 Claude

from openai import OpenAI

client = OpenAI(
    api_key="sk-你的密钥",
    base_url="https://apio.m1f.cn"
)

response = client.chat.completions.create(
    model="claude-3-5-sonnet-20241022",
    messages=[{"role": "user", "content": "你好!"}]
)
print(response.choices[0].message.content)

🐍 Python 示例

from openai import OpenAI

client = OpenAI(
    api_key="sk-你的密钥",
    base_url="https://apio.m1f.cn"
)

# 流式调用
stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "讲个笑话"}],
    stream=True
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

📜 JavaScript 示例

const response = await fetch("https://apio.m1f.cn/v1/chat/completions", {
    method: "POST",
    headers: {
        "Authorization": "Bearer sk-你的密钥",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        model: "gpt-4o",
        messages: [{ role: "user", content: "你好" }],
        stream: true
    })
});

const reader = response.body.getReader();
// 处理 SSE 流...

💰 配额与计费

每个用户都有配额限制,配额以 token 数量计算。可以在 个人钱包 查看余额和使用情况。

  • 每次 API 调用会根据消耗的 token 数量扣除费用
  • 费用标准依据各上游 API 的定价
  • 配额不足时 API 调用将被拒绝

⚠️ 错误码

HTTP 状态码说明
400请求格式错误
401API Key 无效或缺失
402配额不足
403模型未授权
429请求频率超限
503无可用通道

💬 Web 聊天界面

除了 API 调用外,我们还提供了一个 ChatGPT 风格的 Web 聊天界面:

  • 实时流式响应(SSE)
  • Markdown 渲染与代码高亮
  • 对话历史管理与搜索
  • 多模型切换
  • 深色/浅色主题切换
  • 对话置顶、重命名、删除
打开聊天界面