| """GBNF loader. We use the built-in JSON grammar from llama.cpp because the | |
| full Pydantic schema produces a very large GBNF that slows sampling. | |
| For production we keep a moderate JSON grammar; the fine-tuned model is the | |
| real guarantee of schema-correctness.""" | |
| from llama_cpp import LlamaGrammar | |
| import pathlib | |
| _GBNF = pathlib.Path(__file__).parent / "elysium_schema.gbnf" | |
| def load_grammar(): | |
| if _GBNF.exists(): | |
| try: | |
| return LlamaGrammar.from_string(_GBNF.read_text()) | |
| except Exception as e: | |
| print(f"[grammar] load failed: {e}") | |
| return None | |