怎么挑写代码的模型:这是一套筛法,不是一份排名
四条产品线、27 个文本模型,输入单价从每百万 0.050 美元到 4.00 美元。四道约束就能把它收成一份下午就测得完的候选名单。
先看路由,因为它要花的是代码
目录里有 27 个文本模型。在比质量、比价格之前,先按它们各自应答的端点分组——因为这是唯一一个会让"换模型"变贵的差异。
13 个在 /v1/messages 上:所有 Claude id,再加 stable-gpt-6-astra。它们要 x-api-key 和 anthropic-version 两个头、一个 messages 数组,以及必填的 max_tokens。6 个在 /v1/responses 上:gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna、gpt-5.5、gpt-5.4、gpt-5.4-mini,鉴权是 Authorization: Bearer,字段是 input。8 个在 /v1/chat/completions 上:grok-4.6、grok-4.5、grok-composer-2.5-fast 和五个 Gemini id,同样是 Authorization: Bearer。
如果你的代码已经在说其中一种方言,那么在这一组里换是改一个字段,跨组换是一个小项目。这是实打实的成本,应该摆进对比里,而不是切到一半才发现。如果是从零开始,三个路由没有高下之分——按后面三道约束挑,路由跟着结果走就行。
再看两个上限,因为它们是排除法
上下文决定你一次能发进去多少。经常整文件粘贴、贴长 stack trace、或者把仓库索引塞进去的,先量一个真实 prompt 再来筛。分档是这样:20 万 token 有 claude-sonnet-4-6、stable-claude-sonnet-4-6、stable-claude-haiku-4-5、grok-composer-2.5-fast;27.2 万有 gpt-5.5、gpt-5.4、gpt-5.4-mini;37.2 万是三个 gpt-5.6;50 万是 grok-4.6 和 grok-4.5;100 万是九个 Claude id 加五个 Gemini id;105 万是 stable-gpt-6-astra。
输出上限决定一次能吐回来多少,这一栏最常被忽略。所有 Gemini id 都是 65,536 token(gemini-3.1-pro-low 是 65,535),grok-4.6 和 grok-4.5 也是。grok-composer-2.5-fast 是 32,768。gpt-5.5、gpt-5.4、gpt-5.4-mini、claude-sonnet-4-6、stable-claude-sonnet-4-6、stable-claude-haiku-4-5 是 64,000。能到 12.8 万的是 Claude 那批 100 万上下文的 id、三个 gpt-5.6,以及 stable-gpt-6-astra。
一次生成一个大文件、或者铺开一次大范围重构,卡的是输出上限;把大仓库读进去然后简短作答,卡的只有上下文上限。日常写代码大多属于后一种——这也是为什么便宜的大上下文 id 能在候选名单里待得比很多人预期的更久。
然后算价格,别拍脑袋
到手价 = 官方单价 × 该模型的倍率,所以千万别直接比倍率——它们乘的底价根本不同。gpt-5.6-luna 是 0.3 倍,输入折成每百万 0.06 美元;gpt-5.4-mini 是 0.1 倍,折成 0.075 美元。倍率高的那个反而便宜。
把常进候选名单的 id 的有效单价(输入 / 输出,每百万)列一下:gemini-3-flash 0.050 / 0.30,gpt-5.6-luna 0.06 / 0.36,gemini-3.7-flash-high 和 gemini-3.6-flash-high 0.075 / 0.375,gpt-5.4-mini 0.075 / 0.45,grok-composer-2.5-fast 0.15 / 0.75,gemini-3.8-flash 0.15 / 0.75,grok-4.6 和 grok-4.5 0.20 / 0.60,gpt-5.6-terra 0.20 / 1.20,gemini-3.1-pro-low 0.20 / 1.20,gpt-5.4 0.25 / 1.50,claude-sonnet-5 0.30 / 1.50,stable-claude-haiku-4-5 0.40 / 2.00,claude-opus-5 0.50 / 2.50,gpt-5.6-sol 0.50 / 3.00,gpt-5.5 0.50 / 3.00。
两点结构性的东西。一是目录里每个模型的输出价都是输入价的 3 到 6 倍,所以凡是让回答变长的因素都落在贵的那侧——比例最窄的是 grok-4.6 和 grok-4.5 的 3 倍,最宽的是六个 gpt-5.x 和其中两个 Gemini id 的 6 倍。二是 stable-* 表示这是我们自己 key 上的专用通道而非共享池:权重一样,不参与池内 failover,倍率更高。claude-sonnet-5 是 0.30 / 1.50,stable-claude-sonnet-5 是 0.80 / 4.00。这是一个独立于"选哪个模型"的路由决定。
最后一道约束只能自己测
三道筛子过完,手里会剩两三个候选。最后那个问题——它到底会不会写你这套代码——models.json 里没有,也不可能有。目录记的是能力、上限和单价,记不了模型懂不懂你的构建系统、写出来的测试能不能过你们 reviewer 那一关。
一个下午做得完的测法:攒十五到二十个你已经做完、能客观打分的任务——修好过的 bug、上线过的重构、有测试套件兜底的函数。用同一个 prompt 在候选名单上各跑一遍,重点给失败的样本打分,而不是给成功的。写出看着像模像样的代码谁都会,区别出现在任务描述不完整的时候。
然后把质量换算成钱。从每次响应的 usage 里读出输入、输出 token 数,乘各自的有效单价。排名在这一步经常反转:一个 0.50 / 3.00 的模型如果一次就做对、而且话不多,总账可能比一个 0.075 / 0.45、要试三次还长篇大论的更低。用自己的任务算这笔账,换了 prompt 之后再算一遍——答案是你这份工作负载的属性,不是模型的属性。
TASK="Here is a failing test and the function under test. Fix the function."
# /v1/messages — claude-sonnet-5 ($0.30 / $1.50 per M)
curl -sS https://token-share.app/v1/messages \
-H "x-api-key: $TOKEN_SHARE_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d "{\"model\":\"claude-sonnet-5\",\"max_tokens\":2048,\"messages\":[{\"role\":\"user\",\"content\":\"$TASK\"}]}" \
| jq '{model: "claude-sonnet-5", usage}'
# /v1/responses — gpt-5.6-terra ($0.20 / $1.20 per M)
curl -sS https://token-share.app/v1/responses \
-H "Authorization: Bearer $TOKEN_SHARE_KEY" \
-H "content-type: application/json" \
-d "{\"model\":\"gpt-5.6-terra\",\"input\":\"$TASK\"}" \
| jq '{model: "gpt-5.6-terra", usage}'
# /v1/chat/completions — grok-4.6 ($0.20 / $0.60 per M)
curl -sS https://token-share.app/v1/chat/completions \
-H "Authorization: Bearer $TOKEN_SHARE_KEY" \
-H "content-type: application/json" \
-d "{\"model\":\"grok-4.6\",\"messages\":[{\"role\":\"user\",\"content\":\"$TASK\"}]}" \
| jq '{model: "grok-4.6", usage}'