Create env.py
Browse files
env.py
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gymnasium as gym
|
| 2 |
+
from envhub.envs.core.base_env import EnvHubEnv
|
| 3 |
+
from envhub.registry import register_env
|
| 4 |
+
|
| 5 |
+
# MiniWoB imports
|
| 6 |
+
try:
|
| 7 |
+
import miniwob
|
| 8 |
+
except ImportError:
|
| 9 |
+
raise ImportError("Please install MiniWoB: `pip install miniwob`")
|
| 10 |
+
|
| 11 |
+
@register_env("browser/miniwob_click_button")
|
| 12 |
+
def load_env(task: str = "click-button", max_episode_steps: int = 50, **kwargs):
|
| 13 |
+
"""
|
| 14 |
+
Loader for a MiniWoB browser interaction environment.
|
| 15 |
+
|
| 16 |
+
Args:
|
| 17 |
+
task (str): MiniWoB task name (e.g., "click-button", "book-flight", "choose-date").
|
| 18 |
+
max_episode_steps (int): maximum number of steps per episode.
|
| 19 |
+
kwargs: additional arguments passed to gym.make()
|
| 20 |
+
|
| 21 |
+
Returns:
|
| 22 |
+
EnvHubEnv: unified environment wrapper.
|
| 23 |
+
"""
|
| 24 |
+
|
| 25 |
+
# compose the MiniWoB env ID (e.g. "miniwob/click-button-v1")
|
| 26 |
+
env_id = f"miniwob/{task}-v1"
|
| 27 |
+
|
| 28 |
+
# Make the environment
|
| 29 |
+
env = gym.make(env_id, max_episode_steps=max_episode_steps, **kwargs)
|
| 30 |
+
|
| 31 |
+
# Wrap it as an EnvHubEnv
|
| 32 |
+
return EnvHubEnv(
|
| 33 |
+
env=env,
|
| 34 |
+
name=f"browser/{task}",
|
| 35 |
+
observation_space=env.observation_space,
|
| 36 |
+
action_space=env.action_space,
|
| 37 |
+
)
|