Skip to content

Commit 33fa7b8

Browse files
heheda12345FeiDaLI
authored andcommitted
[gpt-oss] Validate gpt-oss python tool during initialization (vllm-project#23856)
Signed-off-by: Chen Zhang <[email protected]>
1 parent 4698dde commit 33fa7b8

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

vllm/entrypoints/openai/api_server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1717,6 +1717,8 @@ async def init_app_state(
17171717

17181718
if args.tool_server == "demo":
17191719
tool_server: Optional[ToolServer] = DemoToolServer()
1720+
assert isinstance(tool_server, DemoToolServer)
1721+
await tool_server.init_and_validate()
17201722
elif args.tool_server:
17211723
tool_server = MCPToolServer()
17221724
await tool_server.add_tool_server(args.tool_server)

vllm/entrypoints/tool.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from abc import ABC, abstractmethod
55
from typing import TYPE_CHECKING, Any
66

7+
from openai_harmony import Author, Message, Role, TextContent
8+
79
from vllm.logger import init_logger
810

911
if TYPE_CHECKING:
@@ -99,6 +101,28 @@ def __init__(self):
99101
return
100102

101103
self.python_tool = PythonTool()
104+
105+
async def validate(self):
106+
if not self.enabled:
107+
return
108+
try:
109+
message = Message(
110+
author=Author(role=Role.ASSISTANT),
111+
content=[TextContent(text="print('Hello, world!')")],
112+
channel="analysis",
113+
recipient="python",
114+
content_type="code",
115+
)
116+
msgs = []
117+
async for msg in self.python_tool.process(message):
118+
msgs.append(msg)
119+
assert msgs[0].content[0].text == "Hello, world!\n"
120+
except Exception as e:
121+
self.enabled = False
122+
logger.warning_once(
123+
"Code interpreter tool failed to initialize (%s), code "
124+
"interpreter is disabled", e)
125+
return
102126
logger.info_once("Code interpreter tool initialized")
103127

104128
async def get_result(self, context: "ConversationContext") -> Any:

vllm/entrypoints/tool_server.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,13 @@ class DemoToolServer(ToolServer):
162162

163163
def __init__(self):
164164
self.tools: dict[str, Tool] = {}
165+
166+
async def init_and_validate(self):
165167
browser_tool = HarmonyBrowserTool()
168+
python_tool = HarmonyPythonTool()
169+
await python_tool.validate()
166170
if browser_tool.enabled:
167171
self.tools["browser"] = browser_tool
168-
python_tool = HarmonyPythonTool()
169172
if python_tool.enabled:
170173
self.tools["python"] = python_tool
171174
logger.info("DemoToolServer initialized with tools: %s",

0 commit comments

Comments
 (0)