快速开始
三步拿到第一个返回结果,通常不超过五分钟。
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": "你好" }
]
}'
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 必填 | 模型 ID,见模型超市。必须与上架名称完全一致,注意大小写。 |
messages | array | 必填 | 消息列表。每条含 role(system / user / assistant)与 content。 |
stream | boolean | 否 | 是否流式输出,默认 false。设为 true 时逐字返回。 |
temperature | number | 否 | 随机性,0–2。要稳定输出用 0.2,要创意用 0.8 以上。 |
max_tokens | integer | 否 | 最大生成词元数。留空则由模型默认决定。 |
top_p | number | 否 | 核采样,与 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) | 50 | 50 | 空 |
加 enable_thinking: false | 2 | 0 | "接入成功" |
怎么关掉思考
简单任务(分类、抽取、改写、格式化)不需要推理,加上这个参数能省数倍成本:
关闭思维链
{
"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。