AIZNT
API 参考聊天

聊天(OpenAI 兼容)

POST /v1/chat/completions —— OpenAI 兼容聊天接口,支持流式输出、工具调用与多模态输入。

聊天接口采用 OpenAI Chat Completions 兼容格式,可用于模型列表中支持 OpenAI 聊天接口的 GPT、Claude、Gemini 等模型。具体能力取决于所选模型及其上游提供方。

接口地址

POST https://token.aiznt.com/v1/chat/completions

请求示例

curl https://token.aiznt.com/v1/chat/completions \
  -H "Authorization: Bearer sk-你的aiznt密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-sol",
    "messages": [
      {"role": "system", "content": "你是一个有帮助的助手。"},
      {"role": "user", "content": "用一句话介绍 AIZNT"}
    ],
    "temperature": 0.7,
    "stream": false
  }'

Python SDK

直接使用 OpenAI 官方 SDK,替换 base_url 与 api_key 即可:

from openai import OpenAI

client = OpenAI(
    base_url="https://token.aiznt.com/v1",
    api_key="sk-你的aiznt密钥",
)

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

流式输出

stream = client.chat.completions.create(
    model="gpt-5.6-sol",
    messages=[{"role": "user", "content": "写一首短诗"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

常用参数

参数类型说明
modelstring必填,模型 ID,与控制台模型列表一致
messagesarray必填,对话消息列表
temperaturenumber采样温度,通常为 0–2;仅在模型支持时使用
max_completion_tokensnumberOpenAI 官方推荐的输出 token 上限,包含可见正文与推理 token
max_tokensnumber兼容字段,同样限制输出 token;新接入建议优先使用 max_completion_tokens
streamboolean是否流式输出(SSE)
toolsarrayFunction Calling 工具定义;仅在模型支持时使用
tool_choicestring | object控制是否及如何调用工具
response_formatobject结构化输出,如 {"type": "json_object"};仅在模型支持时使用
reasoning_effortstring推理强度;可选值及兼容性取决于模型

模型兼容性

聊天、流式输出、图片输入、工具调用、结构化输出和采样参数的支持范围可能因模型而异。请先确认模型列表中的接口类型,并仅传入该模型支持的参数。

Gemini 推理控制

通过 /v1/chat/completions 调用 Gemini 时,优先使用跨供应商兼容参数 reasoning_effort。Gemini 请求接受 none、minimal、low、medium 和 high,但具体行为取决于模型:

模型 IDreasoning_effort 行为
gemini-3.5-flashnone 会发送 thinkingBudget: 0;其他支持值会转换为对应比例的思考预算
gemini-3.6-flashnone 会发送 thinkingBudget: 0;其他支持值会转换为对应比例的思考预算
gemini-3.1-pro-previewnone 会发送 thinkingBudget: 0;其他支持值会转换为对应比例的思考预算
gemini-3.7-flashlow、medium、high 会转换为 Gemini 的 thinkingLevel;none 和 minimal 返回 HTTP 400,因为该模型无法可靠关闭思考,也不支持 MINIMAL

例如,以下请求会降低 gemini-3.7-flash 的思考等级:

{
  "model": "gemini-3.7-flash",
  "messages": [{"role": "user", "content": "分析这个问题"}],
  "reasoning_effort": "low",
  "max_completion_tokens": 2000
}

对于已经验证支持关闭思考的模型,可以这样调用:

{
  "model": "gemini-3.5-flash",
  "messages": [{"role": "user", "content": "直接回答"}],
  "reasoning_effort": "none",
  "max_completion_tokens": 2000
}

如果需要直接使用 Gemini 原生控制参数,可通过 extra_body.google.thinking_config 传入:

{
  "model": "gemini-3.7-flash",
  "messages": [{"role": "user", "content": "分析这个问题"}],
  "extra_body": {
    "google": {
      "thinking_config": {
        "thinking_level": "low",
        "include_thoughts": true
      }
    }
  }
}

不要同时传入 reasoning_effort 和 extra_body.google.thinking_config,冲突时接口会返回 HTTP 400。Gemini Chat Completions 不支持 thinking、顶层 thinking_budget 和 reasoning 这些别名;接口现在也会返回 HTTP 400,不再静默忽略。

注意事项

对于启用了思考或推理能力的模型,max_tokens(兼容字段)和 max_completion_tokens 都用于限制输出额度,内部推理 token 和最终正文 token 会共同占用该额度。设置过小时,可能返回 HTTP 200,但 choices[0].message.content 为空,且 finish_reason 为 "length";这不代表已生成可展示的正文。建议每次只选择其中一个额度参数,并为推理模型预留足够空间。

例如,以下请求可能复现“HTTP 200 + 空正文”的情况:

{
  "model": "gemini-3.5-flash",
  "messages": [{"role": "user", "content": "用一句话介绍 AIZNT"}],
  "max_tokens": 10,
  "stream": false
}

调用方不要只根据 HTTP 状态码判断成功,还应同时检查 choices[0].message.content 和 choices[0].finish_reason。如果正文为空且 finish_reason 为 "length",请提高所使用的输出额度参数后重试,并检查 usage.completion_tokens_details.reasoning_tokens。平台不会为过小的值自动补充正文额度,也没有适用于所有模型的固定最小值。

响应示例与字段

{
  "id": "chatcmpl-example",
  "object": "chat.completion",
  "created": 1788160065,
  "model": "gpt-5.6-sol",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "测试成功"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 11,
    "completion_tokens": 5,
    "total_tokens": 16,
    "completion_tokens_details": {
      "reasoning_tokens": 0
    }
  }
}
字段说明
id / object / created / model请求标识、对象类型、创建时间和实际使用的模型
choices[].message.content模型生成的正文;工具调用时可能为 null
choices[].message.tool_calls模型请求调用的工具列表,仅在发生工具调用时返回
choices[].finish_reason常见值:stop、length、tool_calls、content_filter
usage.prompt_tokens输入 token 数
usage.completion_tokens输出 token 数,推理模型可能包含推理消耗
usage.total_tokens输入与输出 token 总数
usage.completion_tokens_details.reasoning_tokens推理 token 数;仅在响应提供该明细时读取

多模态输入

支持图片输入的模型可通过 image_url 传入 URL 或 Base64 Data URL。以下是完整的请求体示例:

远程图片 URL 必须可由服务器直接公开下载,不能依赖登录状态或临时浏览器权限。

{
  "model": "gemini-3.5-flash",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "描述这张图片"},
        {"type": "image_url", "image_url": {"url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg"}}
      ]
    }
  ],
  "stream": false
}

工具调用(Function Calling)

{
  "model": "gpt-5.6-sol",
  "messages": [{"role": "user", "content": "杭州今天天气如何?请调用工具查询。"}],
  "reasoning_effort": "none",
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "查询城市天气",
      "parameters": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"]
      }
    }
  }],
  "tool_choice": "auto"
}

对于当前示例模型,在 Chat Completions 中使用 Function Calling 时设置 reasoning_effort: "none"。模型需要调用工具时,响应中的 finish_reason 为 "tool_calls",并通过 message.tool_calls 返回函数名、参数和 tool_call ID。执行函数后,应保留模型返回的 assistant 消息,再追加对应的工具结果:

[
  {
    "role": "assistant",
    "content": null,
    "tool_calls": [
      {
        "id": "call_example",
        "type": "function",
        "function": {
          "name": "get_weather",
          "arguments": "{\"city\":\"杭州\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_example",
    "content": "{\"city\":\"杭州\",\"temperature\":\"26°C\",\"condition\":\"晴\"}"
  }
]

将以上两条消息追加到原 messages,携带相同的 tools 再次请求,模型即可根据工具结果生成最终回答。函数参数 arguments 是 JSON 字符串,执行前应解析并校验。

本页目录