33d8e275e7
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>
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
from multi_swarm.genome.hypothesis import HypothesisAgentGenome, ModelTier
|
|
|
|
|
|
def test_genome_creation_defaults():
|
|
g = HypothesisAgentGenome(
|
|
system_prompt="Pensa come un fisico.",
|
|
feature_access=["close", "volume"],
|
|
temperature=0.9,
|
|
top_p=0.95,
|
|
model_tier=ModelTier.C,
|
|
lookback_window=200,
|
|
cognitive_style="physicist",
|
|
)
|
|
assert g.id is not None
|
|
assert g.parent_ids == []
|
|
assert g.generation == 0
|
|
|
|
|
|
def test_genome_serialization_roundtrip():
|
|
g = HypothesisAgentGenome(
|
|
system_prompt="Pensa come un biologo.",
|
|
feature_access=["close", "high", "low"],
|
|
temperature=1.1,
|
|
top_p=0.9,
|
|
model_tier=ModelTier.C,
|
|
lookback_window=300,
|
|
cognitive_style="biologist",
|
|
parent_ids=["abc"],
|
|
generation=5,
|
|
)
|
|
payload = g.to_dict()
|
|
g2 = HypothesisAgentGenome.from_dict(payload)
|
|
assert g2.system_prompt == g.system_prompt
|
|
assert g2.feature_access == g.feature_access
|
|
assert g2.temperature == g.temperature
|
|
assert g2.parent_ids == g.parent_ids
|
|
assert g2.generation == g.generation
|
|
assert g2.id == g.id
|
|
|
|
|
|
def test_genome_id_is_deterministic_on_content():
|
|
g1 = HypothesisAgentGenome(
|
|
system_prompt="X", feature_access=["close"], temperature=0.5,
|
|
top_p=0.9, model_tier=ModelTier.C, lookback_window=100, cognitive_style="x",
|
|
)
|
|
g2 = HypothesisAgentGenome(
|
|
system_prompt="X", feature_access=["close"], temperature=0.5,
|
|
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
|