模型能力

与 Chat Completions API 对比

Responses API 是与 xAI 模型交互的推荐方式。下面将它与旧版 Chat Completions API 进行对比:

功能Responses APIChat Completions API(Deprecated)
Stateful Conversation通过 previous_response_idStateless,必须重新发送完整历史
Server-side StorageResponse 存储 30 天不存储,需要自行管理历史
Reasoning Model完整支持 encrypted reasoning content不返回 reasoning content
Agent Tool原生支持 Tool(Search、Code Execution、MCP)仅支持 Function Calling
计费优化自动缓存对话历史每个请求都按完整历史计费
未来功能所有新能力优先在此提供Legacy Endpoint,更新有限

主要 API 变化

参数映射

Chat CompletionsResponses API说明
messagesinputMessage object array
max_tokensmax_output_tokens生成 token 的最大数量
previous_response_id继续已存储的对话
store控制 Server-side Storage(默认值:true
include请求其他数据,例如 reasoning.encrypted_content

Response 结构

两个 API 的 response 格式不同:

Chat Completionschoices[0].message.content 中返回内容:

JSON

{
  "id": "chatcmpl-123",
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "Hello! How can I help you?"
    }
  }]
}

Responses APIoutput array 中返回带类型的 item:

JSON

{
  "id": "resp_123",
  "output": [{
    "type": "message",
    "role": "assistant",
    "content": [{
      "type": "output_text",
      "text": "Hello! How can I help you?"
    }]
  }]
}

多轮对话

使用 Chat Completions 时,每个请求都必须重新发送完整对话历史。使用 Responses API 时,可以通过 previous_response_id继续对话:

Python

# First request
response = client.responses.create(
    model="grok-4",
    input=[{"role": "user", "content": "What is 2+2?"}],
)

# Continue the conversation - no need to resend history
second_response = client.responses.create(
    model="grok-4",
    previous_response_id=response.id,
    input=[{"role": "user", "content": "Now multiply that by 10"}],
)

迁移路径

从 Chat Completions 迁移到 Responses API 很直接。下面介绍各 SDK 的代码更新方式:

Vercel AI SDK

xai()替换为xai.responses() 中返回内容:

JavaScript

  model: xai('grok-4'),
  model: xai.responses('grok-4'),

OpenAI SDK(JavaScript)

client.chat.completions.create替换为client.responses.create,并将 messages替换为input 中返回内容:

JavaScript

const response = await client.chat.completions.create({
const response = await client.responses.create({
    messages: [
    input: [
        { role: "user", content: "Hello!" }
    ],
});

OpenAI SDK(Python)

client.chat.completions.create替换为client.responses.create,并将 messages替换为input 中返回内容:

Python

response = client.chat.completions.create(
response = client.responses.create(
    messages=[
    input=[
        {"role": "user", "content": "Hello!"}
    ],
)

cURL

将 endpoint 从 /v1/chat/completions替换为/v1/responses,并将 messages替换为input 中返回内容:

Bash

curl https://api.x.ai/v1/chat/completions \
curl https://api.x.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -d '{ "model": "grok-4", "messages": [{"role": "user", "content": "Hello!"}] }'
  -d '{ "model": "grok-4", "input": [{"role": "user", "content": "Hello!"}] }'

这适用于大多数使用场景。如果有特殊集成,请参阅 Responses API 文档获取详细指导。