快速开始

三步拿到第一个返回结果,通常不超过五分钟。

  1. 在注册页创建账号
  2. 登录后进入控制台,点「创建密钥」,得到 sk- 开头的字符串
  3. 用下面的地址和密钥发起请求
BASE URL https://api.wxmassage.cn/v1
兼容性说明:本接口完全兼容 OpenAI 规范。 如果你已经在用 OpenAI SDK,只需把 base_url 换成上面的地址、api_key 换成你的密钥,其余代码不用改。

鉴权方式

所有请求都通过 HTTP 请求头传递密钥:

HTTP Header
Authorization: Bearer sk-your-api-key
Content-Type: application/json
请勿把密钥写在前端代码里。 浏览器里的 JS 任何人都能看到。正确做法是让后端服务持有密钥,前端只调用你自己的后端。

对话接口

最常用的接口,发送消息列表,返回模型回复。

POST /v1/chat/completions
curl https://api.wxmassage.cn/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-your-api-key" \
  -d '{
    "model": "deepseek-v4-pro",
    "messages": [
      { "role": "system", "content": "你是一名简洁的助手" },
      { "role": "user", "content": "你好" }
    ]
  }'

请求参数

参数类型必填说明
modelstring必填 模型 ID,见模型超市。必须与上架名称完全一致,注意大小写。
messagesarray必填 消息列表。每条含 role(system / user / assistant)与 content。
streamboolean否 是否流式输出,默认 false。设为 true 时逐字返回。
temperaturenumber否 随机性,0–2。要稳定输出用 0.2,要创意用 0.8 以上。
max_tokensinteger否 最大生成词元数。留空则由模型默认决定。
top_pnumber否 核采样,与 temperature 二选一调整即可。

返回示例

200 OK
{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1762000000,
  "model": "deepseek-v4-pro",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "你好,有什么可以帮你?" },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 9,
    "total_tokens": 27
  }
}
计费依据就是 usage 字段。 每次调用后可以在控制台的「调用记录」里看到对应的词元消耗与扣费金额。

流式输出

聊天类产品建议开启流式,用户能边看边等,体感快很多。

stream: true
curl https://api.wxmassage.cn/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-your-api-key" \
  -d '{
    "model": "deepseek-v4-pro",
    "stream": true,
    "messages": [{ "role": "user", "content": "数到五" }]
  }'

返回是一串 SSE 数据流,每行以 data: 开头:

SSE 响应
data: {"choices":[{"delta":{"content":"一"}}]}
data: {"choices":[{"delta":{"content":"、二"}}]}
data: {"choices":[{"delta":{"content":"、三"}}]}
data: [DONE]

解析要点

  • 逐行读取,跳过空行,遇到 data: [DONE] 结束
  • 取 choices[0].delta.content 拼接到输出,该字段可能为空
  • 如果要拿准确用量,请求时加 "stream_options": {"include_usage": true},最后一个数据块会带 usage
如果你的流式输出变成「等很久然后一次性蹦出全文」, 通常是中间的反向代理或网关开了缓冲。本平台已关闭缓冲,若仍出现,检查你自己的 Nginx / CDN 是否开了 proxy_buffering 或压缩优化。

思维链与空回复

部分推理型模型(如 deepseek-v4-pro、qwen3.8-max、MiniMax-M3)默认「先思考再回答」。 思考过程也会消耗词元,并计入 completion_tokens。

如果返回内容为空,多半是 max_tokens 太小。 所有预算都被思维链吃掉了,正文还没来得及生成。把 max_tokens 提到 300 以上通常就能解决。

实测对比(同一句提问):

请求方式输出词元其中思维链正文
默认(max_tokens=50)5050空
加 enable_thinking: false20"接入成功"

怎么关掉思考

简单任务(分类、抽取、改写、格式化)不需要推理,加上这个参数能省数倍成本:

关闭思维链
{
  "model": "deepseek-v4-pro",
  "enable_thinking": false,
  "max_tokens": 500,
  "messages": [{ "role": "user", "content": "把这段话压缩到50字" }]
}
什么时候该保留思考:数学推导、代码重构、多步逻辑判断、需要严谨依据的场景。 这些任务关掉思考质量会明显下降,省下的钱不划算。

多语言示例

Python(官方 SDK)

pip install openai
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.wxmassage.cn/v1"
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "你好"}]
)
print(resp.choices[0].message.content)

Node.js

npm i openai
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-your-api-key",
  baseURL: "https://api.wxmassage.cn/v1"
});

const resp = await client.chat.completions.create({
  model: "deepseek-v4-pro",
  messages: [{ role: "user", content: "你好" }]
});
console.log(resp.choices[0].message.content);

Java(OkHttp)

Java
String body = """
{
  "model": "deepseek-v4-pro",
  "messages": [{"role":"user","content":"你好"}]
}""";

Request req = new Request.Builder()
    .url("https://api.wxmassage.cn/v1/chat/completions")
    .header("Authorization", "Bearer sk-your-api-key")
    .header("Content-Type", "application/json")
    .post(RequestBody.create(body, MediaType.parse("application/json")))
    .build();

try (Response resp = client.newCall(req).execute()) {
    System.out.println(resp.body().string());
}

Go

Go
payload := []byte(`{
  "model": "deepseek-v4-pro",
  "messages": [{"role":"user","content":"你好"}]
}`)

req, _ := http.NewRequest("POST",
    "https://api.wxmassage.cn/v1/chat/completions",
    bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer sk-your-api-key")
req.Header.Set("Content-Type", "application/json")

resp, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
io.Copy(os.Stdout, resp.Body)

错误码

HTTP含义怎么处理
400请求参数错误检查 model 是否存在、messages 格式是否正确
401密钥无效确认密钥完整、未被删除、没有多余空格
403额度不足或无权限去控制台看余额;或该模型未对当前分组开放
404路径或模型不存在确认 base URL 是 .../v1,模型名大小写一致
429触发频率限制降低并发,加入指数退避重试
500服务端或上游异常稍后重试;持续出现请联系技术支持

错误响应格式

400 Bad Request
{
  "error": {
    "message": "无效的模型:deepseek-v4",
    "type": "invalid_request_error",
    "code": "invalid_model"
  }
}

限流与额度

  • 额度:按词元消耗实时扣减。余额不足时返回 403,充值后立即恢复。
  • 密钥额度上限:创建密钥时可设上限,达到后该密钥自动停用,避免意外超额。
  • 频率限制:默认按账号等级设置并发上限。超限返回 429,建议客户端做退避重试。
  • 长文本:单次请求超时时间 300 秒,超长生成建议用流式。
生产环境必做:为每个密钥设置额度上限。 密钥泄露或代码死循环时,上限是最后一道防线——没有上限,一晚上可能把余额刷光。

常见问题

为什么不建议前端直连?

前端代码对所有人可见,密钥会被抓包拿走。正确做法:你的后端持有密钥,前端调你的后端,由后端转发。

可以并发调用吗?

可以。注意账号等级对应的并发上限,批量任务建议控制在 5–10 并发并加重试。

如何统计自己的用量?

控制台的「调用记录」能看到每次请求的模型、输入/输出词元与扣费。需要程序化拉取时,可用控制台的用量导出功能。

支持 Function Calling 吗?

取决于模型本身。DeepSeek、Qwen、GLM、Kimi 等主流型号均支持,按 OpenAI 的 tools 参数格式传即可。

流式输出最后一个包没有 usage?

需要显式加 "stream_options": {"include_usage": true},否则部分模型不会返回用量统计。

模型名提示不存在,但货架上明明有?

大概率是大小写不一致,例如写成 glm-5 而实际是 GLM-5。直接复制货架上的名称最保险。

文档没覆盖的问题,可以致电 181 7863 9106 或发邮件到 18178639106@163.com。