Spaces:
Sleeping
Sleeping
| """Quick repro: load the goblinV1 GGUF vision model and cast on a doodle. | |
| Usage: uv run --extra gguf python scripts/test_vision_cast.py | |
| Env knobs: RG_GGUF_CTX, RG_GGUF_GPU_LAYERS, RG_GGUF_N_BATCH | |
| """ | |
| import os | |
| import sys | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parent.parent | |
| sys.path.insert(0, str(ROOT / "src")) | |
| os.environ.setdefault("RG_USE_MODEL", "1") | |
| os.environ.setdefault( | |
| "RG_VISION_MODEL", str(ROOT / "models/goblinV1-gguf/gguf/rune-goblin-v46-Q4_K_M.gguf")) | |
| os.environ.setdefault( | |
| "RG_VISION_MMPROJ", str(ROOT / "models/goblinV1-gguf/gguf/rune-goblin-v46-mmproj-f16.gguf")) | |
| from PIL import Image, ImageDraw # noqa: E402 | |
| from rune_goblin.engine import GameState # noqa: E402 | |
| from rune_goblin.vision_inference import cast_vision_spell # noqa: E402 | |
| def doodle() -> Image.Image: | |
| img = Image.new("RGB", (320, 320), "#efe1bd") | |
| d = ImageDraw.Draw(img) | |
| # crude spiral | |
| import math | |
| pts = [(160 + math.cos(a / 4) * (5 + a * 1.4), 160 + math.sin(a / 4) * (5 + a * 1.4)) | |
| for a in range(80)] | |
| d.line(pts, fill="#17120b", width=6) | |
| return img | |
| state = GameState(player_hp=12, player_max_hp=12, enemy_name="Mirror Fungus", | |
| enemy_hp=5, enemy_max_hp=5, room_mood="damp", inventory=("wet candle",), | |
| courage=5) | |
| res = cast_vision_spell(state, doodle(), room_name="Goblin Toll Road", use_model=True) | |
| print("DETECTED:", res.visual_reading.detected_runes) | |
| print("NOTES:", res.visual_reading.notes) | |
| print("SPELL:", res.spell.spell_name, "|", res.spell.effect) | |