
    .`i              
       6   d dl Z d dlmZ d dl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mZ d d	lmZ d d
l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  e j         e!          Z" G d d          Z#dedeegef         de$e         dede#f
dZ%dS )    N)Callable)ResponseFunctionToolCallResponseOutputItem)"ResponseFunctionToolCallOutputItem)McpCall)ResponseOutputMessage)ResponseOutputText)ContentResponseReasoningItem)
MCP_PREFIX)ResponseInputOutputItemResponsesRequest)CompletionOutput)ReasoningParser)TokenizerLike)
ToolParser)random_uuidc                       e Zd ZdZdedeegef         dee         de	deege
f         dz  f
dZd	ed
d fdZd
ee         fdZdS )ResponsesParserzAIncremental parser over completion tokens with reasoning support.	tokenizerreasoning_parser_clsresponse_messagesrequesttool_parser_clsNc                    || _         t          |          | _        || _        || _         ||          | _        d | _        | ||          | _        d | _        d S )N)r   lennum_init_messagesr   r   reasoning_parser_instancetool_parser_instancefinish_reason)selfr   r   r   r   r   s         /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/entrypoints/openai/parser/responses_parser.py__init__zResponsesParser.__init__#   ss      	 "%%6!7!7")=)=i)H)H&$(!&(7	(B(BD% *.    outputreturnc                    |j         | _         | j                            |j        | j                  \  }}|rJ| j                            t          ddt                       g t          d|          g                     g }| j
        u| j
                            ||nd| j                  }|N|j        rG|                    d |j        D                        |j        }|r|                                dk    rd }|rM| j                            t#          d	d
t                       ddt%          g d|d           g                     t'          |          dk    r| j                            |           | S )N)r   	reasoningrs_reasoning_text)typetext)r+   idsummarycontent c           	   3      K   | ]K}t          d t                       dt                       dd|j        j        |j        j                  V  LdS )fc_call_function_call	completed)r-   call_idr+   statusname	argumentsN)r   r   functionr8   r9   ).0	tool_calls     r"   	<genexpr>z*ResponsesParser.process.<locals>.<genexpr>Z   s}       
& 
& " -000 7 7 7,*&/4"+"4">  
& 
& 
& 
& 
& 
&r$   messagemsg_r5   	assistantoutput_text)annotationsr+   r,   logprobs)r+   r-   r7   roler/   r   )r    r   extract_reasoningr,   r   r   appendr   r   r
   r   extract_tool_callstools_calledextend
tool_callsr/   stripr   r	   r   )r!   r%   reasoning_contentr/   function_callstool_call_infos         r"   processzResponsesParser.process<   s   #1%)%C%U%UK &V &
 &
"7  	"))%$,[]],,!1!2  	
 
 
   :<$0!6II".B J  N )n.I)%% 
& 
& &4%>
& 
& 
& 
 
 
 )0 #w}}"44"G 	"))%"-kmm--&$*(*!.!(%)	        ~""")).999r$   c           
         | j         | j        d         }g }|D ]}t          |t                    s|                    |           -t          |          dk    rt          d          t          |d         t                    rVt          t           t                       |d         j        |d         j        |d         j        dd|j                  }||d<   |S )z:Given a list of sentences, construct ResponseOutput Items.Nr   z=Cannot have a FunctionToolCallOutput before FunctionToolCall.mcp_callr5   )r-   r9   r8   server_labelr+   r7   r%   )r   r   
isinstancer   rF   r   
ValueErrorr   r   r   r   r9   r8   r%   )r!   r   output_messagesr>   mcp_messages        r"   0make_response_output_items_from_parsable_contextz@ResponsesParser.make_response_output_items_from_parsable_context   s    !243I3K3KL46( 	6 	6Gg'IJJ 6&&w////''1,,$W   ob13KLL 6")(9+--99"1""5"?,R05%4&'*&~# # #K +6OB'r$   )__name__
__module____qualname____doc__r   r   r   listr   r   r   r#   r   rO   r   rX    r$   r"   r   r       s        KK. !. ''GH	.
   78. ". "=/:"=>E. . . .2A. A3D A A A AF	 	!     r$   r   r   r   r   r   r&   c                 *    t          | ||||          S )zFactory function to create a ResponsesParser with
    optional reasoning parser.

    Returns:
        ResponsesParser instance configured with the provided parser
    r   r   r   r   r   )r   r`   s        r"   'get_responses_parser_for_simple_contextra      s*     1+'   r$   )&loggingcollections.abcr   openai.types.responsesr   r   >openai.types.responses.response_function_tool_call_output_itemr   +openai.types.responses.response_output_itemr   .openai.types.responses.response_output_messager   +openai.types.responses.response_output_textr	   .openai.types.responses.response_reasoning_itemr
   r   vllm.entrypoints.constantsr   *vllm.entrypoints.openai.responses.protocolr   r   vllm.outputsr   $vllm.reasoning.abs_reasoning_parsersr   vllm.tokenizersr   &vllm.tool_parsers.abstract_tool_parserr   
vllm.utilsr   	getLoggerrY   loggerr   r]   ra   r^   r$   r"   <module>rs      s    $ $ $ $ $ $ O O O O O O O O      @ ? ? ? ? ? P P P P P P J J J J J J       
 2 1 1 1 1 1        * ) ) ) ) ) @ @ @ @ @ @ ) ) ) ) ) ) = = = = = = " " " " " "		8	$	$| | | | | | | |~ #M?O#CD 34	
       r$   