Skip to content

Commit a795883

Browse files
committed
lazy init mcp session
Signed-off-by: wuhang <wuhang6@huawei.com>
1 parent 2fe095c commit a795883

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

vllm/entrypoints/context.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,15 @@ def __init__(
153153
messages: list,
154154
available_tools: list[str],
155155
tool_server: Optional[ToolServer],
156+
request_id: str,
156157
):
157158
self._messages = messages
158159
self.finish_reason: Optional[str] = None
159160
self.available_tools = available_tools
160161
self._tool_sessions: dict[str, Union[ClientSession, Tool]] = {}
161162
self.called_tools: set[str] = set()
162163
self._tool_server = tool_server
164+
self.request_id = request_id
163165
self._async_exit_stack: Optional[AsyncExitStack] = None
164166
self._reference_count = 0
165167
self._reference_count_lock = asyncio.Lock()
@@ -307,18 +309,6 @@ def need_builtin_tool_call(self) -> bool:
307309
or recipient.startswith("container.")
308310
)
309311

310-
async def _get_tool_session(self, tool_name: str) -> Union["ClientSession", Tool]:
311-
if tool_name not in self._tool_sessions and self._tool_server is not None:
312-
assert self._async_exit_stack is not None, (
313-
"Async exit stack not set. Please report this issue."
314-
)
315-
self._tool_sessions[
316-
tool_name
317-
] = await self._async_exit_stack.enter_async_context(
318-
self._tool_server.new_session(tool_name)
319-
)
320-
return self._tool_sessions[tool_name]
321-
322312
async def call_tool(self) -> list[Message]:
323313
if not self.messages:
324314
return []
@@ -342,6 +332,18 @@ async def call_tool(self) -> list[Message]:
342332
def render_for_completion(self) -> list[int]:
343333
return render_for_completion(self.messages)
344334

335+
async def _get_tool_session(self, tool_name: str) -> Union["ClientSession", Tool]:
336+
if tool_name not in self._tool_sessions and self._tool_server is not None:
337+
assert self._async_exit_stack is not None, (
338+
"Async exit stack not set. Please report this issue."
339+
)
340+
self._tool_sessions[
341+
tool_name
342+
] = await self._async_exit_stack.enter_async_context(
343+
self._tool_server.new_session(tool_name, self.request_id)
344+
)
345+
return self._tool_sessions[tool_name]
346+
345347
async def call_search_tool(
346348
self, tool_session: Union["ClientSession", Tool], last_msg: Message
347349
) -> list[Message]:

vllm/entrypoints/openai/serving_responses.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,11 +364,17 @@ async def create_responses(
364364
if self.use_harmony:
365365
if request.stream:
366366
context = StreamingHarmonyContext(
367-
messages, available_tools, self.tool_server
367+
messages,
368+
available_tools,
369+
self.tool_server,
370+
request.request_id,
368371
)
369372
else:
370373
context = HarmonyContext(
371-
messages, available_tools, self.tool_server
374+
messages,
375+
available_tools,
376+
self.tool_server,
377+
request.request_id,
372378
)
373379
else:
374380
context = SimpleContext()

0 commit comments

Comments
 (0)