Responses API 兼容模式说明

最近更新时间:2026-07-08 19:25:30

我的收藏

概述

大模型服务平台 TokenHub(下称 “TokenHub”)统一提供 OpenAI Responses API(POST /v1/responses)接口。对于原生仅支持 Chat Completions 协议的语言模型,TokenHub 会在服务端自动完成协议转换:接收到 Responses API 请求后转换为 Chat Completions 请求调用模型,再将模型返回的 Chat Completions 响应(包括流式事件)转换为 Responses API 格式返回。
该转换过程对调用方透明,您无需感知模型底层实际使用的协议,只需统一使用 Responses API 调用即可。由于两种协议在设计上存在差异,兼容模式下部分 Responses API 参数与能力(如 previous_response_id、内置工具等)暂不支持或行为存在限制,具体请参见本文各章节说明。
注意:
当前阶段,本兼容模式仅支持 GLM-5.2 模型。

适用场景

您已基于 Responses API 构建应用,现在希望直接调用 GLM-5.2 模型,无需额外接入 Chat Completions 协议。
您需要使用 GLM-5.2 的推理(思考)能力,并希望以 Responses API 统一的 reasoning 输出条目格式获取推理过程。

使用方法

调用方式与标准 Responses API 完全一致,无需任何额外参数或配置:TokenHub 会自动为 GLM-5.2 完成协议转换。
curl https://tokenhub.tencentmaas.com/v1/responses \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $API_KEY" \\
-d '{
"model": "glm-5.2",
"input": "请用三句话介绍量子计算。"
}'
关于 Base URL、地域接入地址、鉴权方式等基础信息,请参见 API 使用说明

请求参数说明

以下参数按支持程度分为三类:完全支持、不支持(会返回错误)、接受但不生效,请在调用前确认所用参数的实际支持情况。

完全支持的参数

参数
类型
必填
说明
model
String
模型 ID。
input
String 或 Array
输入内容,支持纯字符串或输入条目数组,详情请参见 输入格式说明
instructions
String
系统指令。
stream
Boolean
是否以流式方式返回,详情请参见 流式输出
max_output_tokens
Integer
最大输出 Token 数,必须大于 0。
temperature
Float
采样温度,取值范围 [0, 2]。
top_p
Float
核采样参数,取值范围 [0, 1]。
tools
Array
工具列表,兼容模式下仅支持 function 类型,详情请参见 工具调用支持范围
tool_choice
String 或 Object
工具选择策略。
parallel_tool_calls
Boolean
是否允许并行工具调用。
text.format
Object
输出格式,支持 textjson_objectjson_schema
reasoning.effort
String
推理努力程度,详情请参见 推理模型说明
metadata
Object
键值对元数据,最多 16 对,Key 不超过 64 个字符,Value 不超过 512 个字符,会在响应中原样回显。
service_tier
String
服务层级,可选值:autodefaultflexscalepriority,会在响应中回显。
prompt_cache_key
String
提示缓存键,会在响应中回显。
prompt_cache_retention
String
提示缓存保留策略,可选值:in_memory24h,会在响应中回显。
top_logprobs
Integer
对数概率数量,会在响应中回显。
stream_options.include_usage
Boolean
流式模式下是否在末尾返回 usage,默认开启。
user
String
用户标识。

不支持的参数

以下参数在兼容模式下不支持,传入会直接返回 HTTP 400 错误:
参数
错误信息
说明
background=true
background mode is not supported in chat-compat mode
不支持后台异步运行模式。
background=truestream=true
background and stream=true cannot be used together
后台模式与流式输出互斥。
previous_response_id(非空值)
previous_response_id is not supported in chat-compat mode
不支持基于历史响应 ID 延续对话,需通过 input 数组传入完整对话历史,详情请参见 多轮对话说明
previous_response_id(空字符串)
previous_response_id must not be empty string
参数值校验。
previous_response_idconversation 同时传入
previous_response_id and conversation cannot be used together
两个参数互斥。
promptinput 为空时)
prompt template is not supported in chat-compat mode, please provide input directly
不支持提示词模板,请直接通过 input 传入内容。
input 为空
input is required and must contain at least one message
input 为必填参数。
temperature 超出 [0, 2]
temperature must be between 0 and 2
参数取值范围校验。
top_p 超出 [0, 1]
top_p must be between 0 and 1
参数取值范围校验。
max_output_tokens ≤ 0
max_output_tokens must be greater than 0
参数取值范围校验。
service_tier 非法值
invalid service_tier value: xxx
枚举值校验。
prompt_cache_retention 非法值
invalid prompt_cache_retention value: xxx
枚举值校验。
说明:
background 仅在显式传入 background=true 时报错;未传入或传入 false 时会被正常接受,并在响应中原样回显。

接受但不生效的参数

以下参数会被正常接受(不报错),但实际不生效:
参数
说明
truncation
上下文截断策略,兼容模式下不做截断处理。
include
额外字段返回请求,兼容模式下不会返回额外字段。
store
响应存储开关,兼容模式下不存储响应。
conversation
会话管理,需通过 input 数组自行管理对话历史。
context_management
上下文自动管理(如自动压缩)。
max_tool_calls
最大工具调用次数限制。
promptinput 非空时)
提示词模板。
moderation
内容审核配置。
reasoning.summary
推理摘要模式。

输入格式说明

input 字段支持两种形式。

纯字符串输入

{
"model": "glm-5.2",
"input": "你好,请介绍一下自己。"
}
等同于一条 roleuser 的文本消息。

输入条目数组

input 为数组时,每个元素为一个输入条目。
支持的输入条目类型:
条目类型
type 取值
说明
消息
message
标准消息输入,支持 userassistantsystemdeveloper 角色,developer 角色等同于 system
函数调用
function_call
上一轮模型发起的函数调用。
函数调用结果
function_call_output
工具执行结果。
推理
reasoning
上一轮的推理内容。
自定义工具调用
custom_tool_call
处理方式与 function_call 一致。
自定义工具调用结果
custom_tool_call_output
处理方式与 function_call_output 一致。
不支持的输入条目类型(会被自动忽略):
条目类型
type 取值
计算机操作调用
computer_call
计算机操作结果
computer_call_output
文件搜索调用
file_search_call
网络搜索调用
web_search_call

消息内容类型

message 类型条目的 content 字段支持字符串或内容块数组,支持以下内容块类型:
内容块类型
type 取值
说明
文本输入
input_text
文本内容。
文本输出
output_text
文本内容,用于 assistant 消息。
纯文本
text
文本内容的兼容写法。
图像输入
input_image
支持 image_url(远程 URL 或 Base64 Data URI),detail 字段可选 lowhighauto
文件输入
input_file
仅当携带 file_data(Base64 编码内容)时支持,会转换为 Data URI 格式传递给模型。
图像输入不支持通过 file_id 引用已上传文件,传入会被忽略;文件输入仅支持内联携带 file_data 的形式,仅携带 file_id 的文件输入也会被忽略。

工具调用支持范围

支持的工具类型

工具类型
type 取值
说明
函数工具
function
完全支持,namedescriptionparametersstrict 字段均可用。
Function 工具字段说明:
字段
类型
必填
说明
type
String
固定为 function
name
String
函数名称。
description
String
函数描述,供模型判断是否调用。
parameters
Object
函数参数的 JSON Schema,未提供时默认为 {"type": "object", "properties": {}}
strict
Boolean
是否进行严格参数校验。

不支持的工具类型

以下工具类型在兼容模式下暂不支持,传入会被自动丢弃,不会报错:
工具类型
type 取值
文件搜索
file_search
网络搜索
web_searchweb_search_preview
代码解释器
code_interpreter
MCP 工具
mcp
计算机操作
computer_use_previewcomputer
图像生成
image_generation
自定义工具
custom
Shell 工具
shell
补丁工具
apply_patch

返回结果说明

Response 对象

非流式请求返回 Response 对象;流式请求的 response.createdresponse.completed 等事件中也包含该对象。以下示例中 output 为空数组,实际调用时会按模型的输出内容填充,具体结构见下文与 调用示例
{
"id": "resp_xxx",
"object": "response",
"created_at": 1751548800,
"status": "completed",
"model": "glm-5.2",
"output": [],
"output_text": "模型生成的文本",
"usage": {
"input_tokens": 20,
"output_tokens": 11,
"total_tokens": 31,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens_details": {
"reasoning_tokens": 0
}
},
"metadata": {},
"error": null
}
字段
类型
说明
id
String
响应唯一标识符。
object
String
固定为 response
created_at
Integer
响应创建时间,Unix 时间戳(秒)。
status
String
响应状态,取值 completedincompletefailed
model
String
实际调用的模型 ID。
output
Array
输出条目列表,详情请参见 输出条目类型
output_text
String
便捷字段,为 output 中所有文本内容块的拼接结果。
usage
Object
Token 用量统计,详情请参见 Usage 用量统计
error
Object 或 null
错误信息,正常完成时为 null
metadata
Object
元数据回显,始终返回(可为空对象)。
incomplete_details
Object 或 null
响应不完整时的详情,reason 取值为 max_output_tokenscontent_filter;正常完成时不返回。
以下请求参数如传入,会在响应中原样回显:
instructions
temperature
top_p
max_output_tokens
parallel_tool_calls
tool_choice
tools
reasoning
text
truncation
service_tier
prompt_cache_key
prompt_cache_retention
top_logprobs
background
prompt
max_tool_calls
-
-
-

输出条目类型

output 数组按推理、消息、函数调用的实际产生顺序排列。
推理条目:
{
"type": "reasoning",
"id": "rs_xxx",
"status": "completed",
"summary": [
{
"type": "summary_text",
"text": "推理过程文本"
}
]
}
消息条目:
{
"type": "message",
"id": "msg_xxx",
"status": "completed",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "模型生成的回复文本",
"annotations": []
}
]
}
content 数组中的内容块支持 output_text(模型生成的文本)和 refusal(模型拒绝回复时的原因文本)两种类型。
函数调用条目:
{
"type": "function_call",
"id": "fc_xxx",
"status": "completed",
"call_id": "call_xxx",
"name": "get_weather",
"arguments": "{\\"location\\":\\"北京\\",\\"unit\\":\\"celsius\\"}"
}
注意:
function_call.arguments 始终为 JSON 字符串格式,调用方需自行执行 JSON 解析后再使用。提交函数执行结果时,需在 function_call_output 条目中传入与该函数调用对应的 call_id

Usage 用量统计

{
"input_tokens": 20,
"output_tokens": 11,
"total_tokens": 31,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens_details": {
"reasoning_tokens": 0
}
}
字段
类型
说明
input_tokens
Integer
输入 Token 数。
output_tokens
Integer
输出 Token 数,包含推理 Token。
total_tokens
Integer
输入与输出 Token 总数。
input_tokens_details.cached_tokens
Integer
命中缓存的输入 Token 数,无缓存命中时为 0。
output_tokens_details.reasoning_tokens
Integer
推理过程消耗的 Token 数,无推理时为 0。
注意:
推理 Token 计入 output_tokensoutput_tokens_details.reasoning_tokens,会影响本次调用的 Token 总消耗。

流式输出

设置 stream: true 后,响应通过 SSE(Server-Sent Events)方式流式返回。

事件序列

response.created 响应已创建
response.in_progress 响应进行中
[reasoning,可选]
response.output_item.added 推理条目开始
response.reasoning_summary_part.added 推理摘要部分开始
response.reasoning_summary_text.delta 推理文本增量(多次)
response.reasoning_summary_text.done 推理文本完成
response.reasoning_summary_part.done 推理摘要部分完成
response.output_item.done 推理条目完成
[message,可选]
response.output_item.added 消息条目开始
response.content_part.added 内容块开始
response.output_text.delta 文本增量(多次)
response.output_text.done 文本完成
response.content_part.done 内容块完成
response.output_item.done 消息条目完成
[function_call,可多个]
response.output_item.added 函数调用条目开始
response.function_call_arguments.delta 参数增量(多次)
response.function_call_arguments.done 参数完成
response.output_item.done 函数调用条目完成
response.completed 响应已完成,包含完整 usage
reasoningmessage 条目为可选,是否出现取决于模型的实际输出内容。当推理与正文交替出现(推理、正文、推理、正文)时,各输出条目的开始与结束事件均会按序正确返回。

事件类型说明

事件类型
说明
response.created
响应已创建。
response.in_progress
响应进行中。
response.output_item.added
新增输出条目,包含 output_indexitem
response.output_item.done
输出条目完成,包含 output_indexitem
response.content_part.added
内容块开始,包含 item_idoutput_indexcontent_indexpart
response.content_part.done
内容块完成,包含 item_idoutput_indexcontent_indexpart
response.output_text.delta
文本增量,包含 item_idoutput_indexcontent_indexdelta
response.output_text.done
文本完成,包含 item_idoutput_indexcontent_indextext
response.reasoning_summary_part.added
推理摘要部分开始。
response.reasoning_summary_part.done
推理摘要部分完成。
response.reasoning_summary_text.delta
推理文本增量。
response.reasoning_summary_text.done
推理文本完成。
response.function_call_arguments.delta
函数调用参数增量。
response.function_call_arguments.done
函数调用参数完成。
response.completed
响应完成,包含完整 Response 对象及 usage
response.failed
响应失败,包含 Response 对象及 error 信息。

多轮对话说明

兼容模式下不支持 previous_response_id,多轮对话需通过 input 数组完整传入历史消息:
{
"model": "glm-5.2",
"input": [
{"role": "user", "content": "我叫小明。"},
{"role": "assistant", "content": "你好,小明!"},
{"role": "user", "content": "今天天气怎么样?"},
{"role": "assistant", "content": "我无法直接获取天气信息,但可以为您查询。"},
{"type": "function_call", "call_id": "call_1", "name": "get_weather", "arguments": "{\\"city\\":\\"北京\\"}"},
{"type": "function_call_output", "call_id": "call_1", "output": "{\\"temp\\":25,\\"weather\\":\\"晴\\"}"},
{"role": "assistant", "content": "北京今天25度,晴天。"},
{"role": "user", "content": "那明天呢?"}
]
}
注意:
input 数组中的条目顺序需与对话时间线一致;function_callfunction_call_output 需成对出现,且 call_id 需保持一致。

推理模型说明

对于支持推理能力的模型,兼容模式会自动处理以下两种推理内容返回格式,统一转换为 Responses API 的 reasoning 输出条目,调用方无需关心底层返回格式的差异:
模型通过 reasoning_content 字段返回的推理内容。
部分模型在正文中使用特定标签包裹推理内容的格式,会被自动识别并拆分为推理条目与正文条目。
如需关闭推理过程,可将 reasoning.effort 设置为 noneno_think
{
"model": "glm-5.2",
"input": "你好",
"reasoning": {
"effort": "none"
}
}

调用示例

基础文本对话

curl https://tokenhub.tencentmaas.com/v1/responses \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $API_KEY" \\
-d '{
"model": "glm-5.2",
"input": "请用三句话介绍量子计算。"
}'

带系统指令的对话

curl https://tokenhub.tencentmaas.com/v1/responses \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $API_KEY" \\
-d '{
"model": "glm-5.2",
"instructions": "你是一个专业的翻译助手,请将用户输入翻译为英文。",
"input": "今天天气真好"
}'

函数调用

第一轮:定义工具并发起请求。
curl https://tokenhub.tencentmaas.com/v1/responses \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $API_KEY" \\
-d '{
"model": "glm-5.2",
"input": "北京今天天气怎么样?",
"tools": [
{
"type": "function",
"name": "get_current_weather",
"description": "获取指定地点的当前天气",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "城市名称"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location", "unit"]
}
}
],
"tool_choice": "auto"
}'
模型返回函数调用请求后,将执行结果通过 function_call_output 提交,即可获得最终回复:
curl https://tokenhub.tencentmaas.com/v1/responses \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $API_KEY" \\
-d '{
"model": "glm-5.2",
"input": [
{"role": "user", "content": "北京今天天气怎么样?"},
{
"type": "function_call",
"call_id": "call_xxx",
"name": "get_current_weather",
"arguments": "{\\"location\\":\\"北京\\",\\"unit\\":\\"celsius\\"}"
},
{
"type": "function_call_output",
"call_id": "call_xxx",
"output": "{\\"temperature\\": 28, \\"unit\\": \\"celsius\\", \\"description\\": \\"晴天\\"}"
}
],
"tools": [
{
"type": "function",
"name": "get_current_weather",
"description": "获取指定地点的当前天气",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location", "unit"]
}
}
]
}'

流式输出

curl https://tokenhub.tencentmaas.com/v1/responses \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $API_KEY" \\
-d '{
"model": "glm-5.2",
"input": "请写一首关于春天的诗。",
"stream": true
}'

结构化输出

curl https://tokenhub.tencentmaas.com/v1/responses \\
-H "Content-Type: application/json" \\
-H "Authorization: Bearer $API_KEY" \\
-d '{
"model": "glm-5.2",
"input": "提取以下文本中的人物信息:张三,男,25岁,北京人。",
"text": {
"format": {
"type": "json_schema",
"name": "person_info",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"gender": {"type": "string"},
"age": {"type": "number"},
"city": {"type": "string"}
},
"required": ["name", "gender", "age", "city"],
"additionalProperties": false
},
"strict": true
}
}
}'
使用 json_schema 输出格式时,建议在 schema 中包含 "additionalProperties": false,以获得更好的模型兼容性。

常见问题

现有基于 Responses API 的代码,调用 GLM-5.2 需要做哪些改动?

不需要任何改动,将 model 设置为 glm-5.2 即可正常调用,TokenHub 会自动完成协议转换,详情请参见 使用方法

为什么调用 previous_response_id 会报错?

兼容模式下不支持基于历史响应 ID 延续对话,需改为通过 input 数组完整传入对话历史,详情请参见 多轮对话说明

为什么传入 web_searchcode_interpreter 等工具没有生效?

兼容模式下仅支持 function 类型工具,其余内置工具类型会被自动丢弃,不会报错,详情请参见 工具调用支持范围

tool_choice 设置为 required 后报错,如何处理?

required 的支持情况取决于所调用的模型本身是否支持该取值,部分模型可能不支持并返回错误,建议改用 auto 或直接指定具体的工具名称。

input 为空字符串时会怎样?

input 完全为空(既无字符串也无数组元素),会返回 HTTP 400 错误。若 input 中某条 user 消息内容为空字符串,系统会自动填充占位文本,避免模型调用异常。