文本生成(OpenAI Chat Completions 协议)

接口概述

使用 OpenAI Chat Completions 格式进行纯文本对话生成。支持多轮对话、系统提示词、函数调用与流式输出;参数语义与 OpenAI 官方一致,可直接使用官方 SDK。

接口地址

POST https://ai.jw-info.com/v1/chat/completions

请求头

请求头是否必填说明
Content-Typeapplication/json
AuthorizationBearer {API_KEY},也可用 x-api-key: {API_KEY}(两种方式共用同一把密钥)

请求参数

请求体(JSON)

参数名类型是否必填默认值说明
modelstring-模型名称,见下方「可用模型」或模型广场
messagesarray-对话消息列表,按时间顺序排列
temperaturefloat1.0采样温度,范围 [0, 2]。值越高输出越随机,越低越确定
top_pfloat1.0核采样(nucleus sampling),范围 [0, 1],仅保留累积概率达 top_p 的 token
max_tokensinteger模型默认值生成的最大 token 数(旧版参数,部分模型仍支持)
max_completion_tokensinteger模型默认值生成的最大 token 数(新版参数,优先级高于 max_tokens)
ninteger1为每个输入生成的候选回复数量
streambooleanfalse是否启用流式输出(SSE)
stream_optionsobjectnull流式输出选项。使用默认设置时,响应末尾会返回一帧只带 usage 的统计(无需调用方设置);显式传 {"include_usage": false} 则不返回该帧
stopstring / arraynull停止词:遇到该字符串时停止生成,可传单个字符串或字符串数组
seedintegernull随机种子,用于可复现的输出
presence_penaltyfloat0存在惩罚,范围 [-2.0, 2.0];正值惩罚已出现过的 token
toolsarraynull可用的工具/函数定义列表
tool_choicestring / object"auto"工具选择策略:auto / none / required,或指定具体工具 {"type":"function","function":{"name":"my_func"}}
response_formatobjectnull输出格式约束:纯文本模式可设为 {"type":"text"}{"type":"json_object"}

messages 结构

messages 是一个消息对象数组,每条消息包含:

字段类型说明
rolestring消息角色,可选值:system、developer、user、assistant、tool
contentstring消息内容(纯文本模式下为字符串;视觉理解场景为内容数组,见「视觉理解」)

各角色含义:

role说明
system系统级提示词,用于设定 AI 的行为、角色和输出风格,通常放在 messages 数组的第一条
developer开发者级提示词,与 system 类似但优先级更高
user用户输入消息
assistantAI 历史回复消息,用于多轮对话
tool工具调用结果

请求示例

示例 1:简单对话

{
  "model": "deepseek-v3.2",
  "messages": [
    {"role": "user", "content": "你好,请用一句话介绍你自己"}
  ],
  "temperature": 0.7,
  "max_tokens": 1024
}

示例 2:带系统提示词的多轮对话

{
  "model": "qwen3.7-max",
  "messages": [
    {"role": "system", "content": "你是一个专业的 Python 编程助手,回答问题时请提供代码示例。"},
    {"role": "user", "content": "如何在 Python 中读取 JSON 文件?"},
    {"role": "assistant", "content": "可以使用内置的 json 模块:……"},
    {"role": "user", "content": "如果要写入 JSON 文件呢?"}
  ],
  "temperature": 0.5,
  "max_tokens": 2048
}

示例 3:流式输出

{
  "model": "deepseek-v3.2",
  "messages": [
    {"role": "user", "content": "写一首关于秋天的五言诗"}
  ],
  "stream": true,
  "max_tokens": 512
}

响应参数

非流式响应参数

字段类型说明
idstring本次请求的唯一标识符
objectstring固定值 chat.completion
createdinteger创建时间戳(Unix 秒)
modelstring实际使用的模型名称
choicesarray回复列表
choices[].indexinteger候选回复的索引(从 0 开始)
choices[].messageobject回复消息对象
choices[].message.rolestring固定值 assistant
choices[].message.contentstringAI 回复的文本内容
choices[].finish_reasonstring停止原因:stop(正常结束)、length(达到长度限制)、content_filter(内容过滤)、tool_calls(触发工具调用)
usageobjectToken 用量统计
usage.prompt_tokensinteger输入(提示词)消耗的 token 数
usage.prompt_tokens_details.cached_tokensinteger命中缓存的输入 token 数(计费按缓存价)
usage.completion_tokensinteger输出(回复)消耗的 token 数
usage.total_tokensinteger总 token 消耗

流式响应参数(SSE)

流式响应中,每条 data: 行是一个 JSON 对象,增量内容在 choices[].delta

字段类型说明
idstring本次请求的唯一标识符
objectstring固定值 chat.completion.chunk
createdinteger创建时间戳
modelstring模型名称
choices[].indexinteger候选回复索引
choices[].deltaobject增量内容对象
choices[].delta.rolestring首个 chunk 中出现 assistant
choices[].delta.contentstring本次增量的文本内容
choices[].finish_reasonstring最后一个内容 chunk 中出现,取值同非流式
usageobject响应末尾单独一帧给最终用量(默认返回;显式关闭 stream_options 时不返回)

响应示例

非流式响应:

{
  "id": "chatcmpl-abc123def456",
  "object": "chat.completion",
  "created": 1720000000,
  "model": "deepseek-v3.2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好!我是 DeepSeek,很高兴为你服务。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 15,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens": 22,
    "total_tokens": 37
  }
}

流式响应(节选,最后以 data: [DONE] 结束):

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1720000000,"model":"deepseek-v3.2","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1720000000,"model":"deepseek-v3.2","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1720000000,"model":"deepseek-v3.2","choices":[{"index":0,"delta":{"content":",我是 DeepSeek。"},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1720000000,"model":"deepseek-v3.2","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":6,"total_tokens":21}}

data: [DONE]

流式调用说明

说明细节
事件流格式data: {chunk json},末尾 data: [DONE],与 OpenAI 完全一致,可直接用官方 SDK
usage末尾有一帧只带 usage 的 chunk(仅含用量统计),默认返回、无需设置
费用流式调用在流结束(或客户端断开)后结算,本次费用可在控制台「费用中心」查看
中途断开客户端断开时中止本次生成;按已收到的用量(含估算)计费,完全拿不到用量时记 0 费用并标记失败
超时流式读超时放宽到 300 秒

错误响应

错误响应格式

{
  "error": {
    "message": "错误描述信息",
    "type": "错误类型",
    "param": "相关参数名(如适用)",
    "code": "错误代码(如适用)"
  }
}

本平台自身产生的错误按「错误码」页的统一格式返回 {"detail": "说明文字"};模型侧报错时以 502 返回,detail 里带上模型给出的原始正文(即上表形状,param 指出出错字段),便于对照模型文档定位。

常见错误类型

模型侧报错时,正文里的 type / code 常见取值:

HTTP错误类型说明
400invalid_request_error请求格式错误或参数无效
401authentication_errorAPI Key 无效或缺失
403permission_error无权访问该资源或模型
404not_found_error请求的资源不存在
429rate_limit_error请求频率超限,请稍后重试
429insufficient_quota配额不足,请检查账户余额
500server_error服务端内部错误
503server_error服务暂时不可用

本平台侧的状态码(401 密钥无效 / 402 余额不足 / 404 模型未上架 / 502 模型报错等)见「错误码」页。

代码示例

cURL

非流式调用:

curl https://ai.jw-info.com/v1/chat/completions \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3.2",
    "messages": [{"role": "user", "content": "你好,请介绍一下你自己"}],
    "temperature": 0.7,
    "max_tokens": 1024
  }'

流式调用:

curl https://ai.jw-info.com/v1/chat/completions \
  -H "Authorization: Bearer sk-你的密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3.2",
    "messages": [{"role": "user", "content": "讲一个笑话"}],
    "stream": true,
    "max_tokens": 512
  }'

Python

官方 SDK(流式):

from openai import OpenAI

client = OpenAI(base_url="https://ai.jw-info.com/v1", api_key="sk-你的密钥")
stream = client.chat.completions.create(
    model="deepseek-v3.2",
    messages=[{"role": "user", "content": "你好"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

requests(非流式):

import requests

resp = requests.post(
    "https://ai.jw-info.com/v1/chat/completions",
    headers={"Authorization": "Bearer sk-你的密钥"},
    json={
        "model": "deepseek-v3.2",
        "messages": [{"role": "user", "content": "你好,请介绍一下你自己"}],
        "max_tokens": 1024,
    },
    timeout=300,
)
data = resp.json()
print(data["choices"][0]["message"]["content"], data["usage"]["total_tokens"])

Java(OkHttp)

非流式调用:

String json = """
    {
      "model": "deepseek-v3.2",
      "messages": [{"role": "user", "content": "你好,请介绍一下你自己"}],
      "max_tokens": 1024
    }
    """;
Request request = new Request.Builder()
        .url("https://ai.jw-info.com/v1/chat/completions")
        .addHeader("Authorization", "Bearer YOUR_API_KEY")
        .addHeader("Content-Type", "application/json")
        .post(RequestBody.create(json, MediaType.parse("application/json")))
        .build();
try (Response response = new OkHttpClient().newCall(request).execute()) {
    System.out.println(response.body().string());
}

可用模型

通义千问:

模型名称说明
qwen3.7-max通义千问旗舰模型,综合能力最强
qwen3.6-27b通义千问 27B 参数模型,能力均衡
qwen3.6-35b-a3b通义千问 35B 激活 3B 的 MoE 模型
qwen3-max通义千问 3 代旗舰模型
qwen-plus通义千问增强版,性价比之选
qwen3-coder-plus通义千问编程专用增强版

DeepSeek:

模型名称说明
deepseek-v4-proDeepSeek V4 旗舰版
deepseek-v4-flashDeepSeek V4 轻量极速版
deepseek-v3.2DeepSeek V3.2 版本
deepseek-r1DeepSeek 推理增强模型
deepseek-r1-0528DeepSeek R1 0528 版本

智谱(GLM):

模型名称说明
glm-5.2智谱 GLM-5.2 旗舰模型
glm-5.1智谱 GLM-5.1 版本
glm-5.0智谱 GLM-5.0 版本
glm-5-turbo智谱 GLM-5 Turbo 速度版

MiniMax:

模型名称说明
minimax-m2.7MiniMax M2.7 版本
minimax-m2.5MiniMax M2.5 版本

豆包(Doubao):

模型名称说明
doubao1.5-pro-32k豆包 1.5 Pro 32K 上下文版本

以上为常用模型;完整清单(含视觉理解、向量、重排、图像、视频等能力)见模型广场,模型名以广场卡片为准。

在模型广场查看支持「文本生成」的模型 →