openrouter 有点 buggy 啊
我用 LobeChat + HodlAI 测试了我的几个 Agent ,感觉到用量明显不对;加上站长说了用的方案是「 new api + openrouter 」我就测试了下到底是什么导致的,然后发现 openrouter 相当草台班子啊
- 对于 Claude 模型不返回 usage 信息
我第一个观察到的点是 LobeChat 右下角之前一直都有的统计信息没了;然后我自己请求了下 openrouter 的 API 发现对于 Claude 模型,用 /chat/completions 接口根本没有 usage 信息返回
- 用 Claude Messages 接口返回的 usage 信息格式不对
那我试试 Claude 模型 + /messages 接口呢🤔 惊喜,usage 信息来了!
但为啥 LobeChat 还是不能正常展示呢…… 结果我一看,"cache_creation_input_tokens":null 是个什么鬼,官方是 0 啊!
题外话,这种问题 LobeChat 确实可以兼容下;但官方 API Reference 里明确写了这个类型是 number + 它在不存在时自己返回的是 0 ,openrouter 返回个
null也确实不太合适
- 大善人还是 bug
cache_creation_input_tokens 的语义其实是「本次创建缓存用了多少 token 」,Claude 会把这类 token 多收 25% 的费用
那它是 null…… 究竟缓存了吗?收了缓存钱了吗?
答案其实是…… 缓存了但并没收钱🤔 OpenRouter 把这笔费用自己承担了
- 所以为啥感觉贵呢
首先,即使它缓存了,但后面的请求不一定用缓存 —— OpenRouter 的 Claude 上游是 4 个随机的(我感觉完全没有「请求亲和性」的设计),所以理论上只有 25% 的概率会利用到缓存
不过真正的问题是…… 还记得 bug 1 吗?在 HodlAI 中,newapi 并没有拿到 openrouter 的正确的用量信息,所以 newapi 只能自己计算 token 按照无缓存计费,那么综合考虑 Agent 的上下文叠加 + 缓存有 90% off ,所以感觉贵就有情可原了
题外话,那用 claude messages 格式接入 newapi 是不是就能正确计费了?答案是…… 并不能…… newapi 也未能正确解析 openrouter 返回的 usage —— 而 claude 官方的就没有任何问题 —— 二者只差了个 null 所以估计还是那个 null 引起的
- 还有啥其它的吗
OpenRouter 的 Activity 页面就没有人用吗?简直就是个 bug 集合体!
日志出现有十分钟以上的延迟,基于时间的筛选完全不能正常工作,打开的详情页面那个 json 完全靠猜才能知道含义
我们会把模型慢慢地尽量都转向官方直连渠道