Grok 4.7 与旧版本怎么选
选模型不是选「谁更强」,是选「够用且成本可控」。很多团队一上来就锁旗舰,等到账单出来才发现:自己 90% 的请求根本用不到旗舰的上下文,却一直按旗舰单价付钱。这一节把在售模型的上下文、价目、推理档位摆成一张带核验日期的对照表,再给一个能离线跑的「按需求筛模型」函数。
本教程不评价「谁更强」——那是基准测试的事,且数字会过时。我们只解决一个工程问题:给定上下文需求和预算,哪些模型满足,其中哪个最便宜。
一、问题不是「哪个最新」,而是「哪个刚好够」
模型选择有两个硬约束和一个软约束:
- 硬约束 1:上下文窗口。你的任务一次最多要带多少 token 进场,决定了哪些模型根本不在候选里。
- 硬约束 2:预算。单价(尤其输入与输出)决定了长跑成本。
- 软约束:推理强度档位。部分模型支持调推理强度,影响延迟与消耗(见 4.2)。
下面用 2026-11-04 官方 /developers/models 页的可核验数据,写筛模型的函数。
二、最小可运行示例:按需求筛模型
下面的脚本不联网、不需要真实密钥。数据来自 2026-11-04 官方 models 页的 <200k 档单价与上下文窗口(USD / 1M tokens)。它按「最少上下文」与「单价上限」两道门槛筛候选。
"""按上下文需求与每 1M token 预算选模型(mock,数据来自 2026-11-04 官方 models 页)。"""
## 2026-11-04 官方 /developers/models:上下文窗口与 <200k 档单价(USD / 1M tokens)
MODELS = [
{"id": "grok-4.7", "ctx": 500_000, "in": 2.00, "cached": 0.50, "out": 6.00, "reasoning_tiers": 4},
{"id": "grok-4.6", "ctx": 500_000, "in": 2.00, "cached": 0.50, "out": 6.00, "reasoning_tiers": 4},
{"id": "grok-4.5", "ctx": 500_000, "in": 2.00, "cached": 0.30, "out": 6.00, "reasoning_tiers": 3},
{"id": "grok-4.3", "ctx": 1_000_000, "in": 1.25, "cached": 0.20, "out": 2.50, "reasoning_tiers": None},
{"id": "grok-4.20-0309-reasoning", "ctx": 1_000_000, "in": 1.25, "cached": 0.20, "out": 2.50, "reasoning_tiers": None},
{"id": "grok-build-0.1", "ctx": 256_000, "in": 1.00, "cached": 0.20, "out": 2.00, "reasoning_tiers": None},
]
def select_by_context(min_ctx: int, budget_in: float) -> list[dict]:
"""返回上下文够用、且输入单价不超过预算的模型,按输入单价升序。"""
pool = [m for m in MODELS if m["ctx"] >= min_ctx and m["in"] <= budget_in]
return sorted(pool, key=lambda m: m["in"])
def offline_check() -> None:
# 需求:至少 800k 上下文,输入单价不超 $1.5
picks = select_by_context(800_000, 1.5)
ids = [m["id"] for m in picks]
assert "grok-4.3" in ids and "grok-4.20-0309-reasoning" in ids
assert "grok-4.7" not in ids, "500k 上下文不满足 800k 需求"
print("满足 800k / $1.5 的候选:", ids)
# 预算收紧演示:256k 需求下,$2.0 含全部,$1.3 排除 4.5/4.6/4.7
wide = select_by_context(256_000, 2.0)
narrow = select_by_context(256_000, 1.3)
print("256k / $2.0:", [m["id"] for m in wide])
print("256k / $1.3:", [m["id"] for m in narrow])
if __name__ == "__main__":
offline_check()
真正选型时,把 MODELS 换成你抓取当日的官方数据即可;函数逻辑不变。注意 grok-build-0.1 的上下文最小(256k),多数通用任务不该默认选它;它的具体适用场景以官方模型页为准。
三、各模型对照(带核验日期)
| 模型 | 上下文 | <200k 输入/缓存/输出(USD/1M) |
推理强度档 | 核验状态 |
|---|---|---|---|---|
grok-4.7 |
500k | 2.00 / 0.50 / 6.00 | 4 档(low/medium/high/xhigh) | 已确认(2026-11-04) |
grok-4.6 |
500k | 2.00 / 0.50 / 6.00 | 4 档 | 已确认 |
grok-4.5 |
500k | 2.00 / 0.30 / 6.00 | 3 档(low/medium/high) | 已确认 |
grok-4.3 |
1M | 1.25 / 0.20 / 2.50 | 以官方页为准 | 已确认价目/上下文 |
grok-4.20-0309-reasoning |
1M | 1.25 / 0.20 / 2.50 | 以官方页为准 | 已确认 |
grok-build-0.1 |
256k | 1.00 / 0.20 / 2.00 | 以官方页为准 | 已确认 |
三件要强调的事:
- 带日期,不带「长期不变」一类表述。上表单价是 2026-11-04 官方页的值,官方会在 release-notes 调整价目,写作时与上线时都应以官方页与控制台当前显示为准。
- 跨 200k 阈值会整请求跳档(见 4.3),所以表中的
<200k单价不是全量单价;长上下文请求要按高档重算。 - 推理档位数目因模型而异:
grok-4.7与grok-4.6是四档,grok-4.5的发布说明只列三档(默认 high)。不同模型的档位以各自官方页为准,不要假设全部四档通用。
四、预期输出与异常分支
运行筛模型函数,预期输出:
满足 800k / $1.5 的候选: ['grok-4.3', 'grok-4.20-0309-reasoning']
256k / $2.0: ['grok-build-0.1', 'grok-4.3', 'grok-4.20-0309-reasoning', 'grok-4.5', 'grok-4.6', 'grok-4.7']
256k / $1.3: ['grok-build-0.1', 'grok-4.3', 'grok-4.20-0309-reasoning']
换成真实选型时,若出现异常,按下面顺序定位:
| 现象 | 优先怀疑 | 第一步动作 |
|---|---|---|
| 候选为空 | 预算卡太紧或上下文要求过高 | 放宽 budget_in 或 min_ctx |
| 选了不该选的旗舰 | 单价门槛没设对 | 打印 MODELS 复核数据 |
| 长请求账单超表 | 没算 200k 跳档 | 见 4.3 重算高档 |
| 模型 404 | 用了过期 ID | 核对 /developers/models 当前列表 |
最后一行尤其重要:候选为空往往不是「没有模型」,而是「门槛写反了」。把 select_by_context 的两个参数打印出来对照需求,比换模型名有用。
五、判据卡
| 判断项 | 该这么做 | 不该这么做 |
|---|---|---|
| 选模型 | 按上下文+预算筛,选最便宜的够用款 | 默认锁旗舰按最高单价付 |
| 看价目 | 带核验日期,以官方页为准 | 写「长期不变」一类表述 |
| 长上下文 | 评估 200k 跳档后的真实单价 | 只按 <200k 档估算 |
| 推理档位 | 按模型查各自档位数 | 假设全部四档通用 |
| 出错排查 | 先打印候选与门槛 | 先换模型名碰运气 |
这张卡的重点是先筛再评。五类现象里「候选为空」和「选了旗舰」常常同源:预算门槛没设对,表现一个是筛不出一个是筛出贵的,但修法都在 select_by_context 的参数上。
六、来源与核验
- 官方模型页:
https://docs.x.ai/developers/models(核验日期 2026-11-04)。上下文窗口、<200k与≥200k单价、模型列表以该页为准。 - 官方
grok-4.7概览:https://docs.x.ai/developers/grok-4-7。推理强度档位差异(四档 vs 三档)来源为官方 release-notes(F31)。 - 价格、额度与区域可用性以控制台当前页面为准;
grok-4.3等模型的推理档位以各自官方页当前显示为准。
七、动手试
- 给
select_by_context()加一个max_out参数,按输出单价再筛一层,验证「既要长上下文又要低输出价」时会剩下哪些模型。 - 把
MODELS换成你今日抓取的官方数据重跑offline_check(),记录与 2026-11-04 的差异。想一想:如果官方调价,你的选型脚本需要改几处? - 设计一个「候选为空」的回退策略:当没有任何模型同时满足上下文与预算时,给出至少两种降级路径(例如降低上下文需求、改用检索而非全量带文),并说明各自代价。