@@ -472,8 +472,7 @@ def stream_responses_chunks(
472472 raw_output = raw_outputs ,
473473 id = inference_id ,
474474 metadata = {
475- "timeToFirstToken" : ((first_token_time - start_time ) * 1000 if first_token_time else None ),
476- "api_type" : "responses" ,
475+ "timeToFirstToken" : ((first_token_time - start_time ) * 1000 if first_token_time else None )
477476 },
478477 )
479478 add_to_trace (
@@ -534,7 +533,6 @@ def handle_responses_non_streaming_create(
534533 model_parameters = get_responses_model_parameters (kwargs ),
535534 raw_output = response .model_dump () if hasattr (response , "model_dump" ) else str (response ),
536535 id = inference_id ,
537- metadata = {"api_type" : "responses" },
538536 )
539537
540538 add_to_trace (
@@ -604,33 +602,46 @@ def extract_responses_chunk_data(chunk: Any) -> Dict[str, Any]:
604602def extract_responses_inputs (kwargs : Dict [str , Any ]) -> Dict [str , Any ]:
605603 """Extract inputs from Responses API parameters.
606604
605+ Formats the input as a messages array similar to Chat Completions API format:
606+ {"prompt": [{"role": "user", "content": "..."}]}
607+
607608 Args:
608609 kwargs: The parameters passed to the Responses API
609610
610611 Returns:
611- Dictionary with prompt/input data
612+ Dictionary with prompt as a messages array
612613 """
613- inputs = {}
614+ messages = []
614615
615616 # Handle different input formats for Responses API
616- if "input " in kwargs :
617- inputs [ "prompt" ] = kwargs [ "input" ]
618- elif " conversation" in kwargs :
619- inputs [ "prompt" ] = kwargs [ " conversation" ]
620- elif "instructions" in kwargs :
621- inputs [ "prompt" ] = kwargs [ "instructions" ]
622- elif "prompt" in kwargs :
623- inputs [ "prompt" ] = kwargs [ "prompt" ]
617+ if "conversation " in kwargs :
618+ # Conversation is already in messages format
619+ conversation = kwargs [ "conversation" ]
620+ if isinstance ( conversation , list ):
621+ messages = conversation
622+ else :
623+ # Single message, wrap it
624+ messages = [{ "role" : "user" , "content" : str ( conversation )} ]
624625 else :
625- # Fallback: try to construct from available parameters
626- prompt_parts = []
626+ # Build messages array from available parameters
627627 if "instructions" in kwargs :
628- prompt_parts .append (f"Instructions: { kwargs ['instructions' ]} " )
628+ messages .append ({"role" : "system" , "content" : kwargs ["instructions" ]})
629+
629630 if "input" in kwargs :
630- prompt_parts .append (f"Input: { kwargs ['input' ]} " )
631- inputs ["prompt" ] = " | " .join (prompt_parts ) if prompt_parts else "No input provided"
631+ messages .append ({"role" : "user" , "content" : kwargs ["input" ]})
632+ elif "prompt" in kwargs :
633+ messages .append ({"role" : "user" , "content" : kwargs ["prompt" ]})
634+
635+ # If no user message was added, create a fallback
636+ if not any (msg .get ("role" ) == "user" for msg in messages ):
637+ if messages :
638+ # Only system message, add empty user message
639+ messages .append ({"role" : "user" , "content" : "" })
640+ else :
641+ # No messages at all, add placeholder
642+ messages .append ({"role" : "user" , "content" : "No input provided" })
632643
633- return inputs
644+ return { "prompt" : messages }
634645
635646
636647def parse_responses_output_data (response : Any ) -> Union [str , Dict [str , Any ], None ]:
@@ -815,7 +826,7 @@ def trace_openai_assistant_thread_run(client: "openai.OpenAI", run: "openai.type
815826
816827 # pylint: disable=broad-except
817828 except Exception as e :
818- print ( f "Failed to monitor run. { e } " ) # noqa: T201
829+ logger . error ( "Failed to monitor run. %s" , e )
819830
820831
821832def _type_check_run (run : "openai.types.beta.threads.run.Run" ) -> None :
0 commit comments