Files
Multi_Swarm_Coevolutive/tests/unit/test_genome_hypothesis.py
T
Adriano 33d8e275e7 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>
2026-05-10 09:18:57 +02:00

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