
    .`i                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ erd d	lmZ neZ ee          Z G d
 de          ZdS )    N)Sequence)TYPE_CHECKING)ChatCompletionRequest)DeltaMessageExtractedToolCallInformationFunctionCallToolCall)parse_output_into_messages)init_logger)
ToolParser)TokenizerLikec                        e Zd Zd fdZ	 ddededee         dz  defd	Z	d
edededee         dee         dee         dede
dz  fdZ xZS )OpenAIToolParser	tokenizerr   c                 J    t                                          |           d S N)super__init__)selfr   	__class__s     x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/tool_parsers/openai_tool_parser.pyr   zOpenAIToolParser.__init__   s!    #####    Nmodel_outputrequest	token_idsreturnc                    |t          d          t          |          }g }d }d }t          |j                  dk    r9|j        D ]0}t          |j                  dk     r|j        d         j        }	|j        r|j                            d          r|j        r	d|j        v rY	 t          j
        t          j        |	                    }
n3# t          j        $ r t                              d           |	}
Y nw xY w|	}
|                    t!          dt#          |j                            d          d         |
          	                     |j        d
k    r|	}|j        dk    r	|j        s|	}2|j        r,|j        d
k    r|j        }n|j        dk    r|j        s|j        }t/          t          |          dk    ||p|          S )NzOOpenAIToolParser requires token IDs and does not support text-based extraction.r      z
functions.jsonz,Error decoding JSON tool call from response.function)name	arguments)typer    final
commentary)tools_called
tool_callscontent)NotImplementedErrorr
   lenmessagesr(   text	recipient
startswithcontent_typer   dumpsloadsJSONDecodeErrorlogger	exceptionappendr	   r   splitchannelcurrent_contentcurrent_channelcurrent_recipientr   )r   r   r   r   parserr'   final_contentcommentary_contentmsgmsg_text	tool_argss              r   extract_tool_callsz#OpenAIToolParser.extract_tool_calls"   s7    %a   ,I66
!v!## 2 2s{##a'';q>.= 2S]%=%=l%K%K 2 + -v9I/I/I1(,
4:h3G3G(H(HII#3 1 1 1",, N   )1III	1 %-	%% !+%1%(]%8%8%F%Fq%I*3& & &      [G++$,MM[L000)1& ! 	<%00 & 6&,66v?W6%+%;"+Z1,! "7%7
 
 
 	
s   '&C+C<;C<previous_textcurrent_text
delta_textprevious_token_idscurrent_token_idsdelta_token_idsc                      t          d          )Nz1Not being used, manual parsing in serving_chat.py)r)   )r   rB   rC   rD   rE   rF   rG   r   s           r   extract_tool_calls_streamingz-OpenAIToolParser.extract_tool_calls_streaminge   s     "?
 
 	
r   )r   r   r   )__name__
__module____qualname__r   strr   r   intr   rA   r   rI   __classcell__)r   s   @r   r   r      s       $ $ $ $ $ $ +/	A
 A
A
 'A
 C=4'	A

 
&A
 A
 A
 A
F

 
 	

 %SM
 $C=
 "#
 '
 
	
 
 
 
 
 
 
 
r   r   )r   collections.abcr   typingr   0vllm.entrypoints.openai.chat_completion.protocolr   'vllm.entrypoints.openai.engine.protocolr   r   r   r	   ,vllm.entrypoints.openai.parser.harmony_utilsr
   vllm.loggerr   &vllm.tool_parsers.abstract_tool_parserr   vllm.tokenizersr   objectrJ   r3   r    r   r   <module>rZ      sD    $ $ $ $ $ $                             T S S S S S # # # # # #       -------M	X		S
 S
 S
 S
 S
z S
 S
 S
 S
 S
r   