
    .`iu                     4   d dl Z d dlmZ d dlZd dlmZ d dlmZ d dl	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  ee          Z ej        d	ej                  Z ej        d
ej                  Z ej        dej                  Z G d de          ZdS )    N)Sequence)make_tool_call_id)ChatCompletionRequest)DeltaFunctionCallDeltaMessageDeltaToolCallExtractedToolCallInformationFunctionCallToolCall)init_logger)TokenizerLike)
ToolParserz(function call(?:<\|role_sep\|>\n)?(\{.*)z"name"\s*:\s*"([^"]*)"z"arguments"\s*:\s*(.*)c                        e Zd Zdef fdZdede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 )GigaChat3ToolParser	tokenizerc                     t                                          |           d| _        d| _        d | _        g | _        d| _        d| _        d S )NF zfunction call{)super__init__tool_startedtool_name_senttool_idprev_tool_call_arrcontent_buffertrigger_start)selfr   	__class__s     {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/tool_parsers/gigachat3_tool_parser.pyr   zGigaChat3ToolParser.__init__,   sP    ###"'$)#'.0#%-    model_outputrequestreturnc                    t                               |          }|st          dg |          S |                    d                                          }	 t          j        |          }n'# t
          j        $ r t          dg |          cY S w xY wt          |t                    rd|v rd|v st          dg |          S |d         }|d         }t          |t                    st          j        |d          }t          dt          ||          	          g}|d |                                         }	|	r(|	                                r|	                                nd }
t          d
||
          S )NF)tools_called
tool_callscontent   name	arguments)ensure_asciifunction)r(   r)   )typer+   T)REGEX_FUNCTION_CALLsearchr	   groupstripjsonloadsJSONDecodeError
isinstancedictstrdumpsr   r
   startrstrip)r   r    r!   matchjson_candidatedatar(   argsr%   prefixr&   s              r   extract_tool_callsz&GigaChat3ToolParser.extract_tool_calls5   s   
 $**<88 	/"$   
 Q--//	:n--DD# 	 	 	/"$     	 4&& 	6T>>kT>Q>Q/"$   
 F|K $$$ 	8:d777D %"    

 oo.%+HH&--///D+!
 
 
 	
s   A, ,!BBprevious_textcurrent_text
delta_textprevious_token_idscurrent_token_idsdelta_token_idsNc           
      >   d }d }	| j         st                              |          }
|
rd| _         d| _        n| xj        |z  c_        | j                                        }| j                            |          }|                    | j                  }|s|rd S | j        }d| _        t          |          S t                              |          }
|
sd S |
                    d          	                                }t                              |          }|r|                    d          }t                              |          }|r|                    d          	                                }	|	                    d          rI	 |	d d         	                                }t          j        |           |}	n# t          j        $ r Y nw xY w| j        s| j                            i            | j        sx|sd S d| _        t'                      | _        || j        d         d<   t          t+          d| j        d	t-          |
                              d                    gd           S |	d S | j        d                             dd          }|s|	}n/|	                    |          r|	t3          |          d          }nd S |sd S |	| j        d         d<   t          t+          dt-          |                              d                    gd           S )NTr   )r&   r'   }r   r(   r+   )r(   )exclude_none)indexidr,   r+   )r%   r&   r)   )r)   )rJ   r+   )r   r-   r.   r   lstripr   
startswithr   r/   r0   
NAME_REGEX
ARGS_REGEXendswithr1   r2   r3   r   appendr   r   r   r   r   
model_dumpgetlen)r   r@   rA   rB   rC   rD   rE   r!   	func_namecur_argsr:   clean_buffer	is_prefixstarts_with_trigger
flush_text	json_tail
name_match
args_match	candidate	prev_args
delta_argss                        r   extract_tool_calls_streamingz0GigaChat3ToolParser.extract_tool_calls_streamingg   s    	  	<'..|<<E <$(!&(####z1###299;; .99,GG	&2&=&=d>P&Q&Q# < 3 <4!%!4J*,D''
;;;;#**<88 	4KKNN((**	&&y11
 	,"((++I&&y11
 	!''**0022H  %%  (" 3 3 5 5IJy)))(HH+   D& 	/#**2..." 	 t"&D,..DL1:D#A&v.!<'!2!*" " "$*$*77  	     4+A.22;CC	 	!JJ  ++ 	!#i.."2"23JJ4 	42:";/.",   jdj33	   

 

 

 
	
s   2F: :GG)__name__
__module____qualname__r   r   r6   r   r	   r?   r   intr   ra   __classcell__)r   s   @r   r   r   +   s        .- . . . . . .0
0
 '0
 
&	0
 0
 0
 0
dY
Y
 Y
 	Y

 %SMY
 $C=Y
 "#Y
 'Y
 
	Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
r   r   )r1   collections.abcr   regexrevllm.entrypoints.chat_utilsr   0vllm.entrypoints.openai.chat_completion.protocolr   'vllm.entrypoints.openai.engine.protocolr   r   r   r	   r
   r   vllm.loggerr   vllm.tokenizersr   &vllm.tool_parsers.abstract_tool_parserr   rb   loggercompileDOTALLr-   rN   rO   r    r   r   <module>rt      s    $ $ $ $ $ $     9 9 9 9 9 9                     $ # # # # # ) ) ) ) ) ) = = = = = =	X		 bj/I  
 RZI 

 RZI 
U
 U
 U
 U
 U
* U
 U
 U
 U
 U
r   