fix(orchestrator): definisci prompt_library PRIMA di istanziare HypothesisAgent
Bug introdotto in b6f48e4: HypothesisAgent(prompt_library=prompt_library) era
chiamato a riga 109, ma prompt_library veniva definito a riga 123 -> NameError
a runtime quando run_phase1 viene eseguito.
Spostato il blocco di setup prompt_library + set_cognitive_styles PRIMA della
istanziazione di HypothesisAgent.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,16 +1,24 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import importlib.resources
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
from multi_swarm_core.cerbero.client import CerberoClient
|
||||
from multi_swarm_core.config import load_settings
|
||||
from multi_swarm_core.data.cerbero_ohlcv import CerberoOHLCVLoader, OHLCVRequest
|
||||
from multi_swarm_core.genome.hypothesis import ModelTier
|
||||
from multi_swarm_core.genome.prompt_library import PromptLibrary
|
||||
from multi_swarm_core.llm.client import LLMClient
|
||||
from multi_swarm_core.orchestrator.run import RunConfig, run_phase1
|
||||
|
||||
|
||||
def _default_prompt_library_path() -> Path:
|
||||
"""Default: prompts.json shippato col package strategy_crypto."""
|
||||
return Path(str(importlib.resources.files("strategy_crypto") / "prompts.json"))
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
p = argparse.ArgumentParser(description="Multi-Swarm Phase 1 runner")
|
||||
p.add_argument("--name", default="phase1-spike-001")
|
||||
@@ -96,6 +104,16 @@ def parse_args() -> argparse.Namespace:
|
||||
default=0.5,
|
||||
help="Multi-objective: peso IS (1-alpha = OOS). 1.0=solo IS, 0.5=bilanciato, 0.0=solo OOS",
|
||||
)
|
||||
p.add_argument(
|
||||
"--prompt-library",
|
||||
type=Path,
|
||||
default=None,
|
||||
help=(
|
||||
"Path al file JSON con stili cognitivi + direttive system_prompt. "
|
||||
"Default: strategy_crypto/prompts.json shippato col package. "
|
||||
"Schema: {styles: {<name>: {directive: <testo>}}}"
|
||||
),
|
||||
)
|
||||
return p.parse_args()
|
||||
|
||||
|
||||
@@ -103,6 +121,13 @@ def main() -> None:
|
||||
args = parse_args()
|
||||
settings = load_settings()
|
||||
|
||||
prompt_lib_path = args.prompt_library or _default_prompt_library_path()
|
||||
prompt_library = PromptLibrary.from_json(prompt_lib_path)
|
||||
print(
|
||||
f"PromptLibrary loaded from {prompt_lib_path}: "
|
||||
f"{len(prompt_library.styles)} stili ({', '.join(prompt_library.cognitive_styles)})"
|
||||
)
|
||||
|
||||
token = (
|
||||
settings.cerbero_mainnet_token.get_secret_value()
|
||||
if settings.cerbero_mainnet_token
|
||||
@@ -161,6 +186,7 @@ def main() -> None:
|
||||
wfa_top_k=args.wfa_top_k,
|
||||
eval_oos_during_loop=args.eval_oos_during_loop,
|
||||
fitness_combined_alpha=args.fitness_combined_alpha,
|
||||
prompt_library=prompt_library,
|
||||
)
|
||||
|
||||
run_id = run_phase1(cfg, ohlcv=ohlcv, llm=llm)
|
||||
|
||||
Reference in New Issue
Block a user