GPT-5.6(Prompt Caching)
curl --request POST \
--url https://api.gravitex.ai/v1/chat/completions \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"messages": [
{}
],
"prompt_cache_key": "<string>",
"prompt_cache_options": {},
"reasoning_effort": "<string>",
"stream": true,
"max_tokens": 123,
"verbosity": "<string>"
}
'import requests
url = "https://api.gravitex.ai/v1/chat/completions"
payload = {
"model": "<string>",
"messages": [{}],
"prompt_cache_key": "<string>",
"prompt_cache_options": {},
"reasoning_effort": "<string>",
"stream": True,
"max_tokens": 123,
"verbosity": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
messages: [{}],
prompt_cache_key: '<string>',
prompt_cache_options: {},
reasoning_effort: '<string>',
stream: true,
max_tokens: 123,
verbosity: '<string>'
})
};
fetch('https://api.gravitex.ai/v1/chat/completions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gravitex.ai/v1/chat/completions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'messages' => [
[
]
],
'prompt_cache_key' => '<string>',
'prompt_cache_options' => [
],
'reasoning_effort' => '<string>',
'stream' => true,
'max_tokens' => 123,
'verbosity' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"prompt_cache_key\": \"<string>\",\n \"prompt_cache_options\": {},\n \"reasoning_effort\": \"<string>\",\n \"stream\": true,\n \"max_tokens\": 123,\n \"verbosity\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gravitex.ai/v1/chat/completions")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"prompt_cache_key\": \"<string>\",\n \"prompt_cache_options\": {},\n \"reasoning_effort\": \"<string>\",\n \"stream\": true,\n \"max_tokens\": 123,\n \"verbosity\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"prompt_cache_key\": \"<string>\",\n \"prompt_cache_options\": {},\n \"reasoning_effort\": \"<string>\",\n \"stream\": true,\n \"max_tokens\": 123,\n \"verbosity\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body对话与文本
GPT-5.6(Prompt Caching)
GPT-5.6 系列对话接口与 Prompt Caching 显式/隐式缓存机制
POST
/
v1
/
chat
/
completions
GPT-5.6(Prompt Caching)
curl --request POST \
--url https://api.gravitex.ai/v1/chat/completions \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"messages": [
{}
],
"prompt_cache_key": "<string>",
"prompt_cache_options": {},
"reasoning_effort": "<string>",
"stream": true,
"max_tokens": 123,
"verbosity": "<string>"
}
'import requests
url = "https://api.gravitex.ai/v1/chat/completions"
payload = {
"model": "<string>",
"messages": [{}],
"prompt_cache_key": "<string>",
"prompt_cache_options": {},
"reasoning_effort": "<string>",
"stream": True,
"max_tokens": 123,
"verbosity": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
messages: [{}],
prompt_cache_key: '<string>',
prompt_cache_options: {},
reasoning_effort: '<string>',
stream: true,
max_tokens: 123,
verbosity: '<string>'
})
};
fetch('https://api.gravitex.ai/v1/chat/completions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gravitex.ai/v1/chat/completions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => '<string>',
'messages' => [
[
]
],
'prompt_cache_key' => '<string>',
'prompt_cache_options' => [
],
'reasoning_effort' => '<string>',
'stream' => true,
'max_tokens' => 123,
'verbosity' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"prompt_cache_key\": \"<string>\",\n \"prompt_cache_options\": {},\n \"reasoning_effort\": \"<string>\",\n \"stream\": true,\n \"max_tokens\": 123,\n \"verbosity\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gravitex.ai/v1/chat/completions")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"prompt_cache_key\": \"<string>\",\n \"prompt_cache_options\": {},\n \"reasoning_effort\": \"<string>\",\n \"stream\": true,\n \"max_tokens\": 123,\n \"verbosity\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"<string>\",\n \"messages\": [\n {}\n ],\n \"prompt_cache_key\": \"<string>\",\n \"prompt_cache_options\": {},\n \"reasoning_effort\": \"<string>\",\n \"stream\": true,\n \"max_tokens\": 123,\n \"verbosity\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body通用多模型 Chat Completions 说明见 原生 OpenAI 格式(ChatCompletions),Responses API 用法见 原生 OpenAI 格式(Responses)。本文聚焦 GPT-5.6 系列模型及其 Prompt Caching 缓存机制。
简介
GPT-5.6 是 OpenAI 于 2026 年 7 月 GA 的最新旗舰模型系列,上下文长度 1M。它是首个把「隐式缓存」与「显式缓存」统一成一套机制的模型,也是第一个「缓存写入收费」的系列:缓存读取按输入价的 10% 计费,缓存写入按输入价的 1.25 倍计费。 合理使用缓存可以显著降低长前缀场景(系统提示词、RAG、知识库、多轮对话)的调用成本——这也是 GPT-5.6 官方推荐的降本手段。模型系列
| 模型 | 定位 | 上下文长度 | 特点 | 推荐场景 |
|---|---|---|---|---|
gpt-5.6-sol | 旗舰 | 1M | 系列最强,前沿推理与长程 Agent,支持 max 深度推理 | 复杂编码、长程 Agent、科研 |
gpt-5.6-terra | 均衡 | 1M | 性能对标 GPT-5.5,成本约为 Sol 的一半 | 日常开发、高频生产 |
gpt-5.6-luna | 轻量 | 1M | 速度最快、成本最低 | 高并发、意图分类、批量处理 |
认证
string
必填
Bearer Token,如
Bearer sk-xxxxxxxxxx请求参数
string
必填
模型标识,支持:
gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna
array
必填
对话消息列表,每个元素包含
role(user/system/assistant)和 content。content 支持 OpenAI v2 多模态数组,显式缓存断点就打在 content 数组的某个元素上string
GPT-5.6 系列专属参数。用于精确匹配可复用的缓存前缀,建议按「租户:场景:版本」组织(如
tenant:acme:support-v1)。不传时缓存匹配精度会下降,命中率不可控object
缓存模式配置(GPT-5.6 系列专属):
mode:"implicit"(默认,隐式缓存)或"explicit"(显式缓存,禁用自动断点)ttl:固定"30m",表示缓存「至少存活 30 分钟」(可带可不带)
prompt_cache_breakpoint(object,非顶层请求体字段)
显式缓存断点,嵌套在 messages 里某条消息的 content 数组的块上(text / image_url / input_audio / file / refusal),取值 {"mode": "explicit"},表示「该块之前的内容都要缓存」。mode 只接受 "explicit",其它取值或打在不可缓存的块上会返回 400 invalid_request_error
string
默认值:"medium"
推理强度(GPT-5.6 系列专属,替代传统采样参数),取值:
none / low / medium(默认)/ high / xhigh / max。none 关闭思考;max 为 gpt-5.6-sol 深度推理档位boolean
默认值:"false"
是否启用流式输出,返回 SSE 格式的分片数据
number
最大生成 token 数,控制回复长度
string
默认值:"medium"
输出详细程度(GPT-5.6 系列专属),取值:
low / medium / high。控制回答长短;注意不要用提高 verbosity 代替推理基础示例
- 普通对话
- 显式缓存:首次创建(cache miss)
- 显式缓存:命中(cache hit)
- Python 示例
curl -X POST "https://api.gravitex.ai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.6-luna",
"messages": [
{"role": "system", "content": "你是一个有用的助手"},
{"role": "user", "content": "请用中文简要介绍人工智能"}
],
"reasoning_effort": "low",
"verbosity": "medium"
}'
打上
prompt_cache_breakpoint 的第一次调用会同时完成「创建缓存」:断点之前的内容被写入缓存。本次响应 cache_write_tokens > 0、cached_tokens = 0,前缀部分按写入价(输入价的 1.25 倍)计费:curl -X POST "https://api.gravitex.ai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.6-luna",
"prompt_cache_key": "tenant:acme:support-assistant-v1",
"prompt_cache_options": {"mode": "explicit"},
"messages": [
{
"role": "system",
"content": [
{
"type": "text",
"text": "You are a support assistant. <这里放 1024+ tokens 的稳定系统提示词/知识库内容>",
"prompt_cache_breakpoint": {"mode": "explicit"}
}
]
},
{"role": "user", "content": "第一个用户的问题"}
],
"max_tokens": 128
}'
第二次及之后调用:
prompt_cache_key 不变、断点之前的内容逐字节一致、TTL 30 分钟内,直接复用缓存。本次响应 cached_tokens > 0、cache_write_tokens = 0,缓存部分按读取价(输入价的 10%)计费:curl -X POST "https://api.gravitex.ai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.6-luna",
"prompt_cache_key": "tenant:acme:support-assistant-v1",
"prompt_cache_options": {"mode": "explicit"},
"messages": [
{
"role": "system",
"content": [
{
"type": "text",
"text": "You are a support assistant. <与首次创建完全一致的内容>",
"prompt_cache_breakpoint": {"mode": "explicit"}
}
]
},
{"role": "user", "content": "换了新问题,但前缀不变"}
],
"max_tokens": 128
}'
- 断点之前的 1200 tokens 逐字节一致、仅断点之后的 user 消息不同 → 第二次调用命中缓存
- 前缀任意字节变化(哪怕 1 个字符)都会导致 cache miss,重新写入
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxxxxxx",
base_url="https://api.gravitex.ai/v1"
)
# 普通对话
completion = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[
{"role": "system", "content": "你是一个有用的助手"},
{"role": "user", "content": "请用中文简要介绍人工智能"}
]
)
print(completion.choices[0].message.content)
# 显式缓存:缓存字段通过 extra_body 传入
completion = client.chat.completions.create(
model="gpt-5.6-luna",
messages=[
{
"role": "system",
"content": [
{
"type": "text",
"text": "You are a support assistant. <1024+ tokens 稳定内容>",
"prompt_cache_breakpoint": {"mode": "explicit"},
}
],
},
{"role": "user", "content": "第一个用户的问题"},
],
extra_body={
"prompt_cache_key": "tenant:acme:support-assistant-v1",
"prompt_cache_options": {"mode": "explicit"},
},
)
usage = completion.usage
print(usage.prompt_tokens_details.cached_tokens) # 命中缓存的 token 数
print(usage.prompt_tokens_details.cache_write_tokens) # 新写入缓存的 token 数
高级功能
Prompt Caching(缓存机制)
隐式缓存 vs 显式缓存
| 模式 | 触发方式 | 特点 | 适用场景 |
|---|---|---|---|
| 隐式(默认) | 无需任何字段,OpenAI 自动对对话前缀做最长公共前缀匹配(对应「读取回溯断点数」中最近 50 个历史断点) | 零配置,但依赖自动匹配,长 RAG / 多段文档场景容易匹配不到最优前缀 | 请求内容相对固定的普通对话 |
| 显式 | 在内容块上手动加 prompt_cache_breakpoint: {"mode":"explicit"} | 精确控制哪段前缀被缓存,命中率可控;配合 prompt_cache_options.mode:"explicit" 可完全禁用自动断点 | 稳定系统提示词 / 知识库 / 文件输入等长前缀场景 |
没有独立的「创建缓存」接口
OpenAI 不像 Gemini 那样提供单独的缓存创建接口(cachedContents.create)。「创建缓存」和「正常对话请求」是同一个 API 调用:打 prompt_cache_breakpoint 只是告诉 OpenAI「断点之前的内容值得缓存」,写入动作是本次请求的副作用——
- 正常调用
/v1/chat/completions,在某个内容块上加prompt_cache_breakpoint; - 服务端检查断点之前的内容是否命中:
- 未命中(首次 / 已过期)→ 正常推理 + 把断点前内容写入缓存 →
cache_write_tokens > 0、cached_tokens = 0; - 命中(
prompt_cache_key一致、前缀逐字节一致、TTL 内)→ 直接复用 →cached_tokens > 0、cache_write_tokens = 0;
- 未命中(首次 / 已过期)→ 正常推理 + 把断点前内容写入缓存 →
- 写入成功后 30 分钟 TTL 内,后续调用只「读」不「重写」;超过 30 分钟无访问,下一次调用退回「cache miss → 重新写入」。
限制
| 限制 | 说明 |
|---|---|
| 最小可缓存前缀 | 1024 tokens(与老模型一致) |
| 每请求最大新写入 | 4 个(隐式模式的自动断点占 1 个写入槽,显式断点最多再写 3 个;纯显式模式最多写 4 个) |
| 读取回溯断点数 | 最多匹配对话里最近 50 个断点,命中其中最长前缀 |
| 缓存存续时间 | prompt_cache_options.ttl 固定 "30m"(不保证更长) |
| 非法断点 | mode 非 "explicit"、或打在不可缓存的块上 → 400 invalid_request_error |
| 老模型兼容 | GPT-5.6 之前的模型收到 prompt_cache_options / prompt_cache_breakpoint 会直接报错拒绝 |
计费
| 项 | 单价(对比输入价) | 说明 |
|---|---|---|
| 缓存读取(cached) | 10% | 命中缓存的输入 token 按此价计费,90% off |
| 缓存写入(write) | 125% | 新写入缓存的输入 token 按输入价的 1.25 倍计费 |
| 未缓存输入 | 100% | 断点之外、未命中缓存的部分按正常输入价计费 |
以 gpt-5.6-luna(输入 1.00/1Mtokens)为例:写入缓存1.25/1M、读取缓存 $0.10/1M。前缀越稳定、请求次数越多,节省越明显。
工具调用(Functions / Tools)
GPT-5.6 支持标准 OpenAI 工具调用格式,用法与 原生 OpenAI 格式(ChatCompletions) 中的工具调用章节一致:curl -X POST "https://api.gravitex.ai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.6-luna",
"messages": [
{"role": "user", "content": "上海的天气怎么样?"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "根据城市获取天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto"
}'
结构化输出(JSON Schema)
GPT-5.6 支持通过response_format 参数控制输出格式:
curl -X POST "https://api.gravitex.ai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxx" \
-d '{
"model": "gpt-5.6-luna",
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "Answer",
"schema": {
"type": "object",
"properties": {
"summary": {"type": "string"}
},
"required": ["summary"]
}
}
},
"messages": [
{"role": "user", "content": "返回一个包含 summary 字段的 JSON"}
]
}'
严格的结构化输出建议使用较低推理强度(如
reasoning_effort: "low" 或 "none"),并设置合适的 max_tokens 以提升一致性。思考能力(Reasoning)
GPT-5.6 三款均为推理模型,思考深度由reasoning_effort 控制(取值见 请求参数):
| 取值 | 说明 |
|---|---|
none | 关闭思考,直接生成 |
low | 轻量思考,适合简单问答 |
medium(默认) | 标准思考 |
high / xhigh | 深度思考,适合复杂任务 |
max | 仅 gpt-5.6-sol 支持的深度推理档位 |
推理模型不开放传统采样参数:
temperature / top_p 自定义值不生效(会被忽略或回退默认值)。控制输出请用 reasoning_effort(思考深度)与 verbosity(回答详细程度);gpt-5.6-sol 使用函数工具时,请留意官方对推理强度取值的限制。usage.completion_tokens_details.reasoning_tokens 中,详见下方 usage 字段说明。
usage 字段说明
调用/v1/chat/completions 时,响应中的 usage 对象包含 token 用量统计。GPT-5.6 的核心是 prompt_tokens_details 下新增的缓存字段:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1752345600,
"model": "gpt-5.6-luna",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "这是模型的回复内容"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1300,
"completion_tokens": 85,
"total_tokens": 1385,
"prompt_tokens_details": {
"cached_tokens": 1200,
"cache_write_tokens": 0,
"text_tokens": 1300,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 85,
"audio_tokens": 0,
"image_tokens": 0,
"reasoning_tokens": 0
},
"input_tokens": 1300,
"output_tokens": 85,
"input_tokens_details": null
}
}
| 字段 | 什么时候会有值 | 说明 |
|---|---|---|
prompt_tokens | 始终 | 输入 token 总数(含缓存部分) |
completion_tokens | 始终 | 输出 token 总数 |
total_tokens | 始终 | prompt_tokens + completion_tokens |
prompt_tokens_details.cached_tokens | 命中缓存时 | 命中缓存、按缓存读取价(输入价的 10%)计费的输入 token 数 |
prompt_tokens_details.cache_write_tokens | 仅 GPT-5.6 及以上、本次产生新缓存写入时 | 新写入缓存、按缓存写入价(输入价的 1.25 倍)计费的输入 token 数。OpenAI 官方原生 API 专属字段,Azure 渠道不会返回 |
prompt_tokens_details.text_tokens / audio_tokens / image_tokens | 始终存在 | 输入中文本 / 音频 / 图片部分的 token 拆分,纯文本场景下音频、图片为 0 |
completion_tokens_details.reasoning_tokens | 仅推理模型(GPT-5.6 Sol 等)启用思考时 | 模型内部思考消耗的 token 数,不进入最终回复文本,但按输出价计费 |
input_tokens / output_tokens | 始终 | 数值上等同于 prompt_tokens / completion_tokens,为兼容部分上游协议保留的别名 |
input_tokens_details | 目前对话场景下基本为 null | 保留字段,普通对话请求不会填充 |
cached_tokens与cache_write_tokens不会同时非零:一段内容不可能同时是「新写入」又「命中」。- 若始终看不到
cache_write_tokens非零,请确认:① 请求带上了prompt_cache_options/prompt_cache_breakpoint;② 前缀超过 1024 tokens;③ 请求没有走 Azure 渠道(cache_write_tokens为 OpenAI 官方原生 API 专属字段,Azure 渠道不返回,见上方字段说明表)。
响应格式
- 非流式响应
- 流式响应
{
"id": "chatcmpl-xxx",
"object": "chat.completion",
"created": 1234567890,
"model": "gpt-5.6-luna",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "回复内容..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1300,
"completion_tokens": 85,
"total_tokens": 1385,
"prompt_tokens_details": {
"cached_tokens": 1200,
"cache_write_tokens": 0
}
}
}
usage 各字段的完整说明见上方 usage 字段说明。流式响应以 SSE(Server-Sent Events)格式返回,每个分片包含部分内容,最后一个分片通常包含
usage 统计信息(含缓存字段):data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1234567890,"model":"gpt-5.6-luna","choices":[{"index":0,"delta":{"content":"回"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1234567890,"model":"gpt-5.6-luna","choices":[{"index":0,"delta":{"content":"复"},"finish_reason":null}]}
data: {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1234567890,"model":"gpt-5.6-luna","choices":[],"usage":{"prompt_tokens":1300,"completion_tokens":85,"prompt_tokens_details":{"cached_tokens":1200,"cache_write_tokens":0}},"finish_reason":"stop"}
data: [DONE]
错误处理
| 异常类型 | 触发场景 | 返回信息 |
|---|---|---|
| AuthenticationError | API 密钥无效或未授权 | 错误:API密钥无效或未授权 |
| NotFoundError | 模型不存在或不被支持 | 错误:模型 [model] 不存在或不被支持 |
| APIConnectionError | 网络中断或服务器未响应 | 错误:无法连接到API服务器 |
| APIError | 请求格式错误等服务端异常 | API请求失败:[错误详情] |
| InvalidRequestError(400) | 显式缓存参数非法:prompt_cache_breakpoint.mode 非 "explicit"、断点打在不可缓存的块上 | invalid_request_error:缓存断点位置/取值不合法 |
| InvalidRequestError(400) | GPT-5.6 之前的模型收到 prompt_cache_options / prompt_cache_breakpoint | invalid_request_error:模型不支持显式缓存参数 |
支持的模型系列
gpt-5.6-sol / gpt-5.6-terra / gpt-5.6-luna 三款模型的定位与推荐场景见上方 模型系列。完整模型列表请查看 模型信息页面。
注意事项
- 使用显式缓存时务必带上
prompt_cache_key,否则匹配精度下降、命中率不可控 - 缓存前缀要求逐字节一致:前缀内任意字节变化(包括格式、空白、图片编码)都会导致 cache miss 重新写入
- 长前缀(>1024 tokens)是缓存生效的前提;前缀太短不会产生任何缓存写入
相关资源
ChatCompletions 通用接口
查看通用多模型对话接口说明
模型列表
查看所有支持的模型信息
