统一模型调用

统一大模型调用网关,对接多家模型提供商(OpenAI、Anthropic、Google、DeepSeek 等),提供 OpenAI 兼容的聊天接口,按 token 计费。

POST/v1/chat/completions

对话补全

POST/v1/chat/completions

兼容 OpenAI 的对话补全接口。通过统一 API 访问 OpenAI、Anthropic、Google、DeepSeek、MiniMax 等多家模型提供商。按 token 用量计费。

模型列表

GET/v1/models

返回所有当前可用的模型及定价信息(每百万 token 的输入/输出价格)和最大上下文长度。使用响应中的模型 id 作为对话补全的 model 参数。

流式传输(SSE)

设置 "stream": true 以接收 Server-Sent Events。每个事件包含一个 chat.completion.chunk 对象,带有增量的 delta.content。流以 data: [DONE] 消息结束。

流事件格式

data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"},"index":0}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","choices":[{"delta":{"content":" world"},"index":0}]}
data: [DONE]

参数

参数类型必填描述
modelstring必填模型名称,如 'gpt-4o'、'claude-sonnet-4'、'deepseek-chat'。使用 GET /v1/models 查看可用模型列表。
messagesarray必填消息对象数组,包含 'role'(system/user/assistant)和 'content' 字段。
temperaturefloat可选 (默认: 0.7)采样温度(0-2)。值越高随机性越强。
max_tokensinteger可选 (默认: 1024)响应的最大 token 数。
streamboolean可选 (默认: false)启用 SSE 流式传输以实时输出 token。
top_pfloat可选核采样(0-1)。
stopstring | string[]可选停止序列。
toolsarray可选用于函数调用的工具/函数定义。

响应

Response
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "gpt-4o",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 8,
    "total_tokens": 20
  }
}

示例

import requests

API_KEY = "your_api_key_here"
BASE_URL = "https://api.qinyanai.com"

# --- Chat completion ---
response = requests.post(
    f"{BASE_URL}/v1/chat/completions",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "gpt-4o",
        "messages": [
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "What is attention mechanism?"}
        ],
        "temperature": 0.7,
        "max_tokens": 1024
    }
)
result = response.json()
print(result["choices"][0]["message"]["content"])

# --- Streaming ---
response = requests.post(
    f"{BASE_URL}/v1/chat/completions",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "gpt-4o",
        "messages": [{"role": "user", "content": "Hello!"}],
        "stream": True
    },
    stream=True
)
for line in response.iter_lines():
    if line:
        print(line.decode())

# --- List available models ---
response = requests.get(
    f"{BASE_URL}/v1/models",
    headers={"Authorization": f"Bearer {API_KEY}"}
)
for model in response.json()["data"]:
    print(f"{model['id']} (by {model['owned_by']})")