Fix OpenRouter cost calculation with BYOK (#4543)

Currently, when you use OpenRouter with your own key for the underlying service, the costs shown by Roo Code are way off what it actually costs.

With bring your own key, OpenRouter charges 5% of what it normally would (see https://openrouter.ai/docs/use-cases/byok)
so we have to multiply the reported cost by 20 to get an estimate of what it actually costs.

Co-authored-by: Johan Otten <drakonen@drakonen.com>
Co-authored-by: Eamon Nerbonne <eamon@nerbonne.org>
This commit is contained in:
Christiaan Arnoldus 2025-06-12 05:19:24 +02:00 committed by GitHub
parent 395f55b31f
commit 11668af83d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -48,8 +48,13 @@ interface CompletionUsage {
}
total_tokens?: number
cost?: number
is_byok?: boolean
}
// with bring your own key, OpenRouter charges 5% of what it normally would: https://openrouter.ai/docs/use-cases/byok
// so we multiply the cost reported by OpenRouter to get an estimate of what the request actually cost
const BYOK_COST_MULTIPLIER = 20
export class OpenRouterHandler extends BaseProvider implements SingleCompletionHandler {
protected options: ApiHandlerOptions
private client: OpenAI
@ -164,7 +169,7 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
// and how to best support it.
// cacheReadTokens: lastUsage.prompt_tokens_details?.cached_tokens,
reasoningTokens: lastUsage.completion_tokens_details?.reasoning_tokens,
totalCost: lastUsage.cost || 0,
totalCost: (lastUsage.is_byok ? BYOK_COST_MULTIPLIER : 1) * (lastUsage.cost || 0),
}
}
}