模型能力
与聊天完成 API 的比较
Responses API 是与 xAI 模型交互的推荐方式。以下是它与传统的聊天完成 API 的比较:
| 功能 | Responses API | 聊天完成 API (已弃用) |
|---|---|---|
| 有状态对话 | 通过 previous_response_id 内置支持 | 无状态 — 必须重新发送完整历史记录 |
| 服务器端存储 | 响应存储30天 | 无存储 — 需自行管理历史记录 |
| 推理模型 | 完全支持加密推理内容 | 不返回推理内容 |
| 智能体工具 | 原生支持工具(搜索、代码执行、MCP) | 仅支持函数调用 |
| 计费优化 | 自动缓存对话历史 | 每次请求都计费完整历史记录 |
| 未来功能 | 所有新功能将首先在此提供 | 传统端点,更新有限 |
主要 API 变更
参数映射
| 聊天完成 | Responses API | 说明 |
|---|---|---|
messages | input | 消息对象数组 |
max_tokens | max_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 文档 获取详细指导。