mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-15 23:31:29 +00:00
Merge 31f270cd6c into 49affa7c01
This commit is contained in:
commit
6a7bda0aa0
2 changed files with 44 additions and 15 deletions
|
|
@ -3698,21 +3698,6 @@ class Logging(LiteLLMLoggingBaseClass):
|
|||
result,
|
||||
(ResponseCompletedEvent, ResponseIncompleteEvent, ResponseFailedEvent),
|
||||
):
|
||||
## return unified Usage object
|
||||
if isinstance(result.response.usage, ResponseAPIUsage):
|
||||
transformed_usage: Final = ResponseAPILoggingUtils._transform_response_api_usage_to_chat_usage(
|
||||
result.response.usage
|
||||
)
|
||||
# Set as dict instead of Usage object so model_dump() serializes it correctly
|
||||
setattr(
|
||||
result.response,
|
||||
"usage",
|
||||
(
|
||||
transformed_usage.model_dump()
|
||||
if hasattr(transformed_usage, "model_dump")
|
||||
else dict(transformed_usage)
|
||||
),
|
||||
)
|
||||
return result.response
|
||||
elif isinstance(result, InteractionsAPIStreamingResponse):
|
||||
return self._assemble_completed_interaction_response(result)
|
||||
|
|
|
|||
|
|
@ -3004,6 +3004,50 @@ def test_get_assembled_streaming_response_returns_result_for_streaming():
|
|||
assert assembled is result
|
||||
|
||||
|
||||
def test_get_assembled_streaming_response_preserves_responses_usage():
|
||||
import datetime
|
||||
|
||||
from litellm.litellm_core_utils.litellm_logging import StandardLoggingPayloadSetup
|
||||
from litellm.types.llms.openai import (
|
||||
ResponseAPIUsage,
|
||||
ResponseCompletedEvent,
|
||||
ResponsesAPIResponse,
|
||||
ResponsesAPIStreamEvents,
|
||||
)
|
||||
|
||||
logging_obj = _make_logging_obj(stream=True)
|
||||
response = ResponsesAPIResponse(
|
||||
id="resp-1",
|
||||
created_at=1700000000,
|
||||
output=[],
|
||||
usage=ResponseAPIUsage(
|
||||
input_tokens=4,
|
||||
output_tokens=5,
|
||||
total_tokens=9,
|
||||
),
|
||||
)
|
||||
event = ResponseCompletedEvent(
|
||||
type=ResponsesAPIStreamEvents.RESPONSE_COMPLETED,
|
||||
response=response,
|
||||
)
|
||||
|
||||
assembled = logging_obj._get_assembled_streaming_response(
|
||||
result=event,
|
||||
start_time=datetime.datetime.now(),
|
||||
end_time=datetime.datetime.now(),
|
||||
is_async=True,
|
||||
streaming_chunks=[],
|
||||
)
|
||||
|
||||
assert isinstance(assembled, ResponsesAPIResponse)
|
||||
assembled.model_dump(warnings="error")
|
||||
assert isinstance(assembled.usage, ResponseAPIUsage)
|
||||
logging_usage = StandardLoggingPayloadSetup.get_usage_from_response_obj(assembled.model_dump())
|
||||
assert logging_usage.prompt_tokens == 4
|
||||
assert logging_usage.completion_tokens == 5
|
||||
assert logging_usage.total_tokens == 9
|
||||
|
||||
|
||||
def test_streaming_success_handler_includes_vertex_ai_metadata_in_standard_logging():
|
||||
"""Assembled streaming responses should include Vertex AI metadata in logging payload."""
|
||||
import datetime
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue