22# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
33import os
44from abc import ABC , abstractmethod
5- from typing import TYPE_CHECKING , Any , Optional
6-
7- from openai_harmony import Message
5+ from typing import TYPE_CHECKING , Any
86
97from vllm .logger import init_logger
108
1513logger = init_logger (__name__ )
1614
1715
16+ def validate_gpt_oss_install ():
17+ """
18+ Check if the gpt-oss is installed and its version is at least 0.0.3.
19+ If not, raise an ImportError.
20+ """
21+ from importlib .metadata import PackageNotFoundError , version
22+
23+ from packaging .version import InvalidVersion , Version
24+
25+ try :
26+ pkg_version_str = version ("gpt_oss" ) # e.g., "0.0.5"
27+ pkg_version = Version (pkg_version_str )
28+ except PackageNotFoundError :
29+ raise ImportError ("Package 'gpt_oss' is not installed." ) from None
30+ except InvalidVersion as e :
31+ raise ImportError (
32+ f"Invalid version string for 'gpt_oss': { e } " ) from None
33+
34+ if pkg_version < Version ("0.0.3" ):
35+ raise ImportError (
36+ f"gpt_oss >= 0.0.3 is required, but { pkg_version } is installed."
37+ ) from None
38+
39+
1840class Tool (ABC ):
1941
2042 @abstractmethod
@@ -33,12 +55,14 @@ def __init__(self):
3355 return
3456
3557 try :
58+ validate_gpt_oss_install ()
3659 from gpt_oss .tools .simple_browser import SimpleBrowserTool
3760 from gpt_oss .tools .simple_browser .backend import ExaBackend
38- except ImportError :
61+ except ImportError as e :
3962 self .enabled = False
4063 logger .warning_once (
41- "gpt_oss is not installed, browsing is disabled" )
64+ "gpt_oss is not installed properly (%s), browsing is disabled" ,
65+ e )
4266 return
4367
4468 browser_backend = ExaBackend (source = "web" , api_key = exa_api_key )
@@ -65,23 +89,16 @@ def __init__(self):
6589 self .enabled = True
6690
6791 try :
92+ validate_gpt_oss_install ()
6893 from gpt_oss .tools .python_docker .docker_tool import PythonTool
69- except ImportError :
94+ except ImportError as e :
7095 self .enabled = False
7196 logger .warning_once (
72- "gpt_oss is not installed, code interpreter is disabled" )
97+ "gpt_oss is not installed properly (%s), code interpreter is "
98+ "disabled" , e )
7399 return
74100
75- # NOTE (Chen): as of gpt-oss 0.0.2, there is a bug in _make_response
76- # and we do the following monkey patch to fix it.
77- class PatchedGptOssPythonTool (PythonTool ):
78-
79- def _make_response (self ,
80- output : str ,
81- channel : Optional [str ] = None ) -> Message :
82- return super ()._make_response (output )
83-
84- self .python_tool = PatchedGptOssPythonTool ()
101+ self .python_tool = PythonTool ()
85102 logger .info_once ("Code interpreter tool initialized" )
86103
87104 async def get_result (self , context : "ConversationContext" ) -> Any :
0 commit comments