跳转到内容

模型能力

与聊天完成 API 的比较

Responses API 是与 xAI 模型交互的推荐方式。以下是它与传统的聊天完成 API 的比较:

功能Responses API聊天完成 API (已弃用)
有状态对话通过 previous_response_id 内置支持无状态 — 必须重新发送完整历史记录
服务器端存储响应存储30天无存储 — 需自行管理历史记录
推理模型完全支持加密推理内容不返回推理内容
智能体工具原生支持工具(搜索、代码执行、MCP)仅支持函数调用
计费优化自动缓存对话历史每次请求都计费完整历史记录
未来功能所有新功能将首先在此提供传统端点,更新有限

主要 API 变更

参数映射

聊天完成Responses API说明
messagesinput消息对象数组
max_tokensmax_output_tokens要生成的最大令牌数
previous_response_id继续存储的对话
store控制服务器端存储(默认:true
include请求附加数据,如 reasoning.encrypted_content

响应结构

两个 API 的响应格式不同:

聊天完成choices[0].message.content 中返回内容:

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

Responses API 在带有类型化项的 output 数组中返回内容:

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

多轮对话

使用聊天完成 API 时,每次请求都必须重新发送整个对话历史。使用 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"}],
)

迁移路径

从聊天完成 API 迁移到 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

将端点从 /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 文档 获取详细指导。

本文档为 docs.x.ai 全站中文翻译,由 AI 自动翻译生成。代码示例请以原文为准。