@@ -276,13 +276,15 @@ def _kwargs_to_llm_configuration(kwargs):
276276
277277 @staticmethod
278278 def _get_output (result : Any , model : Optional [str ] = None ) -> str :
279+ PARSED_CHAT_COMPLETION_AVAILABLE = False
279280 try :
280- from openai .types .chat import ParsedChatCompletion , ParsedChatCompletionMessage
281+ from openai .types .chat import ParsedChatCompletionMessage
282+
283+ PARSED_CHAT_COMPLETION_AVAILABLE = True
281284 except ImportError :
282- ParsedChatCompletion = None
283285 ParsedChatCompletionMessage = None
284286
285- if not isinstance ( result , ( OpenAIObject , ParsedChatCompletion )) and isinstance (result , dict ):
287+ if isinstance (result , dict ):
286288 result = convert_to_openai_object (
287289 {
288290 "choices" : [
@@ -295,8 +297,8 @@ def _get_output(result: Any, model: Optional[str] = None) -> str:
295297 }
296298 )
297299 response_message = result .choices [0 ].message
298- if isinstance (response_message , ParsedChatCompletionMessage ):
299- completion = response_message .parsed . model_dump_json ( ) if response_message .parsed else ""
300+ if PARSED_CHAT_COMPLETION_AVAILABLE and isinstance (response_message , ParsedChatCompletionMessage ):
301+ completion = json_dumps ( response_message .parsed ) if response_message .parsed else ""
300302 elif not response_message .get ("content" , None ) if is_old_openai else not response_message .content :
301303 completion = OpenAIWrapper ._format_function_call (response_message )
302304 else :
0 commit comments