基础文本对话
POST /v1/chat/completions
OpenAI 兼容的对话补全接口。所有模型(Claude / GPT / Gemini)均通过此端点调用,只需更改 model 参数即可切换。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 模型 ID,如 claude-opus-4-8 / gpt-5.5 / gemini-3.1-pro。 |
messages |
array | 是 | 对话消息列表,每项含 role(system/user/assistant/tool)和 content。 |
max_tokens |
integer | 否 | 生成的最大 token 数。超过模型上限时自动收敛(clamp)到上限。 |
temperature |
number | 否 | 采样温度,0–2,默认 1。 |
top_p |
number | 否 | 核采样,0–1,默认 1。 |
stream |
boolean | 否 | 是否流式返回(SSE),默认 false。详见流式响应。 |
stop |
string | array | 否 | 停止序列。 |
tools |
array | 否 | 可调用的工具(function calling)。 |
tool_choice |
string | object | 否 | 工具选择策略:auto / none / 指定工具。 |
response_format |
object | 否 | 响应格式,如 {"type": "json_object"}。 |
seed |
integer | 否 | 采样随机种子,便于复现。 |
请求示例
cURL
curl https://api.aiin1.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "claude-opus-4-8",
"messages": [
{"role": "user", "content": "你好,请介绍一下自己"}
],
"max_tokens": 1024
}'Python
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.aiin1.ai/v1",
)
response = client.chat.completions.create(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "你好,请介绍一下自己"}],
max_tokens=1024,
)
print(response.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.aiin1.ai/v1",
});
const response = await client.chat.completions.create({
model: "claude-opus-4-8",
messages: [{ role: "user", content: "你好,请介绍一下自己" }],
max_tokens: 1024,
});
console.log(response.choices[0].message.content);响应
| 字段 | 类型 | 说明 |
|---|---|---|
id |
string | 本次补全的唯一 ID。 |
object |
string | 固定为 chat.completion。 |
created |
integer | Unix 时间戳。 |
model |
string | 实际使用的模型。 |
choices |
array | 补全结果,每项含 index / message / finish_reason。 |
usage |
object | token 用量,所有模型统一形状,详见下方「usage 字段契约」。 |
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1730000000,
"model": "claude-opus-4-8",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "你好!我是..." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 2012,
"completion_tokens": 28,
"total_tokens": 2040,
"prompt_tokens_details": { "cached_tokens": 1536 },
"completion_tokens_details": { "reasoning_tokens": 0 },
"provider_usage": {
"provider": "anthropic",
"raw": { "input_tokens": 476, "cache_read_input_tokens": 1536, "output_tokens": 28 }
}
}
}usage 字段契约
无论调用哪个模型家族(Claude / GPT / Gemini / DeepSeek 等),usage 都固定携带以下字段,零值时字段也存在,不要用"字段是否出现"判断能力:
| 字段 | 说明 |
|---|---|
prompt_tokens |
全部输入 token(含命中缓存的部分)。 |
completion_tokens |
全部输出 token(含推理/思考部分)。 |
prompt_tokens_details.cached_tokens |
输入中命中 prompt cache 的子集,未命中为 0。 |
completion_tokens_details.reasoning_tokens |
输出中推理/思考的子集,无思考为 0(Claude 系列为估算值)。 |
provider_usage |
{provider, raw}:模型厂商按其原生口径上报的原始用量,供对账。缓存写入量、1h TTL 拆分等在 OpenAI 语义中没有槽位的信息从 raw 读取。 |
说明:
- 顶层字段用于估算用量;精确对账请以账单接口为准(见账单对账与用量自动同步)。
usage中可能出现模型厂商附带的其他扩展字段,不属于本契约,请勿依赖。- Claude 系列在本接口(OpenAI 兼容)同样支持显式 prompt cache:把 system/消息内容写成块数组并打上
cache_control标记(Anthropic 方言,见缓存指南),命中会体现在cached_tokens。不带标记的请求不自动缓存。