+
    QV-j‚t  ã                   óÈ  € R t ^ RIt^ RIt^ RIHt ^ RIHt ^RIHt ^RI	H
t
 ]
! 4       '       dK   ^ RIHt ^ RIHtHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$ ^ R	I%H&t& ^ R
I'H(t(H)t)H*t* ^RIH+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3 ]'       d   ^ RI4H5t5H6t6H7t7H8t8 ]Pr                  ! ]:4      t; ! R R]&RR7      t<0 Rmt= ! R R4      t> ! R R],4      t?R R lt@R# )z~
Handler for the /v1/responses endpoint (OpenAI Responses API).

Supports streaming (SSE) and non-streaming (JSON) responses.
N)ÚAsyncGenerator)ÚTYPE_CHECKING)Úlogging)Úis_serve_available)ÚHTTPException)ÚJSONResponseÚStreamingResponse)ÚResponseÚResponseCompletedEventÚResponseContentPartAddedEventÚResponseContentPartDoneEventÚResponseCreatedEventÚResponseErrorÚResponseErrorEventÚResponseFailedEventÚ&ResponseFunctionCallArgumentsDoneEventÚResponseFunctionToolCallÚResponseInProgressEventÚResponseOutputItemAddedEventÚResponseOutputItemDoneEventÚResponseOutputMessageÚResponseOutputTextÚResponseReasoningItemÚResponseReasoningTextDeltaEventÚResponseReasoningTextDoneEventÚResponseTextDeltaEventÚResponseTextDoneEvent)ÚResponseCreateParamsStreaming)ÚInputTokensDetailsÚOutputTokensDetailsÚResponseUsage)	ÚBaseGenerateManagerÚBaseHandlerÚModalityÚReasoningTextÚ_StreamErrorÚget_reasoning_configÚget_tool_call_configÚparse_reasoningÚparse_tool_calls)ÚGenerationConfigÚPreTrainedModelÚPreTrainedTokenizerFastÚProcessorMixinc                   ó,   a € ] tR t^Nt o V 3R ltRtV tR# )Ú)TransformersResponseCreateParamsStreamingc                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   # )é   Úgeneration_configÚseed)ÚstrÚint)ÚformatÚ__classdict__s   "€Úr/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/cli/serving/response.pyÚ__annotate__Ú6TransformersResponseCreateParamsStreaming.__annotate__N   s   ø‡ ‚ ÙÑñ á
�Iò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r7   s   @r8   r/   r/   N   s   ø‡ ‡ „ r;   r/   F)Útotalc                   ó  a € ] tR t^ct o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )Ú_ResponseStreamBuilderz=Builds SSE events for one streaming Responses API generation.c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r1   Ú
request_idÚresponse_defaults)r4   Údict)r6   r7   s   "€r8   r9   Ú#_ResponseStreamBuilder.__annotate__f   s   ø€ ÷ =ñ =¡cð =¹dñ =r;   c               óÌ   € W n         R V 2V n        RV 2V n        RV 2V n        ^ V n        ^ V n        RV n        RV n        RV n        RV n	        RV n
        RV n        . V n        R# )Úresp_Úmsg_Úrs_Ú FN)Ú_response_defaultsÚresp_idÚmsg_idÚreasoning_idÚseqÚoutput_indexÚ	full_textÚfull_reasoningÚreasoning_openÚmessage_openÚreasoning_itemÚmessage_itemÚ
tool_calls)ÚselfrI   rJ   s   &$$r8   Ú__init__Ú_ResponseStreamBuilder.__init__f   sx   € Ø"3ÔØ˜z˜lÐ+ˆŒØ˜Z˜LÐ)ˆŒØ! * Ð.ˆÔØˆŒØˆÔØˆŒØ ˆÔØ#ˆÔØ!ˆÔØ<@ˆÔØ:>ˆÔØ:<ˆŽr;   c                ó    <€ V ^8„  d   QhRS[ /# ©r1   Úreturn©r4   )r6   r7   s   "€r8   r9   rL   u   s   ø€ ÷ ñ ™cñ r;   c                ód   € \         P                  ! V4      pV ;P                  ^,          un        V# )é   )r"   Úchunk_to_sserV   )r_   ÚeventÚsses   && r8   Ú_emitÚ_ResponseStreamBuilder._emitu   s$   € Ü×&Ò& uÓ-ˆØ�Š�A��Øˆ
r;   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r1   Ústatusrd   r	   re   )r6   r7   s   "€r8   r9   rL   z   s   ø€ ÷ Kñ K¡ð K°ñ Kr;   c                ó8   € \        R/ V P                  BR V/BVB # )rn   r<   )r	   rR   )r_   rn   Úextras   &&,r8   Ú	_responseÚ _ResponseStreamBuilder._responsez   s    € ÜÑJ˜$×1Ñ1ÑJ¸&ÑJÀEÑJÐJr;   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rc   ©Úlistr4   )r6   r7   s   "€r8   r9   rL   }   s   ø€ ÷ 
ñ 
¡¡S¥	ñ 
r;   c                óâ   € V P                  \        R V P                  V P                  R. R7      R7      4      V P                  \	        RV P                  V P                  R. R7      R7      4      .# )zresponse.createdÚqueued)Úoutput©ÚtypeÚsequence_numberÚresponsezresponse.in_progressÚin_progress)rk   r   rV   rq   r   ©r_   s   &r8   Ústart_responseÚ%_ResponseStreamBuilder.start_response}   sj   € à�J‰JÜ$Ø+Ø$(§H¡HØ!Ÿ^™^¨H¸R˜^Ó@ôóð �J‰JÜ'Ø/Ø$(§H¡HØ!Ÿ^™^¨MÀ"˜^ÓEôóð
ð 	
r;   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rc   rt   )r6   r7   s   "€r8   r9   rL   �   s   ø€ ÷ 
ñ 
¡¡c¥ñ 
r;   c                ó¦   € R V n         V P                  \        RV P                  V P                  \        V P                  R. . RR7      R7      4      .# )Túresponse.output_item.addedÚ	reasoningr}   ©Úidrz   ÚsummaryÚcontentrn   ©rz   r{   rW   Úitem)rZ   rk   r   rV   rW   r   rU   r~   s   &r8   Ústart_reasoningÚ&_ResponseStreamBuilder.start_reasoning�   sV   € Ø"ˆÔà�J‰JÜ,Ø5Ø$(§H¡HØ!%×!2Ñ!2Ü.Ø×,Ñ,°;ÈÐTVÐ_lôô	ó	ð
ð 	
r;   c                ó6   <€ V ^8„  d   QhRS[ RS[S[ ,          /# ©r1   Útextrd   ©r4   ru   )r6   r7   s   "€r8   r9   rL   ž   s   ø€ ÷ 
ñ 
¡Cð 
©D±­Iñ 
r;   c                ó²   € V ;P                   V,          un         V P                  \        R V P                  V P                  V P
                  ^ VR7      4      .# )zresponse.reasoning_text.delta)rz   Úitem_idr{   rW   Úcontent_indexÚdelta)rY   rk   r   rU   rV   rW   ©r_   r�   s   &&r8   Úreasoning_deltaÚ&_ResponseStreamBuilder.reasoning_deltaž   sS   € Ø×Ò˜tÕ#Õà�J‰JÜ/Ø8Ø ×-Ñ-Ø$(§H¡HØ!%×!2Ñ!2Ø"#Øôó	ð
ð 	
r;   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rc   rt   )r6   r7   s   "€r8   r9   rL   ­   s   ø€ ÷ ñ ¡$¡s¥)ñ r;   c                óª  € \        V P                  R . RRRV P                  /.RR7      V n        V P	                  \        RV P                  V P                  V P                  ^ V P                  R7      4      V P	                  \        RV P                  V P                  V P                  R	7      4      .pR
V n	        V ;P                  ^,          un        V# )r„   rz   Úreasoning_textr�   Ú	completedr…   zresponse.reasoning_text.done)rz   r’   r{   rW   r“   r�   úresponse.output_item.doner‰   F)
r   rU   rY   r\   rk   r   rV   rW   r   rZ   )r_   Úpartss   & r8   Úfinish_reasoningÚ'_ResponseStreamBuilder.finish_reasoning­   sÎ   € Ü3Ø× Ñ ØØØÐ.°¸×8KÑ8KÐLÐMØô
ˆÔð �J‰JÜ.Ø7Ø ×-Ñ-Ø$(§H¡HØ!%×!2Ñ!2Ø"#Ø×,Ñ,ôó	ð �J‰JÜ+Ø4Ø$(§H¡HØ!%×!2Ñ!2Ø×,Ñ,ô	óð
ˆð( $ˆÔØ×Ò˜QÕÕØˆr;   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rc   rt   )r6   r7   s   "€r8   r9   rL   Í   s   ø€ ÷ 
ñ 
™t¡C�yñ 
r;   c                ó8  € R V n         V P                  \        RV P                  V P                  \        V P                  RRR. R7      R7      4      V P                  \        RV P                  V P                  V P                  ^ \        RR	. R
7      R7      4      .# )Trƒ   Úmessager}   Ú	assistant)r†   rz   rn   Úrolerˆ   r‰   zresponse.content_part.addedÚoutput_textrQ   ©rz   r�   Úannotations©rz   r’   r{   rW   r“   Úpart)	r[   rk   r   rV   rW   r   rT   r   r   r~   s   &r8   Ústart_messageÚ$_ResponseStreamBuilder.start_messageÍ   s”   € Ø ˆÔà�J‰JÜ,Ø5Ø$(§H¡HØ!%×!2Ñ!2Ü.ØŸ;™;¨Y¸}ÐS^Ðhjôô	ó	ð �J‰JÜ-Ø6Ø ŸK™KØ$(§H¡HØ!%×!2Ñ!2Ø"#Ü+°ÀRÐUWÔXôó	ð
ð 	
r;   c                ó6   <€ V ^8„  d   QhRS[ RS[S[ ,          /# rŽ   r�   )r6   r7   s   "€r8   r9   rL   æ   s   ø€ ÷ 
ñ 
™sð 
¡t©C¥yñ 
r;   c                ó´   € V ;P                   V,          un         V P                  \        R V P                  V P                  V P
                  ^ V. R7      4      .# )zresponse.output_text.delta)rz   r’   r{   rW   r“   r”   Úlogprobs)rX   rk   r   rT   rV   rW   r•   s   &&r8   Ú
text_deltaÚ!_ResponseStreamBuilder.text_deltaæ   sQ   € Ø�Š˜$Õ�à�J‰JÜ&Ø5Ø ŸK™KØ$(§H¡HØ!%×!2Ñ!2Ø"#ØØôó
ð
ð 	
r;   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rc   rt   )r6   r7   s   "€r8   r9   rL   ö   s   ø€ ÷ *ñ *¡¡S¥	ñ *r;   c                ó
  € \        R V P                  . R7      p\        V P                  RRRV.. R7      V n        V P                  \        RV P                  V P                  V P                  ^ V P                  . R7      4      V P                  \        RV P                  V P                  V P                  ^ VR	7      4      V P                  \        R
V P                  V P                  V P                  R7      4      .pRV n        V# )r¥   r¦   r¢   r›   r£   ©r†   rz   rn   r¤   rˆ   r§   zresponse.output_text.done)rz   r’   r{   rW   r“   r�   r®   zresponse.content_part.doner¨   rœ   r‰   F)r   rX   r   rT   r]   rk   r   rV   rW   r   r   r[   )r_   Úoutput_text_partr�   s   &  r8   Úfinish_messageÚ%_ResponseStreamBuilder.finish_messageö   s÷   € Ü-°=ÀtÇ~Á~ÐceÔfÐÜ1Ø�{‰{ØØØØ%Ð&Øô
ˆÔð �J‰JÜ%Ø4Ø ŸK™KØ$(§H¡HØ!%×!2Ñ!2Ø"#ØŸ™Øôó
ð �J‰JÜ,Ø5Ø ŸK™KØ$(§H¡HØ!%×!2Ñ!2Ø"#Ø)ôó	ð �J‰JÜ+Ø4Ø$(§H¡HØ!%×!2Ñ!2Ø×*Ñ*ô	óð-
ˆð> "ˆÔØˆr;   c          	      óB   <€ V ^8„  d   QhRS[ RS[ RS[ RS[S[ ,          /# )r1   Útc_idÚnameÚ	argumentsrd   r�   )r6   r7   s   "€r8   r9   rL   "  s-   ø€ ÷ &
ñ &
™sð &
©#ð &
¹#ð &
Á$ÁsÅ)ñ &
r;   c                óº  € V ;P                   ^,          un         \        VVRVVRR7      pV P                  P                  V4       V P	                  \        RV P                  V P                   VR7      4      V P	                  \        RV P                  VV P                   VVR7      4      V P	                  \        RV P                  V P                   VR7      4      .# )	rg   Úfunction_callr›   ©r†   Úcall_idrz   r¹   rº   rn   rƒ   r‰   z%response.function_call_arguments.done)rz   r{   r’   rW   rº   r¹   rœ   )	rW   r   r^   Úappendrk   r   rV   r   r   )r_   r¸   r¹   rº   rŠ   s   &&&& r8   Ú	tool_callÚ _ResponseStreamBuilder.tool_call"  sÕ   € Ø×Ò˜QÕÕÜ'ØØØ ØØØô
ˆð 	�‰×Ñ˜tÔ$à�J‰JÜ,Ø5Ø$(§H¡HØ!%×!2Ñ!2Øô	óð �J‰JÜ6Ø@Ø$(§H¡HØ!Ø!%×!2Ñ!2Ø'Øôó	ð �J‰JÜ+Ø4Ø$(§H¡HØ!%×!2Ñ!2Øô	óð'
ð 	
r;   c                ó6   <€ V ^8„  d   QhRS[ RS[S[ ,          /# )r1   Úmsgrd   r�   )r6   r7   s   "€r8   r9   rL   J  s   ø€ ÷ 
ñ 
™ð 
¡¡c¥ñ 
r;   c                óØ   € V P                  \        R V P                  VR7      4      V P                  \        RV P                  V P	                  R. \        RVR7      R7      R7      4      .# )Úerror)rz   r{   r¢   zresponse.failedÚfailedÚserver_error)Úcoder¢   )rx   rÅ   ry   )rk   r   rV   r   rq   r   )r_   rÃ   s   &&r8   rÅ   Ú_ResponseStreamBuilder.errorJ  se   € à�J‰JÔ)¨wÈÏÉÐZ]Ô^Ó_Ø�J‰JÜ#Ø*Ø$(§H¡HØ!Ÿ^™^Ø ¨´=ÀnÐ^aÔ3bð ,ó ôóð
ð 	
r;   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# rc   rt   )r6   r7   s   "€r8   r9   rL   X  s   ø€ ÷ 
ñ 
¡$¡s¥)ñ 
r;   c                ó6  € . pV P                   e   VP                  V P                   4       VP                  V P                  4       VP                  V P                  4       V P                  \        RV P                  V P                  RW!R7      R7      4      .# )Nzresponse.completedr›   )rx   Úusagery   )	r\   r¿   r]   Úextendr^   rk   r
   rV   rq   )r_   rÌ   Ú
all_outputs   && r8   r›   Ú _ResponseStreamBuilder.completedX  s…   € Øˆ
Ø×ÑÒ*Ø×Ñ˜d×1Ñ1Ô2Ø×Ñ˜$×+Ñ+Ô,Ø×Ñ˜$Ÿ/™/Ô*à�J‰JÜ&Ø-Ø$(§H¡HØ!Ÿ^™^¨KÀ
˜^ÓXôóð
ð 	
r;   )rR   rY   rX   r]   r[   rT   rW   rU   r\   rZ   rS   rV   r^   N)r=   r>   r?   r@   Ú__doc__r`   rk   rq   r   r‹   r–   rž   rª   r¯   rµ   rÀ   rÅ   r›   rB   rC   rD   s   @r8   rG   rG   c   s�   ø‡ € ÙG÷=ð =÷ð ÷
Kð K÷
ð 
÷$
ð 
÷
ð 
÷ð ÷@
ð 
÷2
ð 
÷ *ð *÷X&
ð &
÷P
ð 
÷
ö 
r;   rG   c                   óà   a a€ ] tR tRt oRt]t]tV3R lR lt	]
V3R lR l4       t]
V3R lR l4       t]
V3R	 lR
 l4       tRV3R lR lltRV3R lR lltRV3R lV 3R llltRtVtV ;t# )ÚResponseHandlerii  z+Handler for the ``/v1/responses`` endpoint.c                ó<   <€ V ^8„  d   QhRS[ RS[RS[S[,          /# )r1   ÚbodyrI   rd   )rK   r4   r   r   )r6   r7   s   "€r8   r9   ÚResponseHandler.__annotate__o  s.   ø€ ÷ Uñ U©ð U¹3ð UÑCTÑWcÕCcñ Ur;   c              ƒ  ó   "  € V P                  V4       V P                  V4      w  r4pV P                  P                  WER7      pV P                  P                  WF4      p\        P                  RV RV 24       V P                  P                  W7R7      pV P                  V4      p	V P                  W–4      p
\        ;QJ d    R V
 4       F  '       g   K   RM	  RM! R V
 4       4      p/ pV'       d   ^ VR&   VP                  V P                  4       TP                  VP                  R	4      ;'       g    / 4       V P                  VP                  R
4      4      pVP                   ! V
3RRR
TRV'       d   RMRRRRRRV\"        P$                  8H  ;'       d    T/VB pV'       g   VP'                  VP(                  4      pV P+                  WP,                  VR7      pV'       d   VP/                  WO4       VP                  R
4      '       d   \1        WT4      MRp\3        WTVR,          4      pVP                  RR4      pV'       d   V P5                  VVVVVVVVVVR7
      # V P7                  VVVVVVVVVVR7
      G Rj  x€L
 #  L5i)aJ  Validate, load model, dispatch to streaming or non-streaming.

Args:
    body (`dict`): The raw JSON request body (OpenAI Responses API format).
    request_id (`str`): Unique request identifier (from header or auto-generated).

Returns:
    `StreamingResponse | JSONResponse`: SSE stream or JSON depending on ``body["stream"]``.
)Ú	processorz[Request received] Model: z, CB: ©Úuse_cbc              3   óÈ   "  € T FX  p\        VP                  R 4      \        4      '       d   VP                  R 4      M.  F  pVP                  R4      R8H  x € K  	  KZ  	  R# 5i)rˆ   rz   ÚvideoN)Ú
isinstanceÚgetru   )Ú.0rÃ   Úcs   &  r8   Ú	<genexpr>Ú1ResponseHandler.handle_request.<locals>.<genexpr>‡  sU   é € ð 
á'�Ü,6°s·w±w¸yÓ7IÌ4×,PÒ,P�c—g‘g˜iÔ(ÐVXÒX�ð �E‰E�&‹M˜WÖ$áXñ %Û'ùs   ‚A A"TFÚ
num_framesÚchat_template_kwargsÚtoolsÚadd_generation_promptÚreturn_tensorsNÚptÚreturn_dictÚtokenizeÚload_audio_from_videoÚ	input_idsÚstream)Úgen_managerÚtool_configÚreasoning_config)Ú_validate_requestÚ_resolve_modelÚmodel_managerÚget_model_modalityÚgeneration_stateÚuse_continuous_batchingÚloggerÚwarningÚget_managerÚ_normalize_inputÚ"get_processor_inputs_from_messagesÚanyÚupdaterã   rÝ   Ú_normalize_toolsÚapply_chat_templater#   Ú
MULTIMODALÚtoÚdeviceÚ_build_generation_configr2   Úinit_cbr'   r&   Ú
_streamingÚ_non_streaming)r_   rÔ   rI   Úmodel_idÚmodelr×   ÚmodalityrÙ   rí   ÚmessagesÚprocessor_inputsÚ	has_videorã   rä   ÚinputsÚ
gen_configrî   rï   Ú	streamings   &&&                r8   Úhandle_requestÚResponseHandler.handle_requesto  s§  é € ð 	×Ñ˜tÔ$à%)×%8Ñ%8¸Ó%>Ñ"ˆ˜Ø×%Ñ%×8Ñ8¸Ð8ÓTˆØ×&Ñ&×>Ñ>¸uÓOˆÜ�‰Ð3°H°:¸VÀFÀ8ÐLÔMØ×+Ñ+×7Ñ7¸Ð7ÓPˆð
 ×(Ñ(¨Ó.ˆØ×BÑBÀ8ÓVÐç“Cñ 
á'ó
—C—C’Cñ 
á'ó
ó 
ˆ	ð &(ÐßØ13Ð  Ñ.Ø×#Ñ# D×$=Ñ$=Ô>Ø×#Ñ# D§H¡HÐ-CÓ$D×$JÐ$JÈÔKà×%Ñ% d§h¡h¨wÓ&7Ó8ˆØ×.Ò.Øñ	
à"&ð	
ð ð	
÷ $*™4¨tð		
ð
 ð	
ð ð	
ð #+¬h×.AÑ.AÑ"A×"OÐ"OÀið	
ð #ñ	
ˆ÷ Ø—Y‘Y˜uŸ|™|Ó,ˆFà×2Ñ2°4×9PÑ9PÐY_Ð2Ó`ˆ
çØ×Ñ Ô2Ø@DÇÁÈ×@QÒ@QÔ*¨9Ô<ÐW[ˆÜ/°	À&ÈÕBUÓVÐà—H‘H˜X tÓ,ˆ	ßØ—?‘?ØØØØØØØØ'Ø'Ø!1ð #ó ð ð ×,Ñ,ØØØØØØØØ'Ø'Ø!1ð -ó ÷ ð ñ ùs@   ‚CJÃJÃ6AJÄ9AJÅ;!JÆJÆ,A'JÈA3JÊJÊJc                ób   <€ V ^8„  d   QhRS[ S[,          R,          RS[ S[,          R,          /# )r1   rä   Nrd   ©ru   rK   )r6   r7   s   "€r8   r9   rÕ   É  s-   ø€ ÷ 
ñ 
¡¡T¥
¨TÕ 1ð 
±d¹4µjÀ4Õ6Gñ 
r;   c                óÌ   € V '       g   V # V  UUUu. uF=  pRV9  d2   RRRVP                  4        UUu/ uF  w  r#VR8w  g   K  W#bK  	  upp/MTNK?  	  uppp# u uppi u upppi )aX  Normalize Responses API tool definitions for ``apply_chat_template``.

The Responses API uses a flat format: ``{"type": "function", "name": ..., "parameters": ...}``
while ``apply_chat_template`` expects a nested format:
``{"type": "function", "function": {"name": ..., "parameters": ...}}``.
Already-nested tools are passed through unchanged.
Úfunctionrz   )Úitems)rä   ÚtÚkÚvs   &   r8   rý   Ú ResponseHandler._normalize_toolsÈ  sq   € ÷ ØˆLñ õ
á�ð ^hÐopÔ]pˆV�Z ¸q¿w¹w¼yÔ-X¹y±t°qÈAÐQWÉK¬d¨aªd¹yÒ-XÑYÐvwÒwÙó
ð 	
ùÛ-Xùô
s   ‘"A³AÁAÁ	AÁAc                ó6   <€ V ^8„  d   QhRS[ RS[S[ ,          /# )r1   rÔ   rd   )rK   ru   )r6   r7   s   "€r8   r9   rÕ   Ù  s   ø€ ÷ *ñ *™tð *©©T­
ñ *r;   c                ó´  € V R,          pV P                  R4      p\        V\        4      '       d	   RRRV/.pMW\        V\        4      '       d5   V'       d   RV^ ,          9  d	   RRRV/.pM#\        P                  V4      pM\        RRR7      hV'       dA   V'       d#   V^ ,          R,          R	8X  d   W#^ ,          R&   V# VP                  ^ RR	RV/4       V# )
uÙ  Normalize the Responses API ``input`` field into chat messages.

The Responses API accepts multiple input formats. This method converts them
into a structure close to what ``apply_chat_template`` expects (messages with
``role``, ``content``, ``tool_calls``, ``tool_call_id``). Further processing
is done by ``get_processor_inputs_from_messages``.

NOTE: if this conversion logic grows too complex, consider having separate
``get_processor_inputs_from_messages`` implementations for chat completions
and the Responses API instead of funneling both through the same path.

Formats handled:
    - **String** â†’ single user message.
    - **Flat content list** (``input_text``, ``input_image``, no ``role``) â†’ user message.
    - **Multi-turn list** â€” messages and tool call items (``function_call``,
      ``function_call_output``) from a previous response, converted via
      :meth:`_normalize_response_items`.

If ``instructions`` is present, it is prepended as a system message.
ÚinputÚinstructionsr¤   Úuserrˆ   é¦  z 'input' must be a string or list©Ústatus_codeÚdetailÚsystem)rÝ   rÜ   r4   ru   rÒ   Ú_normalize_response_itemsr   Úinsert)rÔ   Úinpr  r	  s   &   r8   rù   Ú ResponseHandler._normalize_inputØ  sÌ   € ð, �7�mˆØ—x‘x Ó/ˆä�cœ3×ÒØ ¨°CÐ8Ð9‰HÜ˜œT×"Ò"ß�v S¨¥VÔ+à# V¨Y¸Ð<Ð=‘ä*×DÑDÀSÓI‘ä¨CÐ8ZÔ[Ð[÷ ß˜H Q�K¨Õ/°8Ô;Ø)5˜•˜IÑ&ð ˆð —‘  F¨H°iÀÐ#NÔOàˆr;   c                óF   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          /# )r1   r  rd   r  )r6   r7   s   "€r8   r9   rÕ     s#   ø€ ÷ 0ñ 0©©d­ð 0¹¹T½
ñ 0r;   c           
     óà  € . pRpV  EFb  pVP                  R4      pVR8X  d4   RP                  R VP                  R4      ;'       g    .  4       4      pKO  RV9   dI   RVR,          RVP                  RR4      /pVe   VR,          R8X  d   W%R	&   RpVP                  V4       Kž  VR
8X  d�   RVR,          RRVR,          RVR,          //pV'       dA   VR,          R,          R8X  d,   VR,          P                  R. 4      P                  V4       EK  VP                  RRRV./4       EK%  VR8X  d)   VP                  RRRVR,          RVR,          /4       EKT  \	        RRV: 2R7      h	  V# )u¶  Convert a list of Responses API items into chat messages.

Input items may be a mix of:
    - Messages (``EasyInputMessageParam`` with ``role``, or ``type: "message"``).
    - ``reasoning`` â€” buffered and attached as ``reasoning_content`` to the next assistant message.
    - ``function_call`` â€” merged as ``tool_calls`` onto the preceding assistant message.
    - ``function_call_output`` â€” converted to ``role: "tool"`` messages.
Nrz   r„   rQ   c              3   ó2   "  € T F  qR ,          x € K  	  R# 5i)r�   Nr<   )rÞ   rß   s   & r8   rà   Ú<ResponseHandler._normalize_response_items.<locals>.<genexpr>  s   é € Ð+YÑ?X¸!¨f¯IªIÓ?Xùs   ‚rˆ   r¤   r£   Úreasoning_contentr¼   r†   r¾   r  r¹   rº   r^   Úfunction_call_outputÚtoolÚtool_call_idrx   r  zUnsupported input item type: r   éÿÿÿÿ)rÝ   Újoinr¿   Ú
setdefaultr   )r  r	  Úpending_reasoningrŠ   Ú	item_typerÃ   Útcs   &      r8   r$  Ú)ResponseHandler._normalize_response_items  sy  € ð ˆØ(,ÐäˆDØŸ™ Ó(ˆIà˜KÔ'Ø$&§G¡GÑ+Y¸t¿x¹xÈ	Ó?R×?XÐ?XÐVXÐ?XÓ+YÓ$YÐ!Ùà˜Œ~Ø˜t F�|¨Y¸¿¹ÀÈBÓ8OÐP�Ø$Ò0°T¸&µ\À[Ô5PØ/@Ð+Ñ,Ø(,Ð%Ø—‘ Ö$à˜oÔ-à˜$˜y�/Ø ¨¨f­°{ÀDÈÕDUÐ Vð�÷  ¨¥¨VÕ 4¸Ô CØ˜R•L×+Ñ+¨L¸"Ó=×DÑDÀR×Hà—O‘O V¨[¸,ÈÈÐ$M×NàÐ4Ô4Ø—‘à Ø&¨¨Y­Ø! 4¨¥>ð÷ô $°Ð>[Ð\eÑ[hÐ<iÔjÐjñE ðH ˆr;   c                ór   <€ V ^8„  d   QhRS[ RRRRRS[ RS[RS[R	R
RS[RS[R,          RS[R,          RS[/# ©r1   rI   r  r+   r×   z(ProcessorMixin | PreTrainedTokenizerFastr  rÔ   r  r  r*   rí   rî   Nrï   rd   )r4   rK   r!   r   )r6   r7   s   "€r8   r9   rÕ   :  s›   ø€ ÷ fQñ fQáðfQð !ðfQð >ð	fQñ
 ðfQñ ðfQñ ðfQð 'ðfQñ )ðfQñ ˜D•[ðfQñ  �+ðfQñ 
ñfQr;   c                ón  aaa	aaaa€ VP                  VSVVSS	V
R7      w  ooVR,          p\        V\        4      '       d   \        V4      MVP                  R,          oRRS 2R\
        P
                  ! 4       RVRRR	. R
VP                  R
R4      RR/oR VVVVVVV	3R llp\        V! 4       RR7      # )zDGenerate a streaming Responses API reply (SSE) using DirectStreamer.)rI   rî   rï   rë   r†   rN   Ú
created_atr  Úobjectr|   rä   Úparallel_tool_callsFÚtool_choiceÚautoc                ó>   € V ^8„  d   QhR\         \        R3,          /# )r1   rd   N)r   r4   )r6   s   "r8   r9   Ú0ResponseHandler._streaming.<locals>.__annotate__`  s   € ÷ >	ñ >	¤N´3¸°9Õ$=ñ >	r;   c            	     óF  <"  € \        SSR 7      p  RP                  V P                  4       4      5x € RpV'       g=   S
P                  4       G Rj  x€L
 .p  VP	                  S
P                  4       4       K"  V P                  '       d#   RP                  V P%                  4       4      5x € V P&                  '       g#   RP                  V P)                  4       4      5x € RP                  V P-                  4       4      5x € S'       ds   \/        S	SP0                  SR,          4      pV'       dM   \3        V4       F=  w  rgRP                  V P5                  S RV 2VR,          VR	,          4      4      5x € K?  	  RP                  V P7                  \9        SSP:                  4      4      4      5x € R#  ELf  \        P                   d     Mi ; i. pT EFq  pTf   Rp EMi\        T\        4      '       dd   \        P                  RTP                   24       TP                  T P                  TP                  4      4       RP                  T4      5x €  R# \        T\        4      '       dT   T P                  '       g    TP                  T P!                  4       4       TP                  T P#                  T4      4       Kï  T P                  '       d    TP                  T P%                  4       4       T P&                  '       g    TP                  T P)                  4       4       TP                  T P+                  T4      4       EKt  	  T'       g   EK$  RP                  T4      5x € EK;    \<        \        P>                  3 d    SPA                  4        h i ; i5i)
)rI   rJ   rQ   FNTz"Exception in response generation: ÚschemaÚ_tool_call_r¹   rº   )!rG   r1  r   rÝ   r¿   Ú
get_nowaitÚasyncioÚ
QueueEmptyrÜ   r%   rö   rÅ   rÃ   rÍ   r$   rZ   r‹   r–   rž   r[   rª   r¯   rµ   r)   Úgenerated_token_idsÚ	enumeraterÀ   r›   Úcompute_usageÚtotal_tokensÚGeneratorExitÚCancelledErrorÚcancel)ÚbuilderÚdoneÚbatchr�   r�   ÚparsedÚir5  Ú	input_lenr×   ÚqueuerI   rJ   Ústreamerrî   s           €€€€€€€r8   Úevent_streamÚ0ResponseHandler._streaming.<locals>.event_stream`  sÍ  øé € Ü,¸
ÐVgÔhˆGð<Ø—g‘g˜g×4Ñ4Ó6Ó7Ó7ð �ßØ#(§9¡9£;×.Ð/�EðØ"Ø!ŸL™L¨×)9Ñ)9Ó);Ö<ð: ×)×)Ð)ØŸ'™' '×":Ñ":Ó"<Ó=Ó=Ø×+×+Ð+ØŸ'™' '×"7Ñ"7Ó"9Ó:Ó:Ø—g‘g˜g×4Ñ4Ó6Ó7Ó7÷ Ü-¨i¸×9UÑ9UÐWbÐckÕWlÓm�FßÜ%.¨vÖ%6™E˜AØ"$§'¡'Ø '× 1Ñ 1°Z°LÀÈAÈ3Ð2OÐQSÐTZÕQ[Ð]_Ð`kÕ]lÓ mó#õ ñ &7ð
 —g‘g˜g×/Ñ/´¸iÈ×I^ÑI^Ó0_Ó`ÓaÕaòa /øô #×-Ñ-ô Ùðúð (*�EÜ %˜Øš<Ø#'˜DÚ!Ü% d¬L×9Ò9Ü"ŸL™LÐ+MÈdÏhÉhÈZÐ)XÔYØ!ŸL™L¨¯©°t·x±xÓ)@ÔAØ"$§'¡'¨%£.Ó0Ú"Ü% d¬M×:Ò:Ø#*×#9×#9Ð#9Ø %§¡¨W×-DÑ-DÓ-FÔ GØ!ŸL™L¨×)@Ñ)@ÀÓ)FÖGà&×5×5Ð5Ø %§¡¨W×-EÑ-EÓ-GÔ HØ#*×#7×#7Ð#7Ø %§¡¨W×-BÑ-BÓ-DÔ EØ!ŸL™L¨×);Ñ);¸DÓ)A×Bñ% !&÷( ’uØ Ÿg™g e›nÖ,øô( "¤7×#9Ñ#9Ð:ô ð —‘Ô!Øð	üs’   ƒN!’+M1 ¾M1 ÁF7ÁM1 Á"F: Á:M1 Â3M1 Ã AM1 ÄB)M1 Æ5N!Æ7M1 Æ:GÇM1 ÇGÇBM1 ÉN!É'M1 ÊAM1 Ë0M1 ÌA	M1 ÍM1 Í1-NÎN!ztext/event-stream)Ú
media_typer0  )Úgenerate_streamingrÜ   ru   ÚlenÚshapeÚtimerÝ   r   )r_   rI   r  r×   r  rÔ   r  r  rí   rî   rï   rë   rV  rS  rT  rJ   rU  s   &f&f&&&&&f&  @@@@r8   r  ÚResponseHandler._streaming:  sÃ   þ€ ð &×8Ñ8ØØØØØ!Ø#Ø-ð 9ó 
‰ˆˆxð ˜;Õ'ˆ	ä&0°¼D×&AÒ&A”C˜	”NÀyÇÁÐWYÕGZˆ	ð �E˜*˜Ð&Øœ$Ÿ)š)›+Ø�XØ�jà�RØ! 4§8¡8Ð,AÀ5Ó#IØ˜6ð	
Ð÷>	ö >	ô@ !¡£Ð<OÔPÐPr;   c                ór   <€ V ^8„  d   QhRS[ RRRRRS[ RS[RS[R	R
RS[RS[R,          RS[R,          RS[/# r8  )r4   rK   r!   r   )r6   r7   s   "€r8   r9   rÕ   ¤  s›   ø€ ÷ IDñ IDáðIDð !ðIDð >ð	IDñ
 ðIDñ ðIDñ ðIDð 'ðIDñ )ðIDñ ˜D•[ðIDñ  �+ðIDñ 
ñIDr;   c              ƒ  óÔ  "  € VP                  W#WgVR7      G Rj  x€L
 w  r¼p. pV
e:   \        W=Wº4      w  r¿Ve(   VP                  \        RV 2R. RRRV/.RR	7      4       VP                  \	        R
V 2RRR\        RV. R7      .. R7      4       V	ef   \        W=V	R,          4      pV'       dK   \        V4       F;  w  ppV RV 2pVP                  \        VVRVR,          VR,          RR7      4       K=  	  \        V\        V4      4      p\        RV 2\        P                  ! 4       RVVRV. VP                  RR4      RR7
      p\        VP                  RR7      4      #  ELK5i)z;Generate a non-streaming Responses API reply (single JSON).)rI   NrP   r„   rz   rš   r�   r›   r…   rO   r¢   r£   r¥   r¦   r³   rB  rC  r¼   r¹   rº   r½   rN   r|   r<  Fr>  )
r†   r:  rn   r  rx   r;  rÌ   rä   r<  r=  T)Úexclude_none)Úgenerate_non_streamingr(   r¿   r   r   r   r)   rH  r   rI  rZ  r	   r\  rÝ   r   Ú
model_dump)r_   rI   r  r×   r  rÔ   r  r  rí   rî   rï   rX   rS  Úgenerated_idsÚoutput_itemsr,  rQ  rR  r5  r¸   rÌ   r|   s   &&&&&&&&&&&           r8   r  ÚResponseHandler._non_streaming¤  s®  é € ð 5@×4VÑ4VØ˜f¸Zð 5Wó 5
÷ /
Ñ+ˆ	˜mð ˆØÒ'Ü+:¸9ÐU^Ó+qÑ(ˆIØ Ò,Ø×#Ñ#Ü)Ø   Ð-Ø(Ø "Ø"(Ð*:¸FÐDUÐ!VÐ WØ*ôôð 	×ÑÜ!Ø˜*˜Ð&ØØ"Ø Ü+°ÀYÐ\^Ô_Ð`Øôô		
ð Ò"Ü% iÀÈHÕ@UÓVˆFßÜ& vÖ.‘E�A�rØ)˜l¨+°a°SÐ9�EØ ×'Ñ'Ü0Ø$Ø$)Ø!0Ø!# F¥Ø&(¨¥oØ#.ôö	ñ /ô ˜i¬¨]Ó);Ó<ˆÜØ�z�lÐ#Ü—y’y“{ØØØØØàØ $§¡Ð)>ÀÓ FØô
ˆô ˜H×/Ñ/¸TÐ/ÓBÓCÐCòw/
ùs   ‚E(šE%›EE(c                ó*   <€ V ^8„  d   QhRS[ RRRS[/# )r1   rÔ   Úmodel_generation_configr*   rÙ   )rK   Úbool)r6   r7   s   "€r8   r9   rÕ   ñ  s$   ø€ ÷ !ñ !©Tð !ÐL^ð !Ñhlñ !r;   c                ó~   <€ \         SV `  WVR7      pVP                  R4      e   \        VR,          4      Vn        V# )zXApply Responses API params (``max_output_tokens``) on top of the base generation config.rØ   Úmax_output_tokens)Úsuperr  rÝ   r5   Úmax_new_tokens)r_   rÔ   rg  rÙ   r2   Ú	__class__s   &&&& €r8   r  Ú(ResponseHandler._build_generation_configñ  sC   ø€ ä!™GÑ<¸TÐciÐ<ÓjÐà�8‰8Ð'Ó(Ò4Ü/2°4Ð8KÕ3LÓ/MÐÔ,à Ð r;   r<   )NN)F)r=   r>   r?   r@   rÐ   r/   Ú_valid_params_classÚUNUSED_RESPONSE_FIELDSÚ_unused_fieldsr  Ústaticmethodrý   rù   r$  r  r  r  rB   rC   Ú__classcell__)rm  r7   s   @@r8   rÒ   rÒ   i  s‹   ù‡ € Ù5àCÐØ+€N÷Uð Uðr ÷
ó ð
ð ÷*ó ð*ðX ÷0ó ð0÷hfQò fQ÷TIDò ID÷Z!÷ !õ !r;   rÒ   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r1   Úinput_tokensÚoutput_tokensrd   )r5   r    )r6   s   "r8   r9   r9   û  s!   € ÷ ñ ¤ð ´Cð ¼Mñ r;   c           
     óV   € \        V VW,           \        ^ R7      \        ^ R7      R7      # )zýBuild a ``ResponseUsage`` object for a Responses API reply.

Args:
    input_tokens (`int`): Number of prompt tokens.
    output_tokens (`int`): Number of generated tokens.

Returns:
    `ResponseUsage`: Usage statistics with zero-filled detail fields.
)Úcached_tokens)Úreasoning_tokens)ru  rv  rJ  Úinput_tokens_detailsÚoutput_tokens_details)r    r   r   )ru  rv  s   &&r8   rI  rI  û  s-   € ô Ø!Ø#Ø!Õ1Ü/¸aÔ@Ü1À1ÔEôð r;   >   r�   r  ÚstoreÚpromptÚincludeÚ
backgroundÚ
truncationr=  Úservice_tierÚtop_logprobsÚmax_tool_callsÚprevious_response_id)ArÐ   rE  r\  Úcollections.abcr   Útypingr   Úutilsr   Úutils.import_utilsr   Úfastapir   Úfastapi.responsesr   r   Úopenai.types.responsesr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú-openai.types.responses.response_create_paramsr   Ú%openai.types.responses.response_usager   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Útransformersr*   r+   r,   r-   Ú
get_loggerr=   rö   r/   rp  rG   rÒ   rI  r<   r;   r8   Ú<module>r�     s¾   ðñó Û Ý *Ý  å Ý 4ñ ×ÒÝ%ßA÷÷ ÷ ÷ ÷ ó õ, \ßlÑl÷
÷ 
õ 
÷ ßgÓgð 
×	Ò	˜HÓ	%€ôÐ0MÐUZõ ò
Ð ÷ C
ñ C
ôLO!�kô O!÷dr;   