
    -`i                         d dl Z d dlZd dlmZmZ d dlmZ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 erd dlmZ  ee          Zd	Zd
 Z G d de          Z G d de          Z G d de          ZdS )    N)ABCabstractmethod)TYPE_CHECKINGAny)"ResponseFunctionToolCallOutputItem)AuthorMessageRoleTextContent)init_logger)random_uuid)ConversationContextz0.0.7c                     ddl m} m} ddlm}m} 	  |d          } ||          }n4# | $ r t          d          d|$ r}t          d|           dd}~ww xY w| |t                    k     rt          dt           d	| d
          ddS )zp
    Check if the gpt-oss is installed and its version is at least 0.0.7.
    If not, raise an ImportError.
    r   )PackageNotFoundErrorversion)InvalidVersionVersiongpt_ossz#Package 'gpt_oss' is not installed.Nz&Invalid version string for 'gpt_oss': zgpt_oss >= z is required, but z is installed.)importlib.metadatar   r   packaging.versionr   r   ImportErrorMIN_GPT_OSS_VERSION)r   r   r   r   pkg_version_strpkg_versiones          m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/entrypoints/mcp/tool.pyvalidate_gpt_oss_installr      s   
 A@@@@@@@99999999R!'),,go.. K K K?@@dJ R R RF1FFGGTQR WW01111/- / // / /
 
 	 21s   ) AAAc                   N    e Zd Zedddefd            Zedddefd            ZdS )Toolcontextr   returnc                 
   K   d S N selfr    s     r   
get_resultzTool.get_result2             c                 
   K   d S r#   r$   r%   s     r   get_result_parsable_contextz Tool.get_result_parsable_context6   r(   r)   N)__name__
__module____qualname__r   r   r'   r+   r$   r)   r   r   r   1   sq        (= #    ^ 9N SV    ^  r)   r   c                   P    e Zd Zd ZdddefdZdddefdZedefd            ZdS )	HarmonyBrowserToolc                    d| _         t          j        d          }|s#d| _         t                              d           d S 	 t                       ddlm} ddlm	} n:# t          $ r-}d| _         t                              d|           Y d }~d S d }~ww xY w |d	|
          } ||          | _        t                              d           d S )NTEXA_API_KEYFz,EXA_API_KEY is not set, browsing is disabledr   )SimpleBrowserTool)
ExaBackendz<gpt_oss is not installed properly (%s), browsing is disabledweb)sourceapi_key)backendzBrowser tool initialized)enabledosgetenvloggerwarning_oncer   gpt_oss.tools.simple_browserr3   $gpt_oss.tools.simple_browser.backendr4   r   browser_tool	info_once)r&   exa_api_keyr3   r4   r   browser_backends         r   __init__zHarmonyBrowserTool.__init__<   s   i.. 	 DL NOOOF		$&&&FFFFFFGGGGGGG 	 	 	 DLNPQ   FFFFF	 %*E;GGG--oFFF344444s   A 
B'"BBr    r   r!   c                    K   ddl m} t          ||          sJ |j        d         }g }| j                            |          2 3 d {V }|                    |           6 |S Nr   )HarmonyContext))vllm.entrypoints.openai.responses.contextrG   
isinstancemessagesr@   processappendr&   r    rG   last_msgtool_output_msgsmsgs         r   r'   zHarmonyBrowserTool.get_resultS   s      LLLLLL'>22222#B'*228<< 	) 	) 	) 	) 	) 	) 	)###C(((( =   A!c                 $   K   t          d          )NzNot implemented yet)NotImplementedErrorr%   s     r   r+   z.HarmonyBrowserTool.get_result_parsable_context]   s      !"7888r)   c                     | j         j        S r#   )r@   tool_configr&   s    r   rV   zHarmonyBrowserTool.tool_config`   s     ,,r)   N)	r,   r-   r.   rD   r   r'   r+   propertyrV   r$   r)   r   r0   r0   ;   s        5 5 5. (=  #        99N 9SV 9 9 9 9 -S - - - X- - -r)   r0   c                   V    e Zd Zd Zd ZdddefdZdddefdZedefd            Z	d	S )
HarmonyPythonToolc                     d| _         	 t                       ddlm} n:# t          $ r-}d| _         t
                              d|           Y d }~d S d }~ww xY w |            | _        d S )NTr   )
PythonToolFzDgpt_oss is not installed properly (%s), code interpreter is disabled)r9   r   'gpt_oss.tools.python_docker.docker_toolr\   r   r<   r=   python_tool)r&   r\   r   s      r   rD   zHarmonyPythonTool.__init__f   s    		$&&&JJJJJJJ 	 	 	 DLV   FFFFF	 &:<<s    
A"AAc                   K   | j         sd S 	 t          t          t          j                  t          d          gddd          }g }| j                            |          2 3 d {V }|                    |           6 |d         j	        d         j
        d	k    sJ n:# t          $ r-}d
| _         t                              d|           Y d }~d S d }~ww xY wt                              d           d S )N)rolezprint('Hello, world!')textanalysispythoncodeauthorcontentchannel	recipientcontent_typer   zHello, world!
FzMCode interpreter tool failed to initialize (%s), code interpreter is disabledz!Code interpreter tool initialized)r9   r	   r   r
   	ASSISTANTr   r^   rL   rM   rh   rb   	Exceptionr<   r=   rA   )r&   messagemsgsrQ   r   s        r   validatezHarmonyPythonTool.validatev   sH     | 	F	4>222$*BCCCD""#  G D!-55g>> ! ! ! ! ! ! !cC     ?7?1%*.?????? 	 	 	 DL*  
 FFFFF	 	<=====s$   AB! $B*6B! !
C+"CCr    r   r!   c                    K   ddl m} t          ||          sJ |j        d         }g }| j                            |          2 3 d {V }|                    |           6 |S rF   )rI   rG   rJ   rK   r^   rL   rM   rN   s         r   r'   zHarmonyPythonTool.get_result   s      LLLLLL'>22222#B')11(;; 	) 	) 	) 	) 	) 	) 	)###C(((( <rR   c                   K   ddl m} t          ||          sJ |j        j        d         }t          j        |j                  }t          t          dd          t          |d                   gd	d
d          }g }| j                            |          2 3 d{V }t          dt                       ddt                       |j        d         j        d          }|                    |           _6 |S )z
        This function converts parsable context types to harmony and
        back so we can use GPTOSS demo python tool
        r   )ParsableContextrH   	assistantN)r`   namere   ra   rc   rd   rf   fco_function_call_outputcall_	completed)idtypecall_idoutputstatus)rI   rs   rJ   parserresponse_messagesjsonloads	argumentsr	   r   r   r^   rL   r   r   rh   rb   rM   )	r&   r    rs   rO   argslast_msg_harmonyrP   rQ   	processeds	            r   r+   z-HarmonyPythonTool.get_result_parsable_context   sB     
 	NMMMMM'?33333>3B7z(,--"{666 d6l3334
 
 
 )112BCC 	/ 	/ 	/ 	/ 	/ 	/ 	/#:)+--))+///{1~*"  I ##I.... D  s   C9c                     | j         j        S r#   )r^   rV   rW   s    r   rV   zHarmonyPythonTool.tool_config   s    ++r)   N)
r,   r-   r.   rD   rp   r   r'   r+   rX   rV   r$   r)   r   rZ   rZ   e   s        ( ( ( > > >2 (=  #         9N  SV        @ ,S , , , X, , ,r)   rZ   )r   r:   abcr   r   typingr   r   >openai.types.responses.response_function_tool_call_output_itemr   openai_harmonyr   r	   r
   r   vllm.loggerr   
vllm.utilsr   rI   r   r,   r<   r   r   r   r0   rZ   r$   r)   r   <module>r      s    				 # # # # # # # # % % % % % % % %      > = = = = = = = = = = = # # # # # # " " " " " " NMMMMMM	X		   0    3   '- '- '- '- '- '- '- '-TV, V, V, V, V, V, V, V, V, V,r)   