
    .`iP                        U d dl Z d dlmZmZmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ  d dlm!Z" d dl#m$Z$ d dl%m&Z' 	 d d	lm(Z( n# e)$ r	 d d
lm*Z( Y nw xY wd dl+m,Z,m-Z- d dl.m/Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZBmCZCmDZD d dlEmFZF  e@eG          ZH G d de<          ZI G d de<          ZJ G d de<          ZKd ZLd ZM G d de<          ZNeOe:         eOeN         z  ZPeeQd<   eez  ZReeQd <    G d! d"e<          ZS G d# d$e<          ZT G d% d&e<          ZU G d' d(e<          ZV G d) d*e          Z G d+ d,e           Z G d- d.e"          Z!ee!z  ez  ez  ez  ez  ez  ez  ez  eVz  eUz  e	z  ez  ez  ez  ez  ez  e
z  ez  ez  ez  ez  ez  ZWeeQd/<   dS )0    N)AnyLiteral	TypeAlias))ResponseCodeInterpreterCallCodeDeltaEvent(ResponseCodeInterpreterCallCodeDoneEvent)ResponseCodeInterpreterCallCompletedEvent*ResponseCodeInterpreterCallInProgressEvent,ResponseCodeInterpreterCallInterpretingEventResponseContentPartAddedEventResponseContentPartDoneEventResponseFunctionToolCallResponseInputItemParam"ResponseMcpCallArgumentsDeltaEvent!ResponseMcpCallArgumentsDoneEventResponseMcpCallCompletedEventResponseMcpCallInProgressEventResponseOutputItemResponseOutputItemAddedEventResponseOutputItemDoneEventResponsePromptResponseReasoningTextDeltaEventResponseReasoningTextDoneEventResponseStatus#ResponseWebSearchCallCompletedEvent$ResponseWebSearchCallInProgressEvent#ResponseWebSearchCallSearchingEvent)ResponseCompletedEvent)ResponseCreatedEvent)ResponseInProgressEvent)Tool)Message)ResponseTextConfig)ResponseFormatTextConfig)IncompleteDetails
ToolChoice)Content)Metadata	Reasoning)FieldValidationErrorfield_serializermodel_validator)ChatCompletionMessageParam)OpenAIBaseModel)VLLMValidationError)init_logger)RequestOutputKindSamplingParamsStructuredOutputsParamsrandom_uuidc                   v    e Zd ZU eed<    ee          Zee         ed<    ee          Zee         ed<   dS )InputTokensDetailscached_tokensdefault_factoryinput_tokens_per_turncached_tokens_per_turnN)	__name__
__module____qualname__int__annotations__r)   listr;   r<        ~/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/entrypoints/openai/responses/protocol.pyr7   r7   N   sb         ',uT'B'B'B49BBB(-d(C(C(CDICCCCCrD   r7   c                       e Zd ZU dZeed<   dZeed<    ee          Z	ee         ed<    ee          Z
ee         ed<   dS )OutputTokensDetailsr   reasoning_tokenstool_output_tokensr9   output_tokens_per_turntool_output_tokens_per_turnN)r=   r>   r?   rH   r@   rA   rI   r)   rB   rJ   rK   rC   rD   rE   rG   rG   T   sx         c(-d(C(C(CDICCC-2U4-H-H-HcHHHHHrD   rG   c                   B    e Zd ZU eed<   eed<   eed<   eed<   eed<   dS )ResponseUsageinput_tokensinput_tokens_detailsoutput_tokensoutput_tokens_detailstotal_tokensN)r=   r>   r?   r@   rA   r7   rG   rC   rD   rE   rM   rM   [   sN         ,,,,....rD   rM   c                     t          | t                    r| S t          | d          r|                                 S |                                 S )z%
    Serializes a single message
    to_dict)
isinstancedicthasattrrT   model_dump_json)msgs    rE   serialize_messagerZ   c   sO     #t %
	i	 	  %{{}} ""$$$rD   c                 "    | rd | D             ndS )z&
    Serializes multiple messages
    c                 ,    g | ]}t          |          S rC   )rZ   ).0rY   s     rE   
<listcomp>z&serialize_messages.<locals>.<listcomp>t   s!    333sc""333rD   NrC   )msgss    rE   serialize_messagesr`   p   s#     8<E33d3333ErD   c                   N    e Zd ZU dZeed<   ee         ed<   dZe	d         ed<   dS )ResponseRawMessageAndTokenz]Class to show the raw message.
    If message / tokens diverge, tokens is the source of truthmessagetokensraw_message_tokenstypeN)
r=   r>   r?   __doc__strrA   rB   r@   rf   r   rC   rD   rE   rb   rb   w   sO         B B LLLI*>D'&
'>>>>>rD   rb   ResponseInputOutputMessageResponseInputOutputItemc                   x   e Zd ZU dZedz  ed<   dZeed         f         dz  ed<   e	ee
         z  ed<   dZe	dz  ed<   dZedz  ed<   dZedz  ed	<   dZedz  ed
<   dZe	dz  ed<   dZee	ef         dz  ed<   dZedz  ed<   dZe	dz  ed<   dZedz  ed<   dZedz  ed<   dZed         ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZe dz  ed<   dZ!e"ed<    e#e          Z$ee%         ed<   dZ&edz  ed<   dZ'edz  ed<   dZ(edz  ed<   d Z)ed!         dz  ed"<   dZ*e	dz  ed#<   dZ+eed$<   dZ,eed%<    e#dd&'          Z-e	dz  ed(<    e#d) d*+          Z.e	ed,<    e#dd-'          Z/ee	e0f         dz  ed.<    e#dd/'          Z1eed0<    e#dd1'          Z2e	dz  ed2<    e#dd3'          Z3eed4<   dZ4ee5ez           dz  ed5<   d6d6dd7Z6	 dCd8ed9edz  d:e7fd;Z8d:efd<Z9 e:d=>          d?             Z; e:d=>          d@             Z< e:d=>          dA             Z= e:d=>          dB             Z>dS )DResponsesRequestFN
background)zcode_interpreter_call.outputsz%computer_call_output.output.image_urlzfile_search_call.resultszmessage.input_image.image_urlmessage.output_text.logprobszreasoning.encrypted_contentincludeinputinstructionsmax_output_tokensmax_tool_callsmetadatamodel
logit_biasTparallel_tool_callsprevious_response_idprompt	reasoningautor{   defaultflexscalepriorityservice_tierstorestreamtemperaturetexttool_choicer9   toolsr   top_logprobstop_ptop_kdisabledr{   r   
truncationuserskip_special_tokensinclude_stop_str_in_outputzA key that was used to read from or write to the prompt cache.Note: This field has not been implemented yet and vLLM will ignore it.r}   descriptionprompt_cache_keyc                  $    dt                       S Nresp_r4   rC   rD   rE   <lambda>zResponsesRequest.<lambda>   s     7 7 7 rD   zThe request_id related to this request. If the caller does not set it, a random_uuid will be generated. This id is used through out the inference process and return in response.)r:   r   
request_idz.Additional kwargs to pass to the HF processor.mm_processor_kwargszThe priority of the request (lower means earlier handling; default: 0). Any priority other than 0 will raise an error if the served model does not use priority scheduling.r   a/  If specified, the prefix cache will be salted with the provided string to prevent an attacker to guess prompts in multi-user environments. The salt should be random, protected from access by 3rd parties, and long enough to be unpredictable (e.g., 43 characters base64-encoded, corresponding to 256 bit).
cache_saltzDictates whether or not to return messages as part of the response object. Currently only supported fornon-background and gpt-oss only. enable_response_messagesprevious_input_messagesg      ?)r   r   r   default_max_tokensdefault_sampling_paramsreturnc                    | j         |}nt          | j         |          }|pi }| j        x}!|                    d| j        d                   }| j        x}!|                    d| j        d                   }| j        x}!|                    d| j        d                   }|                    d          }d }| j        Z| j        j        N| j        j        }	|	j	        dk    r|	j
        t          |	j
                  }n|	j	        dk    rt          d          t          j        |||||                                 r| j        nd || j        rt$          j        nt$          j        || j        d	| j        | j        
          S )Nr   r   r   stop_token_idsjson_schema)jsonjson_objectzjson_object is not supportedT)r   r   r   
max_tokenslogprobsr   output_kindstructured_outputsrv   
skip_cloner   r   )rr   minr   get_DEFAULT_SAMPLING_PARAMSr   r   r   formatrf   schema_r3   NotImplementedErrorr2   from_optionalis_include_output_logprobsr   r   r1   DELTA
FINAL_ONLYrv   r   r   )
selfr   r   r   r   r   r   r   r   response_formats
             rE   to_sampling_paramsz#ResponsesRequest.to_sampling_params   s   
 !)+JJT35GHHJ"9"?R++K4155t<]K K ZE(+//6w? E ZE(+//6w? E 1445EFF "9 TY%5%A"i.O$55#+7%<(0& & &"" !%66)*HIII +#!*.*I*I*K*KUT&&QU)+/;X!''<M<X1 $ 8'+'F
 
 
 	
rD   c                 Z    | j         dS t          | j         t                    od| j         v S )z.Check if the request includes output logprobs.NFrn   )ro   rU   rB   )r   s    rE   r   z+ResponsesRequest.is_include_output_logprobs(  s2    <5t|T** ?.$,>	
rD   before)modec                 ~    |                     d          s|S |                     dd          st          d          |S )Nrm   r   Tz0background can only be used when `store` is true)r   
ValueErrorclsdatas     rE   validate_backgroundz$ResponsesRequest.validate_background1  sF    xx%% 	Kxx&& 	QOPPPrD   c                 R    |                     d          t          dd          |S )Nry   z prompt template is not supported)	parameter)r   r/   r   s     rE   validate_promptz ResponsesRequest.validate_prompt9  s7    88H)%2h    rD   c                     |                     d          2t          |d         t                    r|d         st          d          |S )Nr   z>Parameter 'cache_salt' must be a non-empty string if provided.)r   rU   rh   r   r   s     rE   check_cache_salt_supportz)ResponsesRequest.check_cache_salt_supportA  sV    88L!!-4-s33 .;?;M . P   rD   c                 >   |                     d          }|t          |t          t          f          r|S t          |t                    s#	 t	          |          }n# t
          $ r |cY S w xY wg }|D ]}t          |t                    ry|                     d          dk    r`	 |                    t          di |           Q# t          $ r2 t                              d           |                    |           Y w xY w|                    |           ||d<   |S )a{  Parse function_call dictionaries into ResponseFunctionToolCall objects.
        This ensures Pydantic can properly resolve union types in the input field.
        Function calls provided as dicts are converted to ResponseFunctionToolCall
        objects before validation, while invalid structures are left for Pydantic
        to reject with appropriate error messages.
        rp   Nrf   function_callzZFailed to parse function_call to ResponseFunctionToolCall, leaving for Pydantic validationrC   )r   rU   rh   bytesrB   	TypeErrorrV   appendr   r*   loggerdebug)r   r   
input_dataprocessed_inputitems        rE   function_call_parsingz&ResponsesRequest.function_call_parsingK  sc    XXg&&
 Je!E!EK *d++ 	!*--

     	- 	-D$%% -$((6*:*:o*M*M1#**+C+K+Kd+K+KLLLL& 1 1 1LL:   $**4000001  &&t,,,,'Ws$   A A+*A+#C9C?>C?N)?r=   r>   r?   rm   boolrA   ro   rB   r   rh   rj   rq   rr   r@   rs   rt   r'   ru   rv   rV   floatrw   rx   ry   r   rz   r(   r   r   r   r   r   r"   r   r%   r)   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   OpenAIHarmonyMessager   r2   r   r   r,   r   r   r   r   rC   rD   rE   rl   rl      s         $Jt### 	 / 		
 
	   -.....#L#*###$(sTz(((!%NC$J%%% $Hho$$$E3:*.JS%Z 4'...'++++'+#*+++$(FNT!((("&Iy4&&&LRL'HIRRRE4$;FD4K $K$$$&*D
t
#***$K$$$d333E4:333 L#*   E54<E3:5?J*+d2???D#* $$$$',,,,#(5'$ $ $cDj    e77H  J    27E2 2 2c3h$.    ED  Hc    #U
 
 
Jd
 
 
 
 &+U0& & &d    IMT"6"=>ELLL     047
 7
7
 "&7
 
	7
 7
 7
 7
r
D 
 
 
 
 _(###  $# _(###  $# _(###  $# _(###' ' $#' ' 'rD   rl   c                      e Zd ZU  ed           Zeed<    ed           Zeed<   dZ	e
dz  ed<   dZedz  ed<   dZedz  ed	<   eed
<   dZed         ed<   ee         ed<   eed<   eed<   eed<   ee         ed<   eed<   eed<   eed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   ed         ed<   eed<   dZedz  ed<   dZedz  ed<   ed         ed<   dZ e!dz  ed <   dZ"edz  ed!<    edd"#          Z#e$dz  ed$<    edd%#          Z%e$dz  ed&<    e&d&d'(          d)             Z' e&d$d'(          d*             Z(e)	 	 	 d1d+e*d,e+d-ed.edee         ded e!dz  d$e$dz  d&e$dz  d/d fd0            Z,dS )2ResponsesResponsec                  $    dt                       S r   r4   rC   rD   rE   r   zResponsesResponse.<lambda>w  s    ,CKMM,C,C rD   r9   idc                  B    t          t          j                              S r   )r@   timerC   rD   rE   r   zResponsesResponse.<lambda>x  s    C	4D4D rD   
created_atNincomplete_detailsrq   rt   ru   responseobjectoutputrw   r   r   r   r   rm   rr   rs   rx   ry   rz   r|   r   statusr   r   r   r   usager   zBIf enable_response_messages, we can show raw token input to model.r   input_messageszCIf enable_response_messages, we can show raw token output of model.output_messagesr   )	when_usedc                      t          |          S r   r`   r   r_   _infos      rE   serialize_output_messagesz+ResponsesResponse.serialize_output_messages      !$'''rD   c                      t          |          S r   r   r   s      rE   serialize_input_messagesz*ResponsesResponse.serialize_input_messages  r   rD   requestsampling_params
model_namecreated_timer   c
                    d }
|dk    rt          d          }
 | di d|j        d|d|
d|j        d|j        d	|d
|d|d|	d|j        d|j        d|j        d|j        d|j        d|j	        d|j
        d|j        d|j        d|j        d|j        d|j        d|d|j        d|j        d|j        d|j        d|S )N
incompleterr   )reasonr   r   r   rq   rt   ru   r   r   r   rw   r   r   r   r   rm   rs   rx   ry   rz   r   r   r   r   r   r   r   rC   )r$   r   rq   rt   rw   r   r   r   r   rm   r   rs   rx   ry   rz   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   s              rE   from_requestzResponsesResponse.from_request  s    8<\!!!2:M!N!N!N s 
 
 
!!
#|
  21
 !--	

 %%
 *
 6
 *>
 ,O
 !( ; ;
 (33
  ++
 --
 "''
 ))
  .88!
" #11#
$ ")!=!=%
& >>'
( '')
* !--+
, 6-
. /
0 )111
2 ))3
4 5
6 %7
 	
rD   )NNN)-r=   r>   r?   r)   r   rh   rA   r   r@   r   r$   rq   rt   r'   r   r   rB   r   r   r   r%   r    rs   rx   ry   r   rz   r(   r   r   r"   r   r   rM   r   r   ri   r   r+   r   r   classmethodrl   r2   r   rC   rD   rE   r   r   v  s]        e$C$CDDDBDDDe,D,DEEEJEEE37)D0777#L#*### $Hho$$$JJJ",FGJ,,,#$$$$:LLL!%NC$J%%%'+#*+++$(FNT!((("&Iy4&&&HIIII&*D
t
#***#L#*###*++++"&E=4&&&D#* 9>P9 9 9N.5    :?Q: : :O/$6    '6:::( ( ;:(
 &&999( ( :9(  '+<@=A.
 .
!.
 (.
 	.

 .
 '(.
 .
 t#.
 3T9.
 4d:.
 
.
 .
 .
 [.
 .
 .
rD   r   c                   b    e Zd ZU eed<   	 eed<   	 eed<   	 eed<   	 eed<   	 ed         ed<   dS )	ResponseReasoningPartDoneEventcontent_indexitem_idoutput_indexpartsequence_numberzresponse.reasoning_part.donerf   Nr=   r>   r?   r@   rA   rh   ResponseReasoningTextContentr   rC   rD   rE   r   r     sl         5LLLGJ
&&&&(,
0
1111GGrD   r   c                   b    e Zd ZU eed<   	 eed<   	 eed<   	 eed<   	 eed<   	 ed         ed<   dS )	ResponseReasoningPartAddedEventr   r   r   r   r   zresponse.reasoning_part.addedrf   Nr   rC   rD   rE   r   r     sl         5LLLGJ
&&&&(,
1
2222HHrD   r   c                       e Zd ZU eed<   dS )r   r   Nr=   r>   r?   r   rA   rC   rD   rE   r   r              rD   r   c                       e Zd ZU eed<   dS )r   r   Nr  rC   rD   rE   r   r     r  rD   r   c                       e Zd ZU eed<   dS )r   r   Nr  rC   rD   rE   r   r     r  rD   r   StreamingResponsesResponse)Xr   typingr   r   r   openai.types.responsesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   OpenAIResponseCompletedEventr   OpenAIResponseCreatedEventr   OpenAIResponseInProgressEventopenai.types.responses.toolr    openai_harmonyr!   r   r"   ImportErrorr#   openai.types.responses.responser$   r%   .openai.types.responses.response_reasoning_itemr&   r   openai.types.sharedr'   r(   pydanticr)   r*   r+   r,   vllm.entrypoints.chat_utilsr-   'vllm.entrypoints.openai.engine.protocolr.   vllm.exceptionsr/   vllm.loggerr0   vllm.sampling_paramsr1   r2   r3   
vllm.utilsr5   r=   r   r7   rG   rM   rZ   r`   rb   rB   ri   rA   rj   rl   r   r   r   r  rC   rD   rE   <module>r     s    * * * * * * * * * *                                                 2      V U U U U U      - , , , , , : : : : : :V9999999 V V VUUUUUUUUV J I I I I I I I      4 3 3 3 3 3 3 3            C B B B B B      0 / / / / / # # # # # #         
 # " " " " "	X		D D D D D D D DI I I I I/ I I I    O   
% 
% 
%F F F? ? ? ? ? ? ? ? 		#$t,F'GG I    &<>P%P  P P Pm m m m m m m m`k
 k
 k
 k
 k
 k
 k
 k
`H H H H H_ H H H,I I I I Io I I I,         9               5               ;      
  ## "	"
 $$ ## && %% &	& %
% 11 00 ++ ** **  /!/" 3#3$ 0%0& )')( ()(* %+%, $-$ I     s   !A( (A65A6