test(logging): cover object-response path in streaming responses assembly

This commit is contained in:
Devin AI 2026-07-08 15:50:06 +00:00
parent d617862c9c
commit c2b47e2f31

View file

@ -3747,3 +3747,46 @@ def test_get_assembled_streaming_response_handles_dict_response(logging_obj):
assert assembled["usage"]["prompt_tokens"] == 11
assert assembled["usage"]["completion_tokens"] == 7
assert assembled["usage"]["total_tokens"] == 18
def test_get_assembled_streaming_response_handles_object_response(logging_obj):
"""
Companion to the dict-response regression: when ResponseCompletedEvent.response
is a proper ResponsesAPIResponse object carrying a ResponseAPIUsage, the
assembly helper must still transform usage into chat-completion shape.
"""
from datetime import datetime
from litellm.types.llms.openai import (
ResponseAPIUsage,
ResponseCompletedEvent,
ResponsesAPIResponse,
ResponsesAPIStreamEvents,
)
response = ResponsesAPIResponse(
id="resp_obj",
created_at=0,
output=[],
usage=ResponseAPIUsage(input_tokens=3, output_tokens=4, total_tokens=7),
)
event = ResponseCompletedEvent(
type=ResponsesAPIStreamEvents.RESPONSE_COMPLETED,
response=response,
)
assert isinstance(event.response, ResponsesAPIResponse)
assembled = logging_obj._get_assembled_streaming_response(
result=event,
start_time=datetime.now(),
end_time=datetime.now(),
is_async=True,
streaming_chunks=[],
)
assert isinstance(assembled, ResponsesAPIResponse)
usage = assembled.usage
usage_dict = usage if isinstance(usage, dict) else usage.model_dump()
assert usage_dict["prompt_tokens"] == 3
assert usage_dict["completion_tokens"] == 4
assert usage_dict["total_tokens"] == 7