推理 API
Responses
Responses API 是文本生成、推理和工具使用的主要接口。请参阅文本生成指南了解用法。
采样时,temperature 的上限为 1,另一项上限是模型默认的 top_p。请求可将 temperature 设为 0 到 2 之间的值,top_p 可设至 1。响应会原样返回所传的值,实际采样时超出上限的值会按上限处理。参见采样参数。
创建新 response
/v1/responses
根据文本或图像提示生成响应。响应 ID 可用于稍后检索响应,或在不重复先前上下文的情况下继续对话。新响应会保存 30 天,随后永久删除。
请求体
inputstring | array<object | object | object | object | object>传递给 `/v1/response` 请求的输入内容。
响应体
backgroundbooleanOpenResponses 兼容字段。 目前未使用,仅用于 OpenResponses 兼容性。 是否在后台异步处理响应。
created_atinteger响应创建时间的 Unix 时间戳(秒)。
errorobject模型未能生成响应时返回的错误对象。
frequency_penaltynumber(Responses API 不支持)正值根据 token 在已有文本中的出现频率惩罚新 token,降低模型逐字重复同一行的可能性。
idstring响应的唯一 ID。
metadataobject仅为兼容性而包含。
modelstring用于生成响应的模型名称。
objectstring此资源的对象类型,始终为 `response`。
outputarray<object | object | object | object | object | object | object | object | object | object | object | object>模型生成的响应。
parallel_tool_callsboolean是否允许模型并行调用工具。
presence_penaltynumber(Responses API 不支持)正值根据 token 是否已在文本中出现来惩罚新 token,提高模型讨论新话题的可能性。
service_tier"default" | "priority" | "fast"("default" | "priority" | "fast",必填)
statusstring响应状态,为 `completed`、`in_progress` 或 `incomplete`。
storeboolean是否保存输入消息和模型响应,供稍后检索。
textobjecttool_choicestring | object控制模型如何选择工具的参数。
toolsarray<object | object | object | object | object | object | object | object | object>(array<object | object | object | object | object | object | object | object | object>,必填)— 模型可调用的工具列表,以 JSON Schema 表示。目前仅支持函数和网页搜索,最多支持 1000 个工具。
top_logprobsinteger介于 0 和 8 之间的整数,指定每个 token 位置返回多少个最可能的 token。
truncationstring模型响应使用的截断策略。
代码示例
**响应示例:**
import { xai } from "@ai-sdk/xai";
import { generateText } from "ai";
const result = await generateText({
model: xai.responses("grok-4.7"),
prompt: "What is the meaning of life?",
});
console.log(JSON.stringify(result, null, 2));
{
"steps": [
{
"stepNumber": 0,
"model": {
"provider": "xai.responses",
"modelId": "grok-4.20-beta-latest-non-reasoning"
},
"content": [
{
"type": "text",
"text": "**42.**"
}
],
"finishReason": "stop",
"rawFinishReason": "completed",
"usage": {
"inputTokens": 129,
"inputTokenDetails": {
"noCacheTokens": 1,
"cacheReadTokens": 128
},
"outputTokens": 477,
"outputTokenDetails": {
"textTokens": 477,
"reasoningTokens": 0
},
"totalTokens": 606,
"raw": {
"input_tokens": 129,
"output_tokens": 477,
"total_tokens": 606,
"input_tokens_details": {
"cached_tokens": 128
},
"output_tokens_details": {
"reasoning_tokens": 0
},
"num_sources_used": 0,
"num_server_side_tools_used": 0
},
"reasoningTokens": 0,
"cachedInputTokens": 128
},
"warnings": [],
"request": {
"body": {
"model": "grok-4.20-beta-latest-non-reasoning",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "What is the meaning of life?"
}
]
}
]
}
},
"response": {
"id": "6622e6fd-731d-9e8d-a8f1-9d721316e2a5",
"timestamp": "2026-03-17T19:19:16.000Z",
"modelId": "grok-4.20-beta-0309-non-reasoning",
"body": {
"created_at": 1773775156,
"completed_at": 1773775158,
"id": "6622e6fd-731d-9e8d-a8f1-9d721316e2a5",
"max_output_tokens": null,
"model": "grok-4.20-beta-0309-non-reasoning",
"object": "response",
"output": [
{
"content": [
{
"type": "output_text",
"text": "**42.**",
"logprobs": [],
"annotations": []
}
],
"id": "msg_6622e6fd-731d-9e8d-a8f1-9d721316e2a5",
"role": "assistant",
"type": "message",
"status": "completed"
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": {
"effort": null,
"summary": null
},
"temperature": 0.7,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [],
"top_p": 0.95,
"usage": {
"input_tokens": 129,
"input_tokens_details": {
"cached_tokens": 128
},
"output_tokens": 477,
"output_tokens_details": {
"reasoning_tokens": 0
},
"total_tokens": 606,
"num_sources_used": 0,
"num_server_side_tools_used": 0,
"cost_in_usd_ticks": 28896000
},
"user": null,
"incomplete_details": null,
"status": "completed",
"store": true,
"metadata": {},
"background": false,
"service_tier": "default",
"truncation": "disabled",
"top_logprobs": 0,
"presence_penalty": 0,
"frequency_penalty": 0,
"prompt_cache_key": null,
"max_tool_calls": null,
"safety_identifier": null,
"error": null,
"instructions": null
},
"messages": [
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "**42.**"
}
]
}
]
}
}
],
"_output": "**42.**",
"totalUsage": {
"inputTokens": 129,
"inputTokenDetails": {
"noCacheTokens": 1,
"cacheReadTokens": 128
},
"outputTokens": 477,
"outputTokenDetails": {
"textTokens": 477,
"reasoningTokens": 0
},
"totalTokens": 606,
"reasoningTokens": 0,
"cachedInputTokens": 128
}
}
获取之前的 response
/v1/responses/{response_id}
检索先前生成的响应。
路径参数
response_idstring先前创建响应请求返回的响应 ID。
响应体
backgroundbooleanOpenResponses 兼容字段。 目前未使用,仅用于 OpenResponses 兼容性。 是否在后台异步处理响应。
created_atinteger响应创建时间的 Unix 时间戳(秒)。
errorobject模型未能生成响应时返回的错误对象。
frequency_penaltynumber(Responses API 不支持)正值根据 token 在已有文本中的出现频率惩罚新 token,降低模型逐字重复同一行的可能性。
idstring响应的唯一 ID。
metadataobject仅为兼容性而包含。
modelstring用于生成响应的模型名称。
objectstring此资源的对象类型,始终为 `response`。
outputarray<object | object | object | object | object | object | object | object | object | object | object | object>模型生成的响应。
parallel_tool_callsboolean是否允许模型并行调用工具。
presence_penaltynumber(Responses API 不支持)正值根据 token 是否已在文本中出现来惩罚新 token,提高模型讨论新话题的可能性。
service_tier"default" | "priority" | "fast"("default" | "priority" | "fast",必填)
statusstring响应状态,为 `completed`、`in_progress` 或 `incomplete`。
storeboolean是否保存输入消息和模型响应,供稍后检索。
textobjecttool_choicestring | object控制模型如何选择工具的参数。
toolsarray<object | object | object | object | object | object | object | object | object>(array<object | object | object | object | object | object | object | object | object>,必填)— 模型可调用的工具列表,以 JSON Schema 表示。目前仅支持函数和网页搜索,最多支持 1000 个工具。
top_logprobsinteger介于 0 和 8 之间的整数,指定每个 token 位置返回多少个最可能的 token。
truncationstring模型响应使用的截断策略。
No parameters.{
"created_at": 1754475266,
"id": "ad5663da-63e6-86c6-e0be-ff15effa8357",
"max_output_tokens": null,
"model": "latest",
"object": "response",
"output": [
{
"content": [
{
"type": "output_text",
"text": "101 multiplied by 3 is 303.",
"logprobs": null,
"annotations": []
}
],
"id": "msg_ad5663da-63e6-86c6-e0be-ff15effa8357",
"role": "assistant",
"type": "message",
"status": "completed"
},
{
"id": "",
"summary": [
{
"text": "First, the user asked: \"What is 101*3?\"\n\nThis is a simple multiplication: 101 multiplied by 3.\n\nCalculating: 100 * 3 = 300, and 1 * 3 = 3, so 300 + 3 = 303.\n\nI should respond helpfully and directly, as per my system prompt: \"You are a helpful assistant that can answer questions and help with tasks.\"\n\nKeep the response concise and accurate. No need for extra fluff unless it adds value.\n\nFinal answer: 303.",
"type": "summary_text"
}
],
"type": "reasoning",
"status": "completed"
}
],
"parallel_tool_calls": true,
"previous_response_id": null,
"reasoning": null,
"temperature": null,
"text": {
"format": {
"type": "text"
}
},
"tool_choice": "auto",
"tools": [],
"top_p": null,
"usage": {
"prompt_tokens": 32,
"completion_tokens": 9,
"total_tokens": 151,
"prompt_tokens_details": {
"text_tokens": 32,
"audio_tokens": 0,
"image_tokens": 0,
"cached_tokens": 8
},
"completion_tokens_details": {
"reasoning_tokens": 110,
"audio_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
},
"num_sources_used": 0
},
"user": null,
"incomplete_details": null,
"status": "completed",
"store": true
}删除之前的 response
/v1/responses/{response_id}
删除先前生成的响应。
路径参数
response_idstring先前创建响应请求返回的响应 ID。
响应体
deletedboolean是否成功删除响应。
idstring要删除的 response_id。
objectstring已删除对象的类型,始终为 `response`。
No parameters.{
"id": "ad5663da-63e6-86c6-e0be-ff15effa8357",
"object": "response",
"deleted": true
}压缩对话
/v1/responses/compact
将完整的 Responses API 输入窗口压缩为更短的规范窗口。
请求体
inputstring | array<object | object | object | object | object>传递给 `/v1/response` 请求的输入内容。
modelstring用于压缩摘要的模型(必填)。
响应体
created_atinteger压缩后对话的创建时间,以 Unix 时间戳(秒)表示。
idstring本次压缩的唯一 ID(例如 `cmp_<uuid>`)。
modelstring用于压缩摘要的模型。
objectstring始终为 `"response.compaction"`。
outputarray<object | object | object | object | object>压缩后的输出,包含一个压缩项。 将其原样作为下一次 `/v1/responses` 调用的输入。
代码示例
**响应示例:**
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["XAI_API_KEY"],
base_url="https://api.x.ai/v1",
)
compacted = client.responses.compact(
model="grok-4.7",
input=[
{"role": "system", "content": "You are a concise and knowledgeable science tutor."},
{"role": "user", "content": "What is the Higgs boson and why is it important?"},
{
"role": "assistant",
"content": (
"The Higgs boson is an elementary particle in the Standard Model, predicted by "
"Peter Higgs in 1964 and confirmed at CERN in 2012. It is the quantum excitation "
"of the Higgs field, which gives mass to fundamental particles via the Higgs mechanism."
),
},
{"role": "user", "content": "How does the Higgs mechanism actually work?"},
{
"role": "assistant",
"content": (
"Through spontaneous symmetry breaking. The Higgs field has a nonzero vacuum value, "
"and particles acquire mass in proportion to how strongly they couple to it. Photons "
"do not couple, which is why they remain massless."
),
},
],
)
print(compacted.model_dump_json(indent=2))
{}最后更新:2026 年 10 月 20 日