feat: implement three-tier metabolic LLM router (Refs #966)
Some checks failed
Tests / lint (pull_request) Failing after 13s
Tests / test (pull_request) Has been skipped

- 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:
Alexander Whitestone
2026-03-23 15:41:14 -04:00
parent d3336ff66e
commit c4a20f6776
2 changed files with 3 additions and 1 deletions

View File

@@ -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",
}
)

View File

@@ -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,