from __future__ import annotations import json from typing import List, Any from quiz.models import Quest from services.model_router import ModelRouter from services.json_parser import extract_json from config.prompts import QUEST_AGENT_SYSTEM class QuestAgent: def __init__(self, router: ModelRouter): self._router = router def generate(self, concepts: Any) -> List[Quest]: raw = self._router.reason(f"Generate quests from:\n{json.dumps(concepts)}", QUEST_AGENT_SYSTEM) try: data = extract_json(raw) except ValueError as exc: raise ValueError(f"QuestAgent: {exc}") from exc return [Quest(name=q["name"], topics=q.get("topics",[]), boss_topic=q.get("boss_topic",""), difficulty=q.get("difficulty","medium")) for q in data.get("quests",[])]