Chat Completions 聊天对话

Chat Completions 是 AISP 最核心的接口,支持多轮对话、流式输出(SSE)、Function Calling、多模态(Vision / 图片 / 音频 / 视频输入)等能力。 接口完全兼容 OpenAI Chat Completions API,可无缝替换 OpenAI SDK。

多模态输入说明

所有能力通过 messages[].content 数组传入(OpenAI 兼容格式)。当某个消息的 content 为对象数组时,平台会自动识别其中的 image_url / video_url / input_audio 等类型并透传给上游模型。 若当前 model 不支持该输入类型,接口会返回友好提示(而非报错),即可让客户顺利切换或补传。

接口地址(OpenAI 兼容)
POST /v1/chat/completions
兼容 OpenAI Chat Completions API,可直接用 OpenAI SDK 对接;
SDK 的 Base URL 填写 https://api.hejushuzi.com/v1

请求头 Headers

名称是否必须说明
Authorization是Bearer API_KEY
Content-Type是application/json

请求参数

参数类型必填说明
modelstring是模型名称,见下方支持模型
messagesarray是聊天消息数组
streamboolean否是否流式输出,默认 false
temperaturenumber否随机性 0~2,默认 0.7
max_tokensint否最大生成 Token 数

messages 格式

[
  { "role": "system", "content": "你是一名AI助手" },
  { "role": "user", "content": "你好" },
  { "role": "assistant", "content": "你好,请问有什么可以帮助你?" }
]

Role 说明

Role说明
system系统提示词,用于设置 AI 行为
user用户输入
assistantAI 历史回复

普通请求示例

POST /v1/chat/completions
Authorization: Bearer sk-xxxxxxxx
Content-Type: application/json

{
  "model": "deepseek-v4-pro",
  "messages": [
    { "role": "user", "content": "你好,介绍一下你自己" }
  ]
}

普通返回示例

{
  "id": "chatcmpl-xxxx",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "deepseek-v4-pro",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "你好!我是..." },
      "finish_reason": "stop"
    }
  ]
}
关于 usage(用量): 平台会统计真实的 prompt_tokens / completion_tokens / total_tokens 用于内部计费与日志, 但 对外响应不返回 usage 字段。如需核对用量,请在控制台「用量与账单」中查看。

流式输出

将 stream 设为 true,使用 SSE 协议返回:

POST /v1/chat/completions

{
  "model": "deepseek-v4-pro",
  "stream": true,
  "messages": [
    { "role": "user", "content": "你好" }
  ]
}
data: {
  "id": "chatcmpl-xxx",
  "object": "chat.completion.chunk",
  "model": "deepseek-v4-pro",
  "choices": [
    { "index": 0, "delta": { "role": "assistant", "content": "你" }, "finish_reason": null }
  ]
}

data: {
  "id": "chatcmpl-xxx",
  "object": "chat.completion.chunk",
  "model": "deepseek-v4-pro",
  "choices": [
    { "index": 0, "delta": { "content": "好" }, "finish_reason": null }
  ]
}

data: {
  "id": "chatcmpl-xxx",
  "object": "chat.completion.chunk",
  "model": "deepseek-v4-pro",
  "choices": [
    { "index": 0, "delta": {}, "finish_reason": "stop" }
  ]
}

data: [DONE]
说明 每个 data: 块为增量内容;首帧 delta 携带 role: assistant;结束时发出 finish_reason 帧,最后以 data: [DONE] 收尾。客户端拼接 delta.content 即可实现打字机效果,结构符合 OpenAI SSE 规范。 流式响应同样不返回 usage,真实用量仍由平台内部统计用于计费与日志。

Tool Calling(工具调用)

接口支持 OpenAI 标准的 Tool Calling / Function Calling,可用于 Claude Code、Cursor、Trae 等 AI Agent 与编程工具的「执行工具 → 返回结果 → 继续回答」循环。 以下为非流式调用示例(流式调用只需把 stream 设为 true,工具增量会以 delta.tool_calls 分片返回,结束时 finish_reason=tool_calls)。

POST /v1/chat/completions
Authorization: Bearer sk-xxxxxxxx
Content-Type: application/json

{
  "model": "deepseek-v4-flash",
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "查询指定城市的天气",
        "parameters": {
          "type": "object",
          "properties": { "city": { "type": "string", "description": "城市名" } },
          "required": ["city"]
        }
      }
    }
  ],
  "messages": [
    { "role": "user", "content": "查询北京的天气" }
  ]
}

模型决定调用工具时,返回 finish_reason=tool_calls 与 message.tool_calls:

{
  "id": "chatcmpl-xxxx",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "deepseek-v4-flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_xxxx",
            "type": "function",
            "function": { "name": "get_weather", "arguments": "{\"city\": \"北京\"}" }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ]
}

客户端执行工具后,追加 role=tool 消息(携带 tool_call_id)发起下一轮请求,模型会基于工具结果继续回答:

{
  "model": "deepseek-v4-flash",
  "messages": [
    { "role": "user", "content": "查询北京的天气" },
    {
      "role": "assistant",
      "content": null,
      "tool_calls": [
        { "id": "call_xxxx", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\": \"北京\"}" } }
      ]
    },
    { "role": "tool", "tool_call_id": "call_xxxx", "content": "北京今日晴,气温 20~28 度" }
  ]
}
Tool Calling 说明
  • 非流式返回 message.tool_calls;流式返回 delta.tool_calls(含 index / id / function.name / function.arguments 增量),结束时 finish_reason=tool_calls。
  • 支持多个/并行 Tool Call:上游返回多个 tool_calls 时原样透传,客户端按 index 重组。
  • 多轮对话:保留历史 messages(含 assistant.tool_calls 与 role=tool)即可实现上下文关联。
  • 需要模型支持工具调用,建议选择 deepseek-v4-flash、qwen3-coder-plus 等支持 Tool Calling 的模型。

多模态输入示例

以下为多模态(图文)对话请求格式,使用 OpenAI 兼容的 content 数组:

POST /v1/chat/completions
Authorization: Bearer sk-xxxxxxxx
Content-Type: application/json

{
  "model": "qwen3-vl-plus",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "请描述这张图片的内容" },
        { "type": "image_url", "image_url": { "url": "https://example.com/pic.jpg" } }
      ]
    }
  ]
}

支持视频、音频输入的多模态模型(如 qwen3.5-omni-plus、qwen3.7-plus)可使用:

{
  "model": "qwen3.5-omni-plus",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "帮我分析这段视频" },
        { "type": "video_url", "video_url": { "url": "https://example.com/video.mp4" } },
        { "type": "input_audio", "input_audio": { "data": "base64...", "format": "mp3" } }
      ]
    }
  ]
}
支持图片 / 视频 / 音频输入的对话模型
  • 图片输入(Vision):qwen3-vl-plus、qwen3-vl-flash、qwen3.7-plus、kimi-k2.6、kimi/kimi-k3、qwen3.5-omni-plus
  • 图片 + 视频输入:qwen3.7-plus
  • 全模态(图片 / 视频 / 音频输入,文本 / 音频输出):qwen3.5-omni-plus

模型不支持某类输入时,接口返回 400 并在 msg 中给出友好提示(如“该模型不支持图片输入,请选择支持图片的模型”)。

支持模型

以下为常用推荐模型,完整清单与单价以控制台实时报价为准:

模型厂商特点
deepseek-v4-proDeepSeek旗舰·推荐
deepseek-v4-flashDeepSeek高性价比
deepseek-r1DeepSeek推理模型
qwen3.7-max阿里旗舰·推理
qwen3.7-plus阿里多模态(图/视频输入)
qwen3-vl-plus阿里视觉理解
qwen3.5-omni-plus阿里全模态·文/图/视频/音频
qwen3-coder-plus阿里代码模型
kimi-k2.6月之暗面多模态·Agent
ZHIPU/GLM-5.3智谱旗舰·推理·Coding
seed-2.1-pro火山文本·推理

计费说明

  • 计费方式:按实际消耗 Token 数计费
  • 费用 = prompt_tokens / 1,000,000 × input_price + completion_tokens / 1,000,000 × output_price
  • 费用保留 6 位小数,实时从账户余额扣除
  • 余额不足时接口返回 402,不会调用模型

错误返回

接口统一返回 { code, msg } 结构(FastAdmin 规范),code 为 0 表示通用错误、非 0 表示对应业务错误:

{ "code": 0, "msg": "model is required" }
{ "code": 0, "msg": "messages is required" }
{ "code": 400, "msg": "messages 不能为空" }
{ "code": 402, "msg": "Insufficient balance" }
{ "code": 404, "msg": "Model not found" }

Token 用量与计费

平台会统计每次请求的 prompt_tokens(输入)、completion_tokens(输出)、total_tokens(合计)、 及部分模型的 reasoning_tokens(推理 Token)、缓存命中 Token 等,用于内部计费与日志。

这些用量不会在 /v1/chat/completions 对外响应中返回。 如需核对用量与费用,请在控制台「用量与账单」页面查看明细。

最佳实践

  • 推荐使用 stream=true 获得更好的用户体验
  • 保留历史 messages 实现多轮对话
  • 合理设置 max_tokens 控制成本
  • 服务端保存 request_id 便于日志查询