我用 LobeChat + HodlAI 测试了我的几个 Agent ,感觉到用量明显不对;加上站长说了用的方案是「 new api + openrouter 」我就测试了下到底是什么导致的,然后发现 openrouter 相当草台班子啊

1) 对于 Claude 模型不返回 usage 信息

我第一个观察到的点是 LobeChat 右下角之前一直都有的统计信息没了;然后我自己请求了下 openrouter 的 API 发现对于 Claude 模型,用 /chat/completions 接口根本没有 usage 信息返回

2) 用 Claude Messages 接口返回的 usage 信息格式不对

那我试试 Claude 模型 + /messages 接口呢🤔 惊喜,usage 信息来了!

但为啥 LobeChat 还是不能正常展示呢…… 结果我一看,"cache_creation_input_tokens":null 是个什么鬼,官方是 0 啊!

题外话,这种问题 LobeChat 确实可以兼容下;但官方 API Reference 里明确写了这个类型是 number + 它在不存在时自己返回的是 0 ,openrouter 返回个 null 也确实不太合适

3) 大善人还是 bug

cache_creation_input_tokens 的语义其实是「本次创建缓存用了多少 token 」,Claude 会把这类 token 多收 25% 的费用

那它是 null…… 究竟缓存了吗?收了缓存钱了吗?

答案其实是…… 缓存了但并没收钱🤔 OpenRouter 把这笔费用自己承担了

4) 所以为啥感觉贵呢

首先,即使它缓存了,但后面的请求不一定用缓存 —— OpenRouter 的 Claude 上游是 4 个随机的(我感觉完全没有「请求亲和性」的设计),所以理论上只有 25% 的概率会利用到缓存

不过真正的问题是…… 还记得 bug 1 吗?在 HodlAI 中,newapi 并没有拿到 openrouter 的正确的用量信息,所以 newapi 只能自己计算 token 按照无缓存计费,那么综合考虑 Agent 的上下文叠加 + 缓存有 90% off ,所以感觉贵就有情可原了

题外话,那用 claude messages 格式接入 newapi 是不是就能正确计费了?答案是…… 并不能…… newapi 也未能正确解析 openrouter 返回的 usage —— 而 claude 官方的就没有任何问题 —— 二者只差了个 null 所以估计还是那个 null 引起的

5) 还有啥其它的吗

OpenRouter 的 Activity 页面就没有人用吗?简直就是个 bug 集合体!

日志出现有十分钟以上的延迟,基于时间的筛选完全不能正常工作,打开的详情页面那个 json 完全靠猜才能知道含义

标签: Claude, New Api, OpenRouter, HodlAI, LobeChat

添加新评论