perf: Avoid repeated MCP queries during streaming responses (#6138)
This commit is contained in:
@@ -289,11 +289,11 @@ impl Agent {
|
|||||||
async fn categorize_tools(
|
async fn categorize_tools(
|
||||||
&self,
|
&self,
|
||||||
response: &Message,
|
response: &Message,
|
||||||
_tools: &[rmcp::model::Tool],
|
tools: &[rmcp::model::Tool],
|
||||||
) -> ToolCategorizeResult {
|
) -> ToolCategorizeResult {
|
||||||
// Categorize tool requests
|
// Categorize tool requests
|
||||||
let (frontend_requests, remaining_requests, filtered_response) =
|
let (frontend_requests, remaining_requests, filtered_response) =
|
||||||
self.categorize_tool_requests(response).await;
|
self.categorize_tool_requests(response, tools).await;
|
||||||
|
|
||||||
ToolCategorizeResult {
|
ToolCategorizeResult {
|
||||||
frontend_requests,
|
frontend_requests,
|
||||||
|
|||||||
@@ -270,9 +270,8 @@ impl Agent {
|
|||||||
pub(crate) async fn categorize_tool_requests(
|
pub(crate) async fn categorize_tool_requests(
|
||||||
&self,
|
&self,
|
||||||
response: &Message,
|
response: &Message,
|
||||||
|
tools: &[Tool],
|
||||||
) -> (Vec<ToolRequest>, Vec<ToolRequest>, Message) {
|
) -> (Vec<ToolRequest>, Vec<ToolRequest>, Message) {
|
||||||
let tools = self.list_tools(None).await;
|
|
||||||
|
|
||||||
// First collect all tool requests with coercion applied
|
// First collect all tool requests with coercion applied
|
||||||
let tool_requests: Vec<ToolRequest> = response
|
let tool_requests: Vec<ToolRequest> = response
|
||||||
.content
|
.content
|
||||||
|
|||||||
Reference in New Issue
Block a user