用量统计¶
只读页面,回答这几件事:模型一天用掉多少 token、花了多少钱、平均每条回复花多少;
这些 token 花在哪个任务、哪个模型、哪个会话,是主程序自己用的还是哪个插件用的;
各模型响应多快、稳不稳;哪家服务商根本不返回用量。侧栏在「观察」组、「会话观察」
下面,地址 /usage。
同一份统计还有两个出口,数字口径完全相同:每 15 分钟重写一次的报告文件,以及控制台 的用量汇总框,见本页后两节。
先填单价再看费用¶
费用 = 每次调用的用量 × 调用发生那一刻生效的单价,在调用结束时算好累加进统计; 之后改单价不会回头重算已经记下的费用。因此:
- 没填单价(
price_in、price_out都是 0)的模型,费用一直是 0; - 填单价之前产生的调用,费用永远是 0,填了之后的新调用才开始计费;
- 单价、缓存命中价与分时段价格的写法见 models.toml, 也可以在 模型与厂商 的模型编辑框里填。
这段时间用到的模型里有单价为 0 的,总览的费用格会写明「N 个模型没填单价」,点它进模型页 填写;所有模型都没填单价时,费用格显示「未计价」而不是「¥0」,避免误以为免费。部分模型 有单价时,按模型分组的表里没填单价的行,费用一栏显示「未计价」。
时间范围¶
顶部切换:本小时、今天、近 7 天、近 30 天、全部。「今天」「近 7 天」「近 30 天」按 浏览器所在时区的本地日计,含今天。统计按小时汇总存储,整点按 UTC 对齐;半小时时区 (如 UTC+5:30)的日界落在两个小时桶中间,按天统计会差 30 分钟。
总览¶
四格,token 数缩写成 K(千)、M(百万),悬停看精确值:
- token:输入加输出,下面分开写输入与输出;悬停看缓存命中与思考各多少(输入含缓存 命中部分,输出含思考部分)。
- 费用:单位元,按上面「先填单价再看费用」的口径;有费用时下面写平均每条回复的费用。
- 调用:每个实际发出请求的候选算一次,下面写失败次数(有失败时)与平均耗时;悬停看 成功、失败、中断各多少。候选切换时每个候选各算一次;同族跳过规则跳过、没有发请求的 候选不算。
- 回复:这段时间里她发出的消息条数,下面写平均每条回复用掉多少 token;悬停看平均每条 回复调用几次模型。只数用量统计开始记账之后的回复,更早的回复没有对应的用量,算进来会 把平均值摊薄。
结局三种:正常结束、失败(以错误结束,含首字超时、格式不合格)、中断(用户打断,或 调用方拿到够用的内容后提前关流)。结构化校验失败的候选已经把整段输出生成完,服务商 照样计费,它的用量照记、结局记为失败。
服务商没返回用量¶
有的服务商、网关或旧接口不返回用量。统计不估算:这些调用计入「未返回用量」, token 与费用都按 0 记。页面在总览下方单独提示「有 N 次成功调用服务商没返回用量」, 并列出是哪个模型、哪家服务商;没有这种调用时不显示。同一进程里某个模型第一次出现这种情况时,控制台还会 打一条警告。
对话请求一律带上 stream_options.include_usage = true,这是 OpenAI 兼容协议要求服务商
在流末尾返回用量的声明;某个服务商因此报错时,在该模型的 extra_body 里写
stream_options = { include_usage = false } 覆盖它,这样那家的用量就记为未返回。
语音合成不按 token 计量,只计次数与耗时,不算「未返回用量」。
趋势¶
一张柱状图,窗口跟着时间范围走:本小时与今天画当天 24 个小时,近 7 天与近 30 天按天画, 「全部」画近 30 天。柱子悬停显示时刻与 token(有费用时连同费用)。这段时间产生过费用时, 标题栏右侧可以把柱高切换成费用。
分组¶
四种口径切换,默认按任务。每行一根占比条:这段时间产生过费用时按费用算,否则按 token 算,行按同一口径从高到低排。其余各列是 token、调用次数与平均耗时;费用列只在产生过费用 时出现,失败率列只在有失败时出现,失败率达到 10% 的用警示色。悬停 token 看输入、输出、 缓存命中与思考,悬停调用次数看成功、失败、中断,悬停平均耗时看波动(标准差)。
- 按来源:主程序,或某个插件(注明内置还是第三方)。插件代码里发起的调用都记在 插件名下,包括插件请主程序代办的识图、看视频,以及插件派生出去的后台任务。插件 等待的是主程序早先已经发起的同一个请求时(例如同一张图已经在识别中),这次调用记 在主程序名下:谁真正发起请求就算谁的,避免同一次请求被记两遍。
- 按任务:日常对话、行动决策、回复生成、记忆抽取等,中文名与模型页一致;悬停名称 看任务键名。
- 按模型:模型名与厂商。
- 按会话:群名或私聊对象名;日程、摘要、记忆抽取这类不属于任何会话的调用显示为 「后台任务」。
报告文件¶
data/reports/usage.html,随主程序启动生成一次,之后每 15 分钟重写一次。五个时间
范围都在这一个文件里,用页内的按钮切换;单文件自带样式与图表,不引用任何外部资源,
断网也能用浏览器打开,深色与浅色系统主题下都可读。服务器部署时面板只能走隧道访问,
把这个文件拷下来就能看统计。写入时先写临时文件再替换,打开时不会读到写了一半的内容。
文件里有群名与私聊对象名。它只保存在本机,不会上传;转发给别人之前留意这一点。
控制台汇总¶
与报告文件同一个定时任务:每 15 分钟检查一次,距上次打印有新的模型调用时,在控制台 打印一个「模型用量」框,内容是本小时与今天两栏的总览,加今天按来源、按模型费用最高 的前三名。期间没有新调用就不打印。
单次调用的用量在控制台的模型调用框里也能看到,形如「用量:输入 1,234 · 输出 56」, 服务商没返回时不显示这一行。
不上传¶
用量统计只存在本机数据库里,永久保留。匿名统计上报不包含任何用量、模型或会话 信息,见匿名统计的上报口径。