@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 1116590b16
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 14, 05:30 UTC

[gpt-oss] Validate gpt-oss python tool during initialization (#23856)

Signed-off-by: Chen Zhang <zhangch99@outlook.com>

Chen Zhang committed Sep 9, 2025 at 01:37 UTC 1116590b16bca58672e63908cb728bbd50b81c6e
3 files changed +30 -1
vllm/entrypoints/openai/api_server.py
+2
@@ -1717,6 +1717,8 @@ async def init_app_state(
1717
1718 if args.tool_server == "demo":
1719 tool_server: Optional[ToolServer] = DemoToolServer()
1720 + assert isinstance(tool_server, DemoToolServer)
1721 + await tool_server.init_and_validate()
1722 elif args.tool_server:
1723 tool_server = MCPToolServer()
1724 await tool_server.add_tool_server(args.tool_server)
vllm/entrypoints/tool.py
+24
@@ -4,6 +4,8 @@ import os
4 from abc import ABC, abstractmethod
5 from typing import TYPE_CHECKING, Any
6
7 +from openai_harmony import Author, Message, Role, TextContent
8 +
9 from vllm.logger import init_logger
10
11 if TYPE_CHECKING:
@@ -99,6 +101,28 @@ class HarmonyPythonTool(Tool):
101 return
102
103 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
126 logger.info_once("Code interpreter tool initialized")
127
128 async def get_result(self, context: "ConversationContext") -> Any:
vllm/entrypoints/tool_server.py
+4 -1
@@ -162,10 +162,13 @@ class DemoToolServer(ToolServer):
162
163 def __init__(self):
164 self.tools: dict[str, Tool] = {}
165 +
166 + async def init_and_validate(self):
167 browser_tool = HarmonyBrowserTool()
168 + python_tool = HarmonyPythonTool()
169 + await python_tool.validate()
170 if browser_tool.enabled:
171 self.tools["browser"] = browser_tool
168 - python_tool = HarmonyPythonTool()
172 if python_tool.enabled:
173 self.tools["python"] = python_tool
174 logger.info("DemoToolServer initialized with tools: %s",