@ agentpos/ 计量
一个 usage_events 每个模型调用一行: 代号,如提供商所报告, 时间,模型,
美元微观单位的整数成本和 traceId 运行。 价格是配置,不是代码.
为什么它存在: AgentPOS 销售辅助设置和托管的购买代理,直到这个包 后面也没有号码 一个模型的呼叫,没有人衡量 是一个代价,没有人可以解释 等会.
import {
MemoryUsageEventsRepo,
measured,
loadPriceTable,
usageEventsToCsv,
} from "@agentpos/measure";
const repo = new MemoryUsageEventsRepo(); // SqliteUsageEventsRepo(path) in production
const ctx = { repo, prices: loadPriceTable() };
const { value } = await measured(
ctx,
{
traceId: "scan-7f3",
stage: "extract",
provider: "anthropic",
modelId: "claude-opus-5",
simulated: false,
},
async () => {
const result = await callTheModel();
return { value: result, usage: { inputTokens: 1_200, outputTokens: 340 } };
},
);
console.log(usageEventsToCsv(repo.list()));
在此寄存器中,您通常想要的包装是 measuredLlm 从 @agentpos/core,哪个
将上述内容适用于任何 LlmProvider。 。 。 .
它的保证
- 一个失败的呼叫也是一行.
measured写入outcome: "error"错误的代码和 重新删除未更改的错误 。 失败的尝试是真正的花费. - 入入灭相. 价格在装货时一次折算为每百万令牌美元微分; 之后的每一个成本都是整数算术, 整数为整数的一半。 没有 浮起触取出钱来.
- 未知的模型是可见的,而不是免费的. 价格表中缺少的模型 成本为 0
costKnown: false,所以它显示为未知 而不是隐藏为0. simulated是写着的,从不推断. 一行从记录固定说.- 一个畸形的物价表响亮地失败了. 忽略
MODEL_PRICES_JSON将公布数字 价格不对,所以价值差MEASURE_INVALID_PRICE_TABLE换句话说.
价格
MODEL_PRICES_JSON 内置 JSON 或 JSON 文件路径, 单位为每百万个令牌美元 :
{ "claude-opus-5": { "inputPerMillionUsd": 5, "outputPerMillionUsd": 25 } }
cacheReadPerMillionUsd 财务报告和审定财务报表 cacheWritePerMillionUsd 可选和默认输入
因此,未经核实的缓存折扣绝不能使运行看起来比以前便宜.
内置默认涵盖推理买方使用的Nemotron模型,并且是 二手笔 和未经证实:对照提供者的操纵台检查,并记录出版前的日期 任何来自他们的数字.
存储
在存储适配器的后面,寄存器已经使用: MemoryUsageEventsRepo 测试,
SqliteUsageEventsRepo (单位:千美元)node:sqlite,无本地依赖性)用于跑步. 打开 SQLite
适配器应用自己的DDL,所以没有迁移步骤.
usageEventsToCsv 财务报告和审定财务报表 csvToUsageEvents 绕行桌来回,这样一个承诺的CSV就可以重建
每一个数字 READEME 或赠款报告引用.
与兄弟般的寄存器共享
同一个表格存在于 agentpos-alexa 财务报告和审定财务报表 agentpos-doorstep,并首先为
推理买方(agentpos-buyer) (中文(简体) ). 这包是四个消耗的单一执行,
所以四个报告的数字是相同的。 舞台是封闭的结合:新消费者将自己加入
UsageStage 而不是传递一个字符串.