feat(llm): full multi-tier S/A/B/C/D with routing + pricing

Estende ModelTier a 5 livelli (S/A/B/C/D) con routing automatico:
S/A/B via Anthropic SDK, C/D via OpenRouter (OpenAI SDK). Aggiunge
prezzi per tier S (Opus), A (Sonnet placeholder) e D (Llama). Refactor
LLMClient.complete con dispatch tramite tier_models map e helper
_call_anthropic / _call_openrouter. Settings esposte per tutti e 5
i modelli env-configurabili.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-10 09:18:57 +02:00
parent 7482600146
commit 33d8e275e7
10 changed files with 241 additions and 36 deletions
+19
View File
@@ -48,3 +48,22 @@ def test_genome_id_is_deterministic_on_content():
top_p=0.9, model_tier=ModelTier.C, lookback_window=100, cognitive_style="x",
)
assert g1.id == g2.id
def test_genome_all_tiers_serde_roundtrip():
"""Tutti i 5 tier (S, A, B, C, D) sopravvivono a to_dict/from_dict."""
for tier in (ModelTier.S, ModelTier.A, ModelTier.B, ModelTier.C, ModelTier.D):
g = HypothesisAgentGenome(
system_prompt="prompt",
feature_access=["close"],
temperature=0.7,
top_p=0.9,
model_tier=tier,
lookback_window=128,
cognitive_style="generic",
)
payload = g.to_dict()
assert payload["model_tier"] == tier.value
g2 = HypothesisAgentGenome.from_dict(payload)
assert g2.model_tier == tier
assert g2.id == g.id