mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
fix: handle ResponseAPIUsage objects in get_usage_from_response_obj
- Fix bug where ResponseAPIUsage objects from ResponsesAPIResponse were not being transformed
- Add explicit handling for ResponseAPIUsage objects (not just dicts)
- Use _is_response_api_usage() helper to handle both ResponseAPIUsage objects and dicts
- Remove problematic 'or {}' fallback that was converting None to empty dict
This fixes the test failure where prompt_tokens was 0 instead of 8 for ResponsesAPIResponse objects.
This commit is contained in:
parent
1130b94342
commit
d5f76a4da4
1 changed files with 9 additions and 11 deletions
|
|
@ -4506,12 +4506,11 @@ class StandardLoggingPayloadSetup:
|
|||
)
|
||||
|
||||
if isinstance(response_obj, dict):
|
||||
usage = response_obj.get("usage", None) or {}
|
||||
usage = response_obj.get("usage", None)
|
||||
else:
|
||||
usage = getattr(response_obj, "usage", None) or {}
|
||||
if usage is None or (
|
||||
not isinstance(usage, dict) and not isinstance(usage, Usage)
|
||||
):
|
||||
usage = getattr(response_obj, "usage", None)
|
||||
|
||||
if usage is None:
|
||||
return Usage(
|
||||
prompt_tokens=0,
|
||||
completion_tokens=0,
|
||||
|
|
@ -4519,13 +4518,12 @@ class StandardLoggingPayloadSetup:
|
|||
)
|
||||
elif isinstance(usage, Usage):
|
||||
return usage
|
||||
elif ResponseAPILoggingUtils._is_response_api_usage(usage):
|
||||
# Handle ResponseAPIUsage (object or dict) from ResponsesAPIResponse
|
||||
return ResponseAPILoggingUtils._transform_response_api_usage_to_chat_usage(
|
||||
usage
|
||||
)
|
||||
elif isinstance(usage, dict):
|
||||
if ResponseAPILoggingUtils._is_response_api_usage(usage):
|
||||
return (
|
||||
ResponseAPILoggingUtils._transform_response_api_usage_to_chat_usage(
|
||||
usage
|
||||
)
|
||||
)
|
||||
return Usage(**usage)
|
||||
|
||||
raise ValueError(f"usage is required, got={usage} of type {type(usage)}")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue