from functools import lru_cache from pathlib import Path from openai import AsyncOpenAI from app.config import settings PROMPTS_DIR = Path(__file__).parent / "prompts" @lru_cache def get_dm_system_prompt() -> str: return (PROMPTS_DIR / "dm_system_prompt.txt").read_text(encoding="utf-8") @lru_cache def get_game_setup_prompt() -> str: return (PROMPTS_DIR / "game_setup_prompt.txt").read_text(encoding="utf-8") @lru_cache def get_llm_client() -> AsyncOpenAI: return AsyncOpenAI(api_key=settings.xai_api_key, base_url=settings.xai_base_url)