Watch-Dog-Env / demo_episodes.py
Mooizz's picture
Upload folder using huggingface_hub
5458af2 verified
import os
import sys
from pathlib import Path
import random
sys.path.insert(0, str(Path(__file__).resolve().parent))
# ============ GLOBAL CONFIG ============
OUTPUT_FILE = "demo_output.txt"
GAME_ID = "codenames" # "avalon", "cicero", or "codenames"
NUM_EPISODES = 1
DIFFICULTY = 2
TURNS_PER_EPISODE = 6
# =======================================
from server.watchdog_environment import WatchDogMultiTurnEnvironment
from models import MultiTurnAction
env = WatchDogMultiTurnEnvironment(game_id=GAME_ID, use_mutations=True, use_llm=True)
with open(OUTPUT_FILE, "w") as f:
f.write(f"Game: {GAME_ID} | Episodes: {NUM_EPISODES} | Difficulty: {DIFFICULTY}\n\n")
for ep in range(NUM_EPISODES):
env._state.current_level = DIFFICULTY
obs = env.reset(seed=ep + 42)
f.write(f"EPISODE {ep + 1}\n")
for turn in range(TURNS_PER_EPISODE):
if obs.phase == "done":
break
has_error = getattr(env, '_current_has_error', False)
error_detail = getattr(env, '_current_error_detail', None)
f.write(f"\n TURN {turn + 1}\n")
f.write(f" reward: {obs.reward}\n")
f.write(f" state: {obs.current_turn}\n")
f.write(f" has_mutation: {has_error}\n")
if has_error and error_detail:
f.write(f" mutation_type: {error_detail.get('type')}\n")
f.write(f" mutation_description: {error_detail.get('description')}\n")
f.write(f" ground_truth: {'FLAG' if has_error else 'PASS'}\n")
action = random.choice(["pass", "flag", "question"])
# action = "pass"
obs = env.step(MultiTurnAction(action_type=action))
f.write(f" action: {action}\n")
f.write(f"\n{'='*40}\n\n")
print(f"Episode {ep + 1} done")
print(f"Saved to {OUTPUT_FILE}")