mizchi/llm adapter for mooncassette: drive mizchi/llm conversations from recorded cassettes, and replace its estimated token counts with the exact usage the provider reported.
| 做法 | 问题 |
|---|---|
| 打真实接口 | 慢、要密钥、结果会漂,CI 里跑不了 |
| MockProvider 手搓事件 | 快,但搓出来的序列是不是真的长这样,没人验证过 |
mizchi/llm 估算输入:3
provider 上报输入:31
差额:28(估算偏低)moon add weopqrst/mooncassette-llm// 线上:@llm.collect(openai_provider, messages)
// 测试:换成磁带回放
let session = @recorder.Session::new(cassette, mode=@recorder.Mode::Playback)
let provider = @adapter.CassetteProvider::new(session, "gpt-4o-mini")
let result = @llm.collect(provider, messages)
println(result.text) // 录下来的原文
println(result.usage) // 录下来的真实用量let request = @adapter.request_of_messages("openai", "gpt-4o-mini", messages)
match @adapter.reported_usage(cassette, request) {
Some(usage) => println("这一轮花了 " + usage.input_tokens.to_string() + " 个输入 token")
None => println("没录过这一轮") // 不猜,交回 None
}provider.token_drift() // Some((估算, 上报))Install
Download zipmizchi/llm adapter for mooncassette: drive mizchi/llm conversations from recorded cassettes, and replace its estimated token counts with the exact usage the provider reported.