结论先行
Token 是 AI 应用的"电费"——不计量,成本就会悄悄失控。很多团队上线 AI 功能后才发现账单看不懂:到底是哪条业务线、哪个模型、哪类请求在烧钱?聚合 API 的好处是:所有模型走同一个网关,usage 返回格式统一,你只需包装一次,就能给全公司装上一个"Token 电表"。
一、为什么要"计量"
- 不计量:只知道月账单总额,定位不到大头
- 计量后:能按 模型 / 业务线 / 用户 / 日期 分摊成本,异常一眼可见
每次 chat 调用,返回里都带着 usage:prompt_tokens、completion_tokens、total_tokens。这就是你的"电表读数"。
二、最小计量方案
思路:写一个包装函数,每次调用后把 usage + 元数据落库(SQLite 即可),再写个聚合查询出报表。
三、代码
1)包装调用 + 落库
import sqlite3, time
from openai import OpenAI
client = OpenAI(
base_url="https://api.tokenportal.ai/v1", # 控制台获取的网关地址
api_key="YOUR_TOKENPORTAL_KEY") # 控制台获取的 Key
con = sqlite3.connect("token_meter.db")
con.execute("""CREATE TABLE IF NOT EXISTS usage(
ts REAL, model TEXT, biz TEXT,
prompt INTEGER, completion INTEGER, total INTEGER)""")
def chat(model, messages, biz="default"):
r = client.chat.completions.create(model=model, messages=messages)
u = r.usage
con.execute("INSERT INTO usage VALUES(?,?,?,?,?,?)",
(time.time(), model, biz,
u.prompt_tokens, u.completion_tokens, u.total_tokens))
con.commit()
return r.choices[0].message.content
2)出报表(按模型汇总)
def report():
for row in con.execute(
"SELECT model, SUM(prompt), SUM(completion), SUM(total) "
"FROM usage GROUP BY model"):
print(row)
跑几天,你就能看到哪个模型吃掉了最多 Token。
四、把 Token 换算成钱
不同模型单价不同。以 TokenPortal 公开的 DeepSeek 价格(每百万 tokens)为例:
- DeepSeek V4 Flash:输入 $0.22 / 输出 $0.66 / 缓存 $0.007
- DeepSeek V4 Pro 高性价比档:输入 $0.66 / 输出 $1.98
(价格随官方调整,最终以控制台价格表为准)把单价表配进报表,就能直接算出"这条业务线昨天花了多少美元"。
五、进阶
- 异常告警:某模型单日 Token 突增 N 倍就报警
- 业务线分摊:
biz字段按接口 / 客户打标,月底分摊到部门 - 提示词瘦身:监控平均
prompt_tokens,过长就优化系统提示
把这些接上,你的 AI 成本就从"黑盒"变成"可读的账单"。
想用一个 Key 拿到统一 usage、跨模型统一计量,来我主页查看。

106

被折叠的 条评论
为什么被折叠?



