@@ -521,6 +521,8 @@ async def _fetch_response(
521
521
reasoning_effort = model_settings .reasoning .effort if model_settings .reasoning else None
522
522
store = _Converter .get_store_param (self ._get_client (), model_settings )
523
523
524
+ stream_options = _Converter .get_stream_options_param (self ._get_client (), model_settings )
525
+
524
526
ret = await self ._get_client ().chat .completions .create (
525
527
model = self .model ,
526
528
messages = converted_messages ,
@@ -534,7 +536,7 @@ async def _fetch_response(
534
536
response_format = response_format ,
535
537
parallel_tool_calls = parallel_tool_calls ,
536
538
stream = stream ,
537
- stream_options = { "include_usage" : True } if stream else NOT_GIVEN ,
539
+ stream_options = self . _non_null_or_not_given ( stream_options ) ,
538
540
store = self ._non_null_or_not_given (store ),
539
541
reasoning_effort = self ._non_null_or_not_given (reasoning_effort ),
540
542
extra_headers = _HEADERS ,
@@ -574,6 +576,14 @@ def get_store_param(cls, client: AsyncOpenAI, model_settings: ModelSettings) ->
574
576
default_store = True if str (client .base_url ).startswith ("https://api.openai.com" ) else None
575
577
return model_settings .store if model_settings .store is not None else default_store
576
578
579
+ @classmethod
580
+ def get_stream_options_param (cls , client : AsyncOpenAI , model_settings : ModelSettings ) -> dict | None :
581
+ default_include_usage = True if str (client .base_url ).startswith ("https://api.openai.com" ) else None
582
+ include_usage = model_settings .include_usage if model_settings .include_usage is not None \
583
+ else default_include_usage
584
+ stream_options = {"include_usage" : include_usage } if include_usage is not None else NOT_GIVEN
585
+ return stream_options
586
+
577
587
@classmethod
578
588
def convert_tool_choice (
579
589
cls , tool_choice : Literal ["auto" , "required" , "none" ] | str | None
0 commit comments