o
    )iw                     @   s   d dl Z d dlmZmZ d dlmZmZ d dlmZ er"d dl	m
Z
 eeZdd ZG dd	 d	eZG d
d deZG dd deZdS )    N)ABCabstractmethod)TYPE_CHECKINGAny)init_logger)ConversationContextc               
   C   s   ddl m} m} ddlm}m} z
|d}||}W n | y&   tdd |y9 } ztd| dd}~ww ||dk rItd	| d
ddS )zp
    Check if the gpt-oss is installed and its version is at least 0.0.3.
    If not, raise an ImportError.
    r   )PackageNotFoundErrorversion)InvalidVersionVersionZgpt_ossz#Package 'gpt_oss' is not installed.Nz&Invalid version string for 'gpt_oss': z0.0.3z"gpt_oss >= 0.0.3 is required, but z is installed.)importlib.metadatar   r	   Zpackaging.versionr
   r   ImportError)r   r	   r
   r   Zpkg_version_strZpkg_versione r   a/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/entrypoints/tool.pyvalidate_gpt_oss_install   s,   

r   c                   @   s"   e Zd ZedddefddZdS )Toolcontextr   returnc                    s   d S Nr   )selfr   r   r   r   
get_result*   s   zTool.get_resultN)__name__
__module____qualname__r   r   r   r   r   r   r   r   (   s    r   c                   @   8   e Zd Zdd ZdddefddZedefdd	Zd
S )HarmonyBrowserToolc              
   C   s   d| _ td}|sd| _ td d S zt  ddlm} ddlm	} W n t
yA } zd| _ td| W Y d }~d S d }~ww |d	|d
}||d| _td d S )NTZEXA_API_KEYFz,EXA_API_KEY is not set, browsing is disabledr   )SimpleBrowserTool)
ExaBackendz<gpt_oss is not installed properly (%s), browsing is disabledZweb)sourceZapi_key)backendzBrowser tool initialized)enabledosgetenvloggerwarning_oncer   Zgpt_oss.tools.simple_browserr   Z$gpt_oss.tools.simple_browser.backendr   r   browser_tool	info_once)r   Zexa_api_keyr   r   r   Zbrowser_backendr   r   r   __init__1   s,   

zHarmonyBrowserTool.__init__r   r   r   c                    T   ddl m} t||sJ |jd }g }| j|2 z3 d H W }|| q6 |S Nr   )HarmonyContext)vllm.entrypoints.contextr+   
isinstancemessagesr&   processappendr   r   r+   Zlast_msgZtool_output_msgsmsgr   r   r   r   H      
zHarmonyBrowserTool.get_resultc                 C      | j jS r   )r&   tool_configr   r   r   r   r6   Q      zHarmonyBrowserTool.tool_configNr   r   r   r(   r   r   propertyr6   r   r   r   r   r   /   s
    	r   c                   @   r   )HarmonyPythonToolc              
   C   sl   d| _ zt  ddlm} W n ty* } zd| _ td| W Y d }~d S d }~ww | | _td d S )NTr   )
PythonToolFzDgpt_oss is not installed properly (%s), code interpreter is disabledz!Code interpreter tool initialized)	r!   r   Z'gpt_oss.tools.python_docker.docker_toolr<   r   r$   r%   python_toolr'   )r   r<   r   r   r   r   r(   X   s   zHarmonyPythonTool.__init__r   r   r   c                    r)   r*   )r-   r+   r.   r/   r=   r0   r1   r2   r   r   r   r   h   r4   zHarmonyPythonTool.get_resultc                 C   r5   r   )r=   r6   r7   r   r   r   r6   q   r8   zHarmonyPythonTool.tool_configNr9   r   r   r   r   r;   V   s
    	r;   )r"   abcr   r   typingr   r   Zvllm.loggerr   r-   r   r   r$   r   r   r   r;   r   r   r   r   <module>   s   '