🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 把「智能 × 价格」画成一张散点图,先搞清楚自己在为什么买单
Artificial Analysis 上关于 GLM 5.3 Flash 的页面,最值得看的不是某一个孤立的分数,而是两列并排的数据:智能指数,以及每百万 token 的价格区间。前者回答「这模型有多能干」,后者回答「干这些活要花多少钱」。单独看任何一列都会误导人——指数高但价格贵,未必适合你的业务;价格便宜但指数低,可能连基本任务都兜不住。
这篇要做的是一件很具体的事:把 Artificial Analysis 上 GLM 5.3 Flash 的智能指数和价格,做成一张散点图,再换算成你自己业务口径下的「每千次调用成本线」。散点图让你一眼看出这个模型在「智能-价格」平面上的位置,成本线则把它翻译成财务语言——我每跑一千次请求,到底要掏多少钱。
适合谁看:正在给产品选默认模型的后端或全栈同学、要写成本预算的技术负责人、以及想用一份脚本横向对比多个模型但不想维护多套 SDK 的人。整条链路里,TaoToken 扮演的是「默认供应商」的角色——一把 Key、一个请求地址,之后换模型只改model字段。这样你那张散点图上的每个点,都能用同一段代码跑出来,横向可比。
需要提前说明:本文不写具体名次,也不写指数数值。Artificial Analysis 的快照会更新,模型版本也会迭代,任何写死的数字过几天就可能失效。正确做法是打开页面当天的快照,把数字抄进下面的模板里自己算。本文不含排行分数,只给方法和可复现的产出。
2. 从公榜到散点:数据怎么取、坐标怎么定
2.1 打开页面,抄两组数
在 Artificial Analysis 找到 GLM 5.3 Flash 的条目,你需要记录的是:
- 智能指数(Intelligence Index)——纵轴候选
- 每百万 token 的输入价格、输出价格(通常是一个区间或两个数)——横轴候选
这里有个容易踩的坑:价格是「每百万 token」,而你的业务是按「次调用」计费的。两者之间差一个系数——每次调用平均消耗多少 token。这个系数必须你自己测,不能拍脑袋。我试过直接拿公榜价格除以调用次数,结果偏差能到三倍以上,因为不同 prompt 的 token 消耗差异极大。
2.2 坐标轴的选择
散点图有两种画法,用途不同:
| 画法 | 横轴 | 纵轴 | 适合回答的问题 |
|---|---|---|---|
| 智能-单价 | 每百万 token 综合价格 | 智能指数 | 这个模型在同类里贵不贵 |
| 智能-业务成本 | 每千次调用成本 | 智能指数 | 用在我的业务里划不划算 |
第一种是公榜视角,第二种才是决策视角。本文重点做第二种,因为它把「每百万 token」翻译成了「每千次调用」,后者才是你月底看账单时看到的数字。
2.3 综合单价怎么算
如果输入输出价格不同,需要一个加权。最简单的方式是按你的实际输入输出比例加权:
综合单价 = 输入单价 × 输入占比 + 输出单价 × 输出占比输入占比和输出占比同样来自你自己的实测。对话类业务通常输入远大于输出,代码生成类则输出占比更高。这个比例一变,散点图上的位置就会移动,所以务必用真实流量统计,而不是默认五五开。
3. 操作步骤:一份脚本跑出散点所需的全部数据
3.1 先拿一把 Key
在 https://taotoken.net/api-keys 创建 API Key。这一步只做一次,后面所有模型共用这一把。请求地址统一填https://taotoken.net/api,不要在每个模型上分别配不同的域名。
注意:Key 只显示一次,创建后立刻复制到环境变量里,不要硬编码进脚本。
export TAOTOKEN_API_KEY="你的Key"3.2 用同一段 prompt 测两档模型
下面这段 Python 做的事:对同一个 prompt,分别调用两档模型,记录输出文本、耗时、以及返回的 token 用量。token 用量是算成本的关键,必须从响应里读,不能估算。
import os, time, json from openai import OpenAI client = OpenAI( api_key=os.environ["TAOTOKEN_API_KEY"], base_url="https://taotoken.net/api", ) PROMPT = "用三句话解释什么是幂等性,并给一个 HTTP 接口的例子。" MODELS = ["glm-5.3-flash", "另一个对照模型名"] # 以官网模型列表为准 def run_once(model): start = time.time() resp = client.chat.completions.create( model=model, messages=[{"role": "user", "content": PROMPT}], temperature=0.3, ) elapsed = time.time() - start usage = resp.usage return { "model": model, "elapsed_s": round(elapsed, 2), "prompt_tokens": usage.prompt_tokens, "completion_tokens": usage.completion_tokens, "text": resp.choices[0].message.content, } records = [run_once(m) for m in MODELS] print(json.dumps(records, ensure_ascii=False, indent=2))跑完之后你会拿到一份 JSON,里面每个模型都有耗时和 token 用量。这份记录就是散点图的数据源,也是「同一段 prompt 在两档模型上的输出记录与耗时」这个可复现产出的原始素材。
3.3 把 token 用量换算成每千次调用成本
拿到prompt_tokens和completion_tokens后,代入公榜价格:
def cost_per_1k(prompt_tokens, completion_tokens, in_price, out_price): # in_price / out_price 单位:元/百万 token per_call = (prompt_tokens * in_price + completion_tokens * out_price) / 1_000_000 return round(per_call * 1000, 4)in_price和out_price从 Artificial Analysis 页面当天快照里取。注意单位统一——如果页面给的是美元,要么统一换成人民币,要么在表里标注币种,别混着算。
3.4 生成成本-智能对照表模板
把上面两步的结果填进这张表,就是本文承诺的可复现产出:
| 模型 | 智能指数(当日快照) | 输入单价 | 输出单价 | 实测输入 token | 实测输出 token | 单次成本 | 每千次成本 | 平均耗时 |
|---|---|---|---|---|---|---|---|---|
| GLM 5.3 Flash | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 |
| 对照模型 | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 |
把「每千次成本」当横轴、「智能指数」当纵轴,每个模型一个点,散点图就出来了。GLM 5.3 Flash 落在哪个象限,取决于你填进去的数字,而不是取决于任何人的结论。
4. TaoToken 接入与配置:为什么把它设成默认供应商
4.1 一个地址,一把 Key,只改 model
TaoToken 的接入方式很直接:请求地址填https://taotoken.net/api,鉴权用同一把 Key,模型通过model字段指定。这意味着你上面那段脚本不需要为每个模型写一套客户端,MODELS列表里换名字就行。
# 换模型只动这一行 resp = client.chat.completions.create(model="glm-5.3-flash", ...)对做散点图这件事来说,这一点很关键:如果每个模型都要换 SDK、换域名、换鉴权方式,那横向对比的变量就不止「模型」一个,测出来的差异说不清是模型造成的还是接入方式造成的。统一入口之后,变量被控制住了。
4.2 配置检查清单
base_url是否指向https://taotoken.net/api- Key 是否从环境变量读取,而不是写在代码里
model字段是否与官网模型列表一致- 是否记录了每次调用的 token 用量,而不是只看返回文本
4.3 接入文档与模型列表
模型名、参数支持范围、以及各模型的计费口径,以 https://taotoken.net/doc 为准。公榜上的价格是参考值,实际结算以你账户里的用量记录为准,两者可能有差异,做预算时留出余量。
5. 可验证结果与失败分支
5.1 你应该看到什么
脚本跑通后,终端会打印一段 JSON,包含每个模型的输出文本、耗时、prompt_tokens、completion_tokens。把 token 用量代入成本公式,得到每千次调用成本。填进对照表,散点图成型。
验证方式很简单:把同一个 prompt 再跑一次,token 用量应该在同一量级(可能有小幅波动),耗时也应该接近。如果两次差异巨大,说明有别的因素在干扰,比如网络抖动或模型侧排队。
5.2 常见失败分支
401 未授权:Key 没读到,或者环境变量名写错。先echo $TAOTOKEN_API_KEY确认非空。
404 模型不存在:model字段拼错,或者该模型名不在当前可用列表里。对照 https://taotoken.net/doc 的模型列表核对。
返回内容为空但 usage 有值:可能是触发了内容过滤或参数不兼容,检查temperature、max_tokens等参数是否在该模型支持范围内。
成本算出来明显偏低:大概率是只算了输出 token 没算输入 token,或者价格单位没统一。回头检查公式里的两个价格是否都代入了。
耗时波动大:单次测量不可靠,建议每个模型跑 5 次取中位数,再填进对照表。
5.3 把结果固定下来
散点图和对照表的价值在于可复现。建议把 prompt、模型名、当日快照日期、token 用量、耗时一起存成一个 JSON 或 CSV,下次公榜更新时重跑一遍,就能看出模型在「智能-价格」平面上的移动轨迹。这比记住某个具体名次有用得多。
6. 限制、成本与模型选择
公榜数据有滞后性。Artificial Analysis 的快照更新频率、采样方式、以及指数本身的构成,都会影响你看到的数字。本文不写具体名次和指数数值,就是因为这些数字会变,写死了反而误导。你打开页面当天的快照,才是你该用的数据。
价格区间要看清口径。有些模型区分输入输出、有些区分缓存命中与否、有些有阶梯定价。做成本线时,用你业务的实际输入输出比例去加权,而不是用页面上最显眼的那个数字。
模型选择上,GLM 5.3 Flash 这类「Flash」定位的模型,通常是在智能和成本之间取一个平衡点。它适不适合当你的默认模型,取决于你的任务对智能的敏感度:如果任务本身简单、容错高,低成本就是优势;如果任务需要复杂推理,省下来的钱可能被返工成本吃掉。散点图的作用就是把这个权衡可视化,而不是替你拍板。
最后一点实操建议:把 TaoToken 设成默认供应商之后,你的对比脚本可以长期留着。每次有新模型上线,往MODELS列表里加一个名字,重跑一遍,散点图上就多一个点。日积月累,你手里就有了一张属于自己的「智能-成本」地图,比任何单次评测都更贴近你的真实业务。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度