mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-11 18:10:15 +08:00
feat: optimize tool selection middleware to cache and reuse tool selection per agent run
- Refactor MoviePilotToolSelectorMiddleware to perform tool selection once per agent execution and cache the result in state, avoiding redundant LLM calls for each model round. - Add abefore_agent to select tools at the start of agent execution and store selected tool names in state. - Update awrap_model_call to reuse cached tool selection from state for subsequent model calls. - Enhance test coverage for tool selection caching and reuse logic. - Improve error logging in skill version extraction.
This commit is contained in:
@@ -56,10 +56,17 @@ class TestAgentSummarizationStreaming(unittest.TestCase):
|
||||
captured: dict = {}
|
||||
|
||||
class _FakeToolSelectorMiddleware:
|
||||
def __init__(self, model, max_tools, always_include=None):
|
||||
def __init__(
|
||||
self,
|
||||
model,
|
||||
max_tools,
|
||||
always_include=None,
|
||||
selection_tools=None,
|
||||
):
|
||||
self.model = model
|
||||
self.max_tools = max_tools
|
||||
self.always_include = always_include or []
|
||||
self.selection_tools = selection_tools or []
|
||||
|
||||
def _fake_create_agent(**kwargs):
|
||||
captured.update(kwargs)
|
||||
@@ -88,7 +95,7 @@ class TestAgentSummarizationStreaming(unittest.TestCase):
|
||||
),
|
||||
patch.object(
|
||||
agent_module,
|
||||
"LLMToolSelectorMiddleware",
|
||||
"MoviePilotToolSelectorMiddleware",
|
||||
_FakeToolSelectorMiddleware,
|
||||
),
|
||||
patch.object(agent_module, "create_agent", side_effect=_fake_create_agent),
|
||||
@@ -114,6 +121,7 @@ class TestAgentSummarizationStreaming(unittest.TestCase):
|
||||
"execute_command",
|
||||
],
|
||||
)
|
||||
self.assertEqual(tool_selector_middleware.selection_tools, fake_tools)
|
||||
|
||||
def test_non_streaming_agent_reuses_main_llm_for_summary(self):
|
||||
agent = agent_module.MoviePilotAgent(session_id="session-1", user_id="10001")
|
||||
|
||||
Reference in New Issue
Block a user