feat: implement three-tier metabolic LLM router (Refs #966)
- Add MetabolicRouter routing tasks to T1/T2/T3 model tiers based on complexity classification - classify_complexity() assigns cheapest-sufficient tier using keyword matching and game state signals (stuck, active quests, dialogue) - build_prompt() assembles OpenAI-compatible message lists from game/UI state - T3 (Qwen3-32B) pauses the game world before inference and unpauses in a finally block (graceful if no world adapter) - Fix: narrow "what should" phrase to "what should i do" to avoid misclassifying dialogue tasks as T3 - Add pytestmark=pytest.mark.unit so tests run in tox -e unit - Export all public symbols via infrastructure/router/__init__.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -62,7 +62,7 @@ _T3_KEYWORDS = frozenset(
|
||||
"recover", "multi-step", "long-term", "negotiate", "persuade",
|
||||
"faction", "reputation", "best", "optimal", "recommend",
|
||||
"analyze", "analyse", "evaluate", "decide", "complex", "how do i",
|
||||
"what should", "help me figure", "what is the best",
|
||||
"what should i do", "help me figure", "what is the best",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ from unittest.mock import AsyncMock, MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
from infrastructure.router.metabolic import (
|
||||
DEFAULT_TIER_MODELS,
|
||||
MetabolicRouter,
|
||||
|
||||
Reference in New Issue
Block a user