Grok 对话
xAI Grok 系列:7 个模型 ID 与计费方式、grok-4.7 / grok-4.6 的 Chat / Responses 调用与参数支持、推理 token、错误速查与迁移清单
POST /v1/chat/completions · POST /v1/responses
xAI 的 Grok 系列在本网关上覆盖对话、图像、视频三类能力,共 7 个模型 ID,全部走 OpenAI 兼容协议:
base_url 填 https://www.vibeapi.cn/v1,openai SDK 直接用。它的参数支持与 OpenAI 系差别不小:
stop、presence_penalty、frequency_penalty、n、logprobs 传了都返回 200,但都不生效。本页讲对话与全系列共用的模型、计费、错误;
生图见 Grok 图像,视频见 Grok 视频,在 Claude Code 里使用,用 VibeCLI 一条命令配好,/model 里直接选 Grok。
本页结论来自对本网关的真实调用,并对照 docs.x.ai 逐条核对;与官方口径不一致之处均标注「实测」。最后验证:2026-10-13(联网搜索)、2026-09-23(其余)。
基本调用
curl -N https://www.vibeapi.cn/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4.7",
"messages": [{"role": "user", "content": "用一句话解释量子纠缠"}],
"stream": true
}'from openai import OpenAI
client = OpenAI(base_url="https://www.vibeapi.cn/v1", api_key="YOUR_API_KEY")
stream = client.chat.completions.create(
model="grok-4.7",
messages=[{"role": "user", "content": "用一句话解释量子纠缠"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://www.vibeapi.cn/v1", apiKey: "YOUR_API_KEY" });
const stream = await client.chat.completions.create({
model: "grok-4.7",
messages: [{ role: "user", content: "用一句话解释量子纠缠" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}模型
| 模型 | 能力 | 端点 | 计费 |
|---|---|---|---|
grok-4.7 | 对话 / 推理,最新一代 | /v1/chat/completions · /v1/responses | 按 token,两档,与 4.6 同价 |
grok-4.6 | 对话 / 推理 | 同上 | 按 token,两档 |
grok-4.5 | 对话 / 推理,上上代 | 同上 | 按 token,两档,与 4.6 同价 |
grok-imagine-image-2.0 | 文生图 + 图生图,当前主力 | /v1/images/generations · /v1/images/edits | 按张 |
grok-imagine-image-quality | 文生图 + 图生图,上一代 | 同上 | 按张 |
grok-imagine-video-1.5 | 文生 / 图生 / 参考图生视频 | /v1/videos/generations | 按秒 |
grok-imagine-video | 视频编辑 + 视频延长(这两个接口只接受这个模型名) | /v1/videos/edits · /v1/videos/extensions | 按秒 |
grok-imagine-image-quality 官方定于 2026-11-02 退役,之后这个模型名由 2.0 以 quality: low 接管,请求与响应形状不变。
它目前是唯一能指定画幅的 Grok 图像模型,依赖竖图 / 方图的链路要提前打算,见图像。
计费方式
单价随分组倍率变动,一律以价格页为准;这里只讲计费方式,也就是写代码时会影响费用的那几件事。
对话按 token,分两档。 单次请求的输入达到 200K token 时进入第二档,输入、输出、缓存读取单价全部翻倍。
grok-4.7、grok-4.6、grok-4.5 三个定价相同,包括这条分档规则。4.6 与 4.5 都能吃下超长上下文(实测 210K 输入正常返回),
越界的是费用档位,不是上下文长度——把长文档一次性塞进 prompt 之前先算一遍账,能拆到 200K 以内就拆。
图像按张。 n 张就是 n 份费用。图生图复用生图模型,价格与文生图同档。
联网搜索按次。 走 Responses 入口时,web_search 按实际搜索次数计费,每千次 5 美元;x_search 按抓取的 X 帖子(每千条 5 美元)和用户资料(每千份 10 美元)计。都要乘分组倍率,调用日志里写明次数与费用。模型没有真的去搜就不收这部分。
视频按秒,不是按次。 价格页给的是每秒单价,一条 6 秒视频要乘 6;按实际产出秒数结算,生成失败或超时全额退款。 编辑、延长各自产出的视频重新计费。
新旧两代怎么选
| 场景 | 选谁 | 原因 |
|---|---|---|
| 长时 Agent、编码 | grok-4.7 | 与 4.6 同价,参数支持一致(2026-09-23 逐项复测);每次请求多带约 1,000 个隐藏输入 token,见推理 token |
| 短问答、高频小请求 | grok-4.6 | 隐藏输入约 210 token,单次成本低于 4.7;与 4.5 同价同参数,没有留在 4.5 的理由 |
| 横图、默认画幅 | grok-imagine-image-2.0 | 固定输出 1248×832 |
| 竖图、方图、指定画幅 | grok-imagine-image-quality | 2.0 在本网关不认 aspect_ratio,只有它能指定画幅;注意 11-02 退役 |
| 批量出图、对延迟敏感 | grok-imagine-image-quality | 单张约 5 秒;2.0 约 40–60 秒 |
请求参数
| 参数 | 支持 | 说明 |
|---|---|---|
messages | ✅ | 必填 |
max_tokens | ✅ | 只约束可见回复,推理 token 另算:设 20 时实得 20 个可见 token + 96 个推理 token |
temperature / top_p | ✅ | |
n | ⚠️ | 返回 200,但只回 1 个 choice(4.5 / 4.6 / 4.7 相同;2026-09-12 时 n=2 还能返回 2 个)。要多个候选请并发多次 |
seed | ✅ | 接受,但推理模型不保证复现,见下文 |
stream | ✅ | SSE 流式 |
tools / tool_choice | ✅ | 标准 Function Calling。Chat 接口不支持 xAI 的内置搜索(带上 web_search / x_search 会返回 422),网关会移除 web_search;要联网请走 Responses 入口 |
response_format | ✅ | {"type": "json_object"} 可用 |
reasoning_effort | ✅ | low / medium / high(默认)/ xhigh,四档均可用(4.6 实测 reasoning_tokens 约 99 / 161 / 157 / 212);none 返回 200 但推理照常(仍有约 200 个 reasoning_tokens),推理不可关闭 |
logprobs / top_logprobs | ⚠️ | 返回 200 但字段为 null,静默忽略 |
stop | ⚠️ | 返回 200,静默忽略:停止词照常出现在输出里 |
presence_penalty / frequency_penalty | ⚠️ | 返回 200,从响应上看不出是否生效,按不生效处理 |
stop 不再报错,但也不生效。 2026-09-12 时这三个参数传了直接 400;2026-09-23 复测 4.5 / 4.6 / 4.7 都改成返回 200、
输出不受约束。依赖停止序列截断的逻辑,要改成在客户端截断。
多轮对话建议带上 prompt_cache_key(Responses)或请求头 x-grok-conv-id(Chat),把同一会话路由到同一台服务器以稳定命中缓存;
否则常按全价输入计费。
Responses 入口
xAI 官方把 Responses API 列为首选入口,本网关可用:
curl https://www.vibeapi.cn/v1/responses \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4.7",
"input": [{"role": "user", "content": "How do stars form?"}],
"reasoning": {"effort": "high"}
}'/v1/chat/completions | /v1/responses | |
|---|---|---|
| 会话状态 | 无状态,每次重发全部历史 | 官方支持服务端保存 |
| 多轮 | 自行拼接 messages | 官方支持 previous_response_id |
| 推理档位 | reasoning_effort | reasoning.effort |
本网关返回 store: false,即服务端留存未开启,多轮对话仍需自行携带历史(xAI 官方默认 store: true 保存 30 天,这是网关侧差异)。
联网搜索
Responses 入口支持 xAI 的两个服务端搜索工具,由 xAI 服务端执行,结果直接写进回答:
web_search:网页搜索。回复的output里每搜一次有一个web_search_call条目。x_search:搜 X(Twitter)上的帖子和用户资料。
curl https://www.vibeapi.cn/v1/responses \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4.7",
"input": "联网搜一条今天的科技新闻,一句话,带出处",
"tools": [{"type": "web_search"}]
}'- OpenAI 规范里
web_search的external_web_access、search_context_size两个字段 xAI 不支持,网关转发前会删掉,工具本身保留。Codex 默认会带external_web_access,所以 Codex 接 Grok 可以直接联网。 user_location、filters(如allowed_domains)可用。- 旧写法
web_search_preview不报错,但不会真的执行搜索,请用web_search。 - Chat 接口(
/v1/chat/completions)不支持这两个工具。 - 费用见上文计费方式。
推理 token
三个对话模型都是推理模型,usage 里会有推理消耗:
"usage": {
"prompt_tokens": 212,
"completion_tokens": 65,
"completion_tokens_details": { "reasoning_tokens": 63 },
"prompt_tokens_details": { "cached_tokens": 128 }
}上例一句「回复 PONG」实际消耗 65 个输出 token,其中 63 个是推理 token,可见回复只占 2 个。
按可见回复长度估算成本会严重偏低,请以 usage 为准;reasoning_effort: "low" 能明显压低这部分开销。
固定 seed 与 temperature=0 连续调用,推理 token 数与措辞仍会波动(同一句提示词四次分别 282 / 286 / 311 / 294)。
推理模型不保证确定性复现,需要稳定输出的场景请在应用层处理。
隐藏输入 token。 上例只发了一句话,prompt_tokens 却是 212——每次请求都带着一段看不见的系统提示。
grok-4.7 的这部分更大:发一句 hi,prompt_tokens 是 1,243,其中 1,152 命中缓存(按缓存读取单价计费)。
估算成本时把这段固定开销算进去,高频短请求用 4.6 更省。
真实响应示例
最后一条是传了 stop 的真实响应:返回 200,回复末尾仍是停止词「。」。
▸grok-4.6 · Chat
请求 POST /v1/chat/completions
{ "model": "grok-4.6", "max_tokens": 120, "messages": [ { "role": "user", "content": "用一句话解释幂等" } ]}响应
{ "id": "5f7a4c41-5d6a-9f4b-8b31-2e09f9bb89c7", "object": "chat.completion", "created": 1788981783, "model": "grok-4.6-build", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "幂等是指一个操作无论执行一次还是多次,其产生的效果(或结果)都相同。", "reasoning_content": "The user asked: \"用一句话解释幂等\" which is Chinese for \"Explain idempotence in one sentence.\"\n" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 212, "completion_tokens": 296, "total_tokens": 508, "prompt_tokens_details": { "cached_tokens": 128, "text_tokens": 212, "audio_tokens": 0, "image_tokens": 0 }, "completion_tokens_details": { "text_tokens": 24, "audio_tokens": 0, "image_tokens": 0, "reasoning_tokens": 272 }, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null, "claude_cache_creation_5_m_tokens": 0, "claude_cache_creation_1_h_tokens": 0 }, "system_fingerprint": "fp_08d0bc26c22b024e"}▸grok-4.7 · Chat
请求 POST /v1/chat/completions
{ "model": "grok-4.7", "max_tokens": 120, "messages": [ { "role": "user", "content": "用一句话解释幂等" } ]}响应
{ "id": "4334f051-b90c-96c4-86db-ec53e5931a40", "object": "chat.completion", "created": 1790155893, "model": "grok-4.7-build", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "幂等是指同一个操作执行一次和执行多次,最终结果完全一样。", "reasoning_content": "The user asked in Chinese: \"用一句话解释幂等\" which means \"Explain idempotency in one sentence.\"\n", "tool_calls": null }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 1248, "completion_tokens": 128, "total_tokens": 1376, "prompt_tokens_details": { "cached_tokens": 1152, "text_tokens": 0, "audio_tokens": 0, "image_tokens": 0 }, "completion_tokens_details": { "text_tokens": 17, "audio_tokens": 0, "image_tokens": 0, "reasoning_tokens": 111 }, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null, "claude_cache_creation_5_m_tokens": 0, "claude_cache_creation_1_h_tokens": 0 }, "system_fingerprint": ""}▸grok-4.6 · Responses
请求 POST /v1/responses
{ "model": "grok-4.6", "input": "用一句话解释幂等", "max_output_tokens": 120}响应
{ "created_at": 1788981790, "completed_at": 1788981795, "id": "390bf85e-6263-93a0-b77b-972f4b9c1984", "max_output_tokens": 120, "model": "grok-4.6-build", "object": "response", "output": [ { "id": "rs_XXXXXXXX", "summary": [ { "text": "The user's query is: \"用一句话解释幂等\" which is Chinese for \"Explain idempotence in one sentence.\"\n", "type": "summary_text" } ], "type": "reasoning", "status": "completed" }, { "content": [ { "type": "output_text", "text": "幂等是指某个操作无论执行多少次,其结果都与执行一次相同。", "logprobs": [], "annotations": [] } ], "id": "msg_XXXXXXXX", "role": "assistant", "type": "message", "status": "completed" } ], "parallel_tool_calls": true, "previous_response_id": null, "reasoning": { "effort": "high", "summary": "detailed" }, "temperature": 0.7, "text": { "format": { "type": "text" } }, "tool_choice": "auto", "tools": [], "top_p": 0.95, "usage": { "input_tokens": 212, "input_tokens_details": { "cached_tokens": 128 }, "output_tokens": 243, "output_tokens_details": { "reasoning_tokens": 224 }, "total_tokens": 455, "num_sources_used": 0, "num_server_side_tools_used": 0, "cost_in_usd_ticks": 2873000, "context_details": { "input_tokens": 212, "output_tokens": 243 } }, "user": null, "incomplete_details": null, "status": "completed", "store": false, "metadata": { "system_fingerprint": "fp_08d0bc26c22b024e" }, "background": false, "truncation": "disabled", "top_logprobs": 0, "presence_penalty": 0.0, "frequency_penalty": 0.0, "prompt_cache_key": "f45f1504-ab45-491c-b37f-cc2ce9dd35ea", "max_tool_calls": null, "safety_identifier": null, "error": null, "instructions": null}▸grok-4.6 · 传 stop:返回 200,但停止词照常出现
请求 POST /v1/chat/completions
{ "model": "grok-4.6", "max_tokens": 120, "messages": [ { "role": "user", "content": "用一句话解释幂等" } ], "stop": [ "。" ]}响应
{ "id": "4bfe1352-debe-9595-860d-2a09bc973af5", "object": "chat.completion", "created": 1790155873, "model": "grok-4.6-build", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "幂等是指一个操作无论执行一次还是多次,其结果和副作用都与只执行一次完全相同。", "reasoning_content": "The user asked: \"用一句话解释幂等\" which is Chinese for \"Explain idempotence in one sentence.\"\n", "tool_calls": null }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 212, "completion_tokens": 356, "total_tokens": 568, "prompt_tokens_details": { "cached_tokens": 128, "text_tokens": 0, "audio_tokens": 0, "image_tokens": 0 }, "completion_tokens_details": { "text_tokens": 25, "audio_tokens": 0, "image_tokens": 0, "reasoning_tokens": 331 }, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null, "claude_cache_creation_5_m_tokens": 0, "claude_cache_creation_1_h_tokens": 0 }, "system_fingerprint": ""}以上为真实调用抓取并脱敏 · 2026-09-09
容量抖动
Grok 图片 / 视频的号池容量有限,突发并发会失败,而且失败表现与「参数不被支持」很像,容易误判:
同时提交 8 个视频任务,提交全部返回 200,生成阶段整批 failed;相同参数单发或并发 ≤ 2 时全部成功。
失败信息也很笼统(upstream returned error / no eligible account)。
视频提交并发控制在 2 以内,失败用指数退避重试 3–5 次,不要因单次失败就判定某参数不可用。
错误速查
| 现象 | 原因 | 处理 |
|---|---|---|
设了 stop,输出没在停止词处截断 | Grok 静默忽略 stop | 在客户端截断 |
n=2 只拿到 1 个 choice | Grok 现在不执行 n | 并发多次请求 |
reasoning_effort: none 仍有 reasoning_tokens | 推理不可关闭 | 用 low 压低开销 |
400 seconds must be between 1 and 15 | 视频时长越界 | 调整至 1–15 |
400 The number of images to generate (n) must be between 1 and 10 inclusive | 生图数量越界 | 调整至 1–10 |
非流式请求返回空的 text/event-stream,正文只有 data: [DONE] | 上游抖动,一次性空响应 | 直接重试 |
生图 aspect_ratio / resolution / quality 设了不生效 | grok-imagine-image-2.0 在本网关不认这些参数 | 指定画幅用 grok-imagine-image-quality(11-02 退役) |
视频 failed 但参数无误 | 容量抖动 | 退避重试 |
视频 failed + image_download_error | 参考图无法公网直接获取 | 换可直接引用的图床 |
改图 502 可用渠道不存在 | 用了 multipart/form-data 上传图片 | 改成 JSON body,图片走 URL 或 base64 内联 |
/content 502 或 Video request not found,任务却是 completed | 视频已被回收 | 无法找回,需重新生成;今后生成完立即下载落盘 |
400 Video editing is not supported for this model. / Video extension is not supported for this model. | 编辑或延长接口传了 grok-imagine-video-1.5 | 换成不带版本号的 grok-imagine-video |
| 视频编辑后时长翻倍(4 秒变 8 秒) | 走了旧写法 /generations + video 且用 1.5 不传 duration | 改用 /v1/videos/edits + grok-imagine-video |
迁移 OpenAI 代码的检查清单
stop/presence_penalty/frequency_penalty/n/logprobs传了不报错也不生效,依赖它们的逻辑改到客户端reasoning_effort用low/medium/high/xhigh;none不报错,但关不掉推理- 预算按
usage里的reasoning_tokens与prompt_tokens重新估算——推理 token 和隐藏系统提示都可能远超可见内容 - 生图把
size换成aspect_ratio;用 2.0 时不要依赖画幅,固定 1248×832 - 改图改成 JSON body,不要用 SDK 的 multipart
images.edit() - 视频把
size换成resolution,改成异步轮询,生成完立即下载 - 视频编辑走
/v1/videos/edits、延长走/v1/videos/extensions,模型都写grok-imagine-video
能力边界
stop、presence_penalty、frequency_penalty、n、logprobs返回 200 但不生效。- 推理不可关闭,
reasoning_effort: none返回 200 但照常推理。 - Chat 接口不支持内置搜索,
web_search会被网关移除;联网请用 Responses 的web_search/x_search(按次计费)。 - Responses 的服务端留存未开,
store恒为false,多轮仍需自带历史。 grok-imagine-image-2.0不认aspect_ratio/resolution/quality,只出 1248×832。size在图像与视频接口里都被静默忽略,改用aspect_ratio/resolution。- 视频文件会被回收,生成完成后立即下载落盘,之后
/content可能取不到。 grok-imagine-edit已下线,代码里还有这个模型名的请移除。
在线调试
填入你自己的 API Key 即可直接发起请求,参数表与响应结构由接口定义生成。
模型填 grok-4.7 或 grok-4.6。
Chat Completions
Authorization
BearerAuth
使用 Bearer Token 认证。
格式: Authorization: Bearer sk-xxxxxx
In: header
Request Body
application/json
模型 ID
对话消息列表
采样温度
10 <= value <= 2核采样参数
10 <= value <= 1生成数量
11 <= value是否流式响应
false停止序列
最大生成 Token 数
最大补全 Token 数
0-2 <= value <= 20-2 <= value <= 2推理强度 (用于支持推理的模型)
"low" | "medium" | "high"Response Body
application/json
application/json
application/json
curl -X POST "https://www.vibeapi.cn/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4", "messages": [ { "role": "system", "content": "string" } ] }'{
"id": "string",
"object": "chat.completion",
"created": 0,
"model": "string",
"choices": [
{
"index": 0,
"message": {
"role": "system",
"content": "string",
"name": "string",
"tool_calls": [
{
"id": "string",
"type": "function",
"function": {
"name": "string",
"arguments": "string"
}
}
],
"tool_call_id": "string",
"reasoning_content": "string"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"reasoning_tokens": 0
}
},
"system_fingerprint": "string"
}{
"error": {
"message": "string",
"type": "string",
"param": "string",
"code": "string"
}
}{
"error": {
"message": "string",
"type": "string",
"param": "string",
"code": "string"
}
}Responses
Authorization
BearerAuth
使用 Bearer Token 认证。
格式: Authorization: Bearer sk-xxxxxx
In: header
Request Body
application/json
输入内容,可以是字符串或消息数组
"auto" | "disabled"Response Body
application/json
curl -X POST "https://www.vibeapi.cn/v1/responses" \ -H "Content-Type: application/json" \ -d '{ "model": "string" }'{
"id": "string",
"object": "response",
"created_at": 0,
"status": "completed",
"model": "string",
"output": [
{
"type": "string",
"id": "string",
"status": "string",
"role": "string",
"content": [
{
"type": "string",
"text": "string"
}
]
}
],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0,
"prompt_tokens_details": {
"cached_tokens": 0,
"text_tokens": 0,
"audio_tokens": 0,
"image_tokens": 0
},
"completion_tokens_details": {
"text_tokens": 0,
"audio_tokens": 0,
"reasoning_tokens": 0
}
}
}官方文档
最后更新于