diff --git a/litellm/cost_calculator.py b/litellm/cost_calculator.py index 9b4dd80265c..041b4873d87 100644 --- a/litellm/cost_calculator.py +++ b/litellm/cost_calculator.py @@ -2226,18 +2226,20 @@ class BaseTokenUsageProcessor: CompletionTokensDetailsWrapper() ) - # Check what keys exist in the model's completion_tokens_details - # Access model_fields on the class, not the instance, to avoid Pydantic 2.11+ deprecation warnings for attr in type(usage.completion_tokens_details).model_fields: if not attr.startswith("_") and not callable( getattr(usage.completion_tokens_details, attr) ): - current_val = getattr( - combined.completion_tokens_details, attr, 0 + current_val = ( + getattr(combined.completion_tokens_details, attr, 0) + or 0 ) - new_val = getattr(usage.completion_tokens_details, attr, 0) - - if new_val is not None and current_val is not None: + new_val = ( + getattr(usage.completion_tokens_details, attr, 0) or 0 + ) + if new_val is not None and isinstance( + new_val, (int, float) + ): setattr( combined.completion_tokens_details, attr,