统一模型调用

统一大模型调用网关,对接多家模型提供商(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]

响应字段说明

/v1/chat/completions响应格式: JSON
字段类型说明
idstring补全请求唯一标识。
objectstring非流式为 chat.completion;流式为 chat.completion.chunk。
createdinteger创建时间的 Unix 时间戳。
modelstring实际使用的模型。
choices[]object[]候选输出列表。
choices[].indexinteger候选序号。
choices[].messageobject非流式响应的 role、content 和 tool_calls。
choices[].deltaobject流式块新增的 role、content 或 tool_calls。
choices[].finish_reasonstring | null结束原因,如 stop、length、tool_calls。
usageobject | nullprompt_tokens、completion_tokens 和 total_tokens。
/v1/models响应格式: JSON
字段类型说明
objectstring固定为 list。
data[]object[]当前可用模型列表。
data[].idstring请求中使用的模型 ID。
data[].objectstring固定为 model。
data[].createdinteger模型记录创建时间。
data[].owned_bystring模型提供方。
data[].input_price_per_1m / output_price_per_1mnumber | null每百万输入/输出 token 价格。
data[].max_context_tokensinteger | null最大上下文 token 数。

参数

参数类型必填描述
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']})")