Modify cost formatting in usage_report to show at least 2 decimal places, with 2 non-zero digits.

This commit is contained in:
Paul Gauthier (aider) 2024-07-29 08:24:24 -03:00
parent effa5236c6
commit d62baf0520

View file

@ -11,6 +11,7 @@ import threading
import time import time
import traceback import traceback
from collections import defaultdict from collections import defaultdict
import math
from datetime import datetime from datetime import datetime
from json.decoder import JSONDecodeError from json.decoder import JSONDecodeError
from pathlib import Path from pathlib import Path
@ -1263,7 +1264,17 @@ class Coder:
if self.main_model.info.get("output_cost_per_token"): if self.main_model.info.get("output_cost_per_token"):
cost += completion_tokens * self.main_model.info.get("output_cost_per_token") cost += completion_tokens * self.main_model.info.get("output_cost_per_token")
self.total_cost += cost self.total_cost += cost
self.usage_report += f" Cost: ${cost:.6f} request, ${self.total_cost:.6f} session."
def format_cost(value):
if value == 0:
return "0.00"
magnitude = abs(value)
if magnitude >= 0.01:
return f"{value:.2f}"
else:
return f"{value:.{max(2, 2 - int(math.log10(magnitude)))}f}"
self.usage_report += f" Cost: ${format_cost(cost)} request, ${format_cost(self.total_cost)} session."
def get_multi_response_content(self, final=False): def get_multi_response_content(self, final=False):
cur = self.multi_response_content cur = self.multi_response_content