聊天(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="")常用参数
| 参数 | 类型 | 说明 |
|---|---|---|
model | string | 必填,模型 ID,与控制台模型列表一致 |
messages | array | 必填,对话消息列表 |
temperature | number | 采样温度,通常为 0–2;仅在模型支持时使用 |
max_completion_tokens | number | OpenAI 官方推荐的输出 token 上限,包含可见正文与推理 token |
max_tokens | number | 兼容字段,同样限制输出 token;新接入建议优先使用 max_completion_tokens |
stream | boolean | 是否流式输出(SSE) |
tools | array | Function Calling 工具定义;仅在模型支持时使用 |
tool_choice | string | object | 控制是否及如何调用工具 |
response_format | object | 结构化输出,如 {"type": "json_object"};仅在模型支持时使用 |
reasoning_effort | string | 推理强度;可选值及兼容性取决于模型 |
模型兼容性
聊天、流式输出、图片输入、工具调用、结构化输出和采样参数的支持范围可能因模型而异。请先确认模型列表中的接口类型,并仅传入该模型支持的参数。
Gemini 推理控制
通过 /v1/chat/completions 调用 Gemini 时,优先使用跨供应商兼容参数 reasoning_effort。Gemini 请求接受 none、minimal、low、medium 和 high,但具体行为取决于模型:
| 模型 ID | reasoning_effort 行为 |
|---|---|
gemini-3.5-flash | none 会发送 thinkingBudget: 0;其他支持值会转换为对应比例的思考预算 |
gemini-3.6-flash | none 会发送 thinkingBudget: 0;其他支持值会转换为对应比例的思考预算 |
gemini-3.1-pro-preview | none 会发送 thinkingBudget: 0;其他支持值会转换为对应比例的思考预算 |
gemini-3.7-flash | low、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 字符串,执行前应解析并校验。