@@ -391,7 +391,7 @@ def _get_langfuse_data_from_kwargs(resource: OpenAiDefinition, kwargs: Any) -> A
391391
392392 if resource .type == "completion" :
393393 prompt = kwargs .get ("prompt" , None )
394- elif resource .object == "Responses" :
394+ elif resource .object == "Responses" or resource . object == "AsyncResponses" :
395395 prompt = kwargs .get ("input" , None )
396396 elif resource .type == "chat" :
397397 prompt = _extract_chat_prompt (kwargs )
@@ -408,6 +408,12 @@ def _get_langfuse_data_from_kwargs(resource: OpenAiDefinition, kwargs: Any) -> A
408408 else float ("inf" )
409409 )
410410
411+ parsed_max_completion_tokens = (
412+ kwargs .get ("max_completion_tokens" , None )
413+ if not isinstance (kwargs .get ("max_completion_tokens" , float ("inf" )), NotGiven )
414+ else None
415+ )
416+
411417 parsed_top_p = (
412418 kwargs .get ("top_p" , 1 )
413419 if not isinstance (kwargs .get ("top_p" , 1 ), NotGiven )
@@ -441,6 +447,11 @@ def _get_langfuse_data_from_kwargs(resource: OpenAiDefinition, kwargs: Any) -> A
441447 "frequency_penalty" : parsed_frequency_penalty ,
442448 "presence_penalty" : parsed_presence_penalty ,
443449 }
450+
451+ if parsed_max_completion_tokens is not None :
452+ modelParameters .pop ("max_tokens" , None )
453+ modelParameters ["max_completion_tokens" ] = parsed_max_completion_tokens
454+
444455 if parsed_n is not None and parsed_n > 1 :
445456 modelParameters ["n" ] = parsed_n
446457
@@ -672,7 +683,7 @@ def _get_langfuse_data_from_default_response(
672683
673684 completion = choice .text if _is_openai_v1 () else choice .get ("text" , None )
674685
675- elif resource .object == "Responses" :
686+ elif resource .object == "Responses" or resource . object == "AsyncResponses" :
676687 output = response .get ("output" , {})
677688
678689 if not isinstance (output , list ):
@@ -922,6 +933,7 @@ def _finalize(self) -> None:
922933 model , completion , usage , metadata = (
923934 _extract_streamed_response_api_response (self .items )
924935 if self .resource .object == "Responses"
936+ or self .resource .object == "AsyncResponses"
925937 else _extract_streamed_openai_response (self .resource , self .items )
926938 )
927939
@@ -992,6 +1004,7 @@ async def _finalize(self) -> None:
9921004 model , completion , usage , metadata = (
9931005 _extract_streamed_response_api_response (self .items )
9941006 if self .resource .object == "Responses"
1007+ or self .resource .object == "AsyncResponses"
9951008 else _extract_streamed_openai_response (self .resource , self .items )
9961009 )
9971010
0 commit comments