From 1482fef8e1a17e9e4ab0239ec4b3095a23d08606 Mon Sep 17 00:00:00 2001 From: redshift <213178690+1ftredsh@users.noreply.github.com> Date: Sat, 2 Aug 2025 21:55:18 -0300 Subject: [PATCH] Fixed rounding problem as msats were rounding down instead of rounding up. --- router/payment/cost_caculation.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/router/payment/cost_caculation.py b/router/payment/cost_caculation.py index fb664e9c..6eedaf5c 100644 --- a/router/payment/cost_caculation.py +++ b/router/payment/cost_caculation.py @@ -1,3 +1,4 @@ +import math import os from pydantic import BaseModel @@ -145,9 +146,9 @@ def calculate_cost( input_tokens = response_data.get("usage", {}).get("prompt_tokens", 0) output_tokens = response_data.get("usage", {}).get("completion_tokens", 0) - input_msats = int(round(input_tokens / 1000 * MSATS_PER_1K_INPUT_TOKENS, 0)) - output_msats = int(round(output_tokens / 1000 * MSATS_PER_1K_OUTPUT_TOKENS, 0)) - token_based_cost = int(round(input_msats + output_msats, 0)) + input_msats = round(input_tokens / 1000 * MSATS_PER_1K_INPUT_TOKENS, 3) + output_msats = round(output_tokens / 1000 * MSATS_PER_1K_OUTPUT_TOKENS, 3) + token_based_cost = math.ceil(input_msats + output_msats) logger.info( "Calculated token-based cost", @@ -163,7 +164,7 @@ def calculate_cost( return CostData( base_msats=0, - input_msats=input_msats, - output_msats=output_msats, + input_msats=int(input_msats), + output_msats=int(output_msats), total_msats=token_based_cost, )