diff --git a/litellm/responses/litellm_completion_transformation/handler.py b/litellm/responses/litellm_completion_transformation/handler.py index 3580fe5e44..d3e2172fcc 100644 --- a/litellm/responses/litellm_completion_transformation/handler.py +++ b/litellm/responses/litellm_completion_transformation/handler.py @@ -5,6 +5,7 @@ Handler for transforming responses api requests to litellm.completion requests from typing import Any, Coroutine, Optional, Union import litellm +from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLoggingObj from litellm.responses.litellm_completion_transformation.streaming_iterator import ( LiteLLMCompletionStreamingIterator, ) diff --git a/litellm/responses/litellm_completion_transformation/transformation.py b/litellm/responses/litellm_completion_transformation/transformation.py index b1e52eb8f3..c00d6622bf 100644 --- a/litellm/responses/litellm_completion_transformation/transformation.py +++ b/litellm/responses/litellm_completion_transformation/transformation.py @@ -7,6 +7,7 @@ from typing import Any, Dict, List, Optional, Union from openai.types.responses.tool_param import FunctionToolParam from litellm.caching import InMemoryCache +from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLoggingObj from litellm.responses.litellm_completion_transformation.session_handler import ( ResponsesAPISessionElement, SessionHandler, @@ -88,6 +89,18 @@ class LiteLLMCompletionResponsesConfig: "custom_llm_provider": custom_llm_provider, } + # Responses API `Completed` events require usage, we pass `stream_options` to litellm.completion to include usage + if stream is True: + stream_options = { + "include_usage": True, + } + litellm_completion_request["stream_options"] = stream_options + litellm_logging_obj: Optional[LiteLLMLoggingObj] = kwargs.get( + "litellm_logging_obj" + ) + if litellm_logging_obj: + litellm_logging_obj.stream_options = stream_options + # only pass non-None values litellm_completion_request = { k: v for k, v in litellm_completion_request.items() if v is not None