mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-13 04:22:35 +00:00
move tool processing into separate method
This commit is contained in:
parent
a0bdd7580d
commit
36eeb69232
1 changed files with 15 additions and 9 deletions
|
|
@ -117,14 +117,8 @@ class StreamingResponseOrchestrator:
|
||||||
|
|
||||||
yield OpenAIResponseObjectStreamResponseCreated(response=initial_response)
|
yield OpenAIResponseObjectStreamResponseCreated(response=initial_response)
|
||||||
|
|
||||||
# Handle all mcp tool lists from previous response that are still valid:
|
async for stream_event in self._process_tools(output_messages):
|
||||||
for tool in self.ctx.tool_context.previous_tool_listings:
|
yield stream_event
|
||||||
async for evt in self._reuse_mcp_list_tools(tool, output_messages):
|
|
||||||
yield evt
|
|
||||||
# Process all remaining tools (including MCP tools) and emit streaming events
|
|
||||||
if self.ctx.tool_context.tools_to_process:
|
|
||||||
async for stream_event in self._process_tools(self.ctx.tool_context.tools_to_process, output_messages):
|
|
||||||
yield stream_event
|
|
||||||
|
|
||||||
n_iter = 0
|
n_iter = 0
|
||||||
messages = self.ctx.messages.copy()
|
messages = self.ctx.messages.copy()
|
||||||
|
|
@ -533,7 +527,7 @@ class StreamingResponseOrchestrator:
|
||||||
sequence_number=self.sequence_number,
|
sequence_number=self.sequence_number,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def _process_tools(
|
async def _process_new_tools(
|
||||||
self, tools: list[OpenAIResponseInputTool], output_messages: list[OpenAIResponseOutput]
|
self, tools: list[OpenAIResponseInputTool], output_messages: list[OpenAIResponseOutput]
|
||||||
) -> AsyncIterator[OpenAIResponseObjectStream]:
|
) -> AsyncIterator[OpenAIResponseObjectStream]:
|
||||||
"""Process all tools and emit appropriate streaming events."""
|
"""Process all tools and emit appropriate streaming events."""
|
||||||
|
|
@ -649,6 +643,18 @@ class StreamingResponseOrchestrator:
|
||||||
logger.exception(f"Failed to list MCP tools from {mcp_tool.server_url}: {e}")
|
logger.exception(f"Failed to list MCP tools from {mcp_tool.server_url}: {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
async def _process_tools(
|
||||||
|
self, output_messages: list[OpenAIResponseOutput]
|
||||||
|
) -> AsyncIterator[OpenAIResponseObjectStream]:
|
||||||
|
# Handle all mcp tool lists from previous response that are still valid:
|
||||||
|
for tool in self.ctx.tool_context.previous_tool_listings:
|
||||||
|
async for evt in self._reuse_mcp_list_tools(tool, output_messages):
|
||||||
|
yield evt
|
||||||
|
# Process all remaining tools (including MCP tools) and emit streaming events
|
||||||
|
if self.ctx.tool_context.tools_to_process:
|
||||||
|
async for stream_event in self._process_new_tools(self.ctx.tool_context.tools_to_process, output_messages):
|
||||||
|
yield stream_event
|
||||||
|
|
||||||
def _approval_required(self, tool_name: str) -> bool:
|
def _approval_required(self, tool_name: str) -> bool:
|
||||||
if tool_name not in self.mcp_tool_to_server:
|
if tool_name not in self.mcp_tool_to_server:
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue