Spaces:
Sleeping
Sleeping
| """Minimal usage stub for the Carrom environment + Green Agent evaluator.""" | |
| import random | |
| from carrom_env.env import CarromEnv | |
| from carrom_env.models import Action | |
| from carrom_env.green_agent import GreenCarromAgent, Task | |
| def random_action(): | |
| return Action( | |
| placement_x=random.uniform(-0.2, 0.2), | |
| angle=random.uniform(-0.5, 0.5), | |
| force=random.uniform(0.2, 1.0), | |
| spin=0.0, | |
| ) | |
| def random_policy(obs): | |
| return random_action() | |
| def main(): | |
| # Method 1: Direct env usage | |
| env = CarromEnv(seed=0) | |
| obs = env.reset() | |
| total_reward = 0.0 | |
| for _ in range(50): | |
| action = random_action() | |
| obs, reward, terminated, truncated, info = env.step(action) | |
| total_reward += reward | |
| if terminated or truncated: | |
| break | |
| print("Direct env:", {"reward": total_reward, "turns": info.get("turn_count")}) | |
| # Method 2: Green Agent (evaluator) — purple agent vs. task suite | |
| # The purple agent here is random_policy; green agent defines tasks & scores. | |
| evaluator = GreenCarromAgent(tasks=[ | |
| Task(task_id="demo_easy", seed=0, max_turns=15, tier="easy"), | |
| Task(task_id="demo_standard", seed=1, max_turns=30, tier="standard"), | |
| ]) | |
| report = evaluator.evaluate(random_policy, verbose=True) | |
| print("\nGreen Agent scorecard:", report.summary()) | |
| print("By tier:", report.by_tier()) | |
| # Method 3: Text actions (for LLM agents) | |
| env = CarromEnv(seed=42) | |
| obs = env.reset() | |
| text_action = Action( | |
| action_type="text", | |
| text="aim at queen_0 with strong force from center", | |
| ) | |
| obs, reward, _, _, info = env.step(text_action) | |
| print(f"\nText action: reward={reward:.3f}, coins_potted={info['coin_potted']}") | |
| if __name__ == "__main__": | |
| main() | |