Spaces:
Running
Running
Upload folder using huggingface_hub
Browse files- Dockerfile +17 -17
- client.py +2 -2
- models.py +1 -1
- server/app.py +3 -6
- server/browsergym_environment.py +2 -2
- server/start.sh +1 -1
Dockerfile
CHANGED
|
@@ -1,5 +1,8 @@
|
|
| 1 |
-
|
| 2 |
-
FROM
|
|
|
|
|
|
|
|
|
|
| 3 |
|
| 4 |
# Install system dependencies for Playwright and browsers
|
| 5 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
@@ -27,29 +30,22 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
| 27 |
# Additional dependencies
|
| 28 |
git \
|
| 29 |
wget \
|
|
|
|
| 30 |
&& rm -rf /var/lib/apt/lists/*
|
| 31 |
|
| 32 |
-
#
|
| 33 |
-
COPY
|
| 34 |
-
|
| 35 |
-
|
|
|
|
| 36 |
|
| 37 |
# Install Playwright browsers (Chromium by default)
|
| 38 |
RUN playwright install chromium
|
| 39 |
|
| 40 |
# Install MiniWoB++ tasks
|
| 41 |
-
RUN pip install browsergym-miniwob
|
| 42 |
RUN git clone --depth 1 https://github.com/Farama-Foundation/miniwob-plusplus.git /app/miniwob-plusplus
|
| 43 |
|
| 44 |
-
# Copy OpenEnv core and browsergym_env code
|
| 45 |
-
WORKDIR /app
|
| 46 |
-
COPY src/core/ /app/src/core/
|
| 47 |
-
COPY src/envs/browsergym_env/ /app/src/envs/browsergym_env/
|
| 48 |
-
COPY src/envs/browsergym_env/README.md /app/README.md
|
| 49 |
-
RUN chmod +x /app/src/envs/browsergym_env/server/start.sh
|
| 50 |
-
|
| 51 |
# Set environment variables
|
| 52 |
-
ENV PYTHONPATH=/app/src
|
| 53 |
ENV PYTHONUNBUFFERED=1
|
| 54 |
ENV BROWSERGYM_BENCHMARK=miniwob
|
| 55 |
ENV BROWSERGYM_TASK_NAME="click-test"
|
|
@@ -57,9 +53,11 @@ ENV BROWSERGYM_HEADLESS=true
|
|
| 57 |
ENV BROWSERGYM_VIEWPORT_WIDTH=1280
|
| 58 |
ENV BROWSERGYM_VIEWPORT_HEIGHT=720
|
| 59 |
ENV BROWSERGYM_TIMEOUT=10000
|
|
|
|
| 60 |
ENV MINIWOB_HTML_DIR=/app/miniwob-plusplus/miniwob/html
|
| 61 |
ENV MINIWOB_HTTP_PORT=8888
|
| 62 |
ENV MINIWOB_URL=http://127.0.0.1:8888/miniwob/
|
|
|
|
| 63 |
|
| 64 |
# For WebArena tasks, these should be set by the user when running the container:
|
| 65 |
# ENV SHOPPING=
|
|
@@ -70,11 +68,13 @@ ENV MINIWOB_URL=http://127.0.0.1:8888/miniwob/
|
|
| 70 |
# ENV WIKIPEDIA=
|
| 71 |
# ENV HOMEPAGE=
|
| 72 |
|
|
|
|
| 73 |
EXPOSE 8000
|
| 74 |
EXPOSE 8888
|
| 75 |
|
|
|
|
| 76 |
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
|
| 77 |
CMD curl -f http://localhost:8000/health || exit 1
|
| 78 |
|
| 79 |
-
|
| 80 |
-
CMD ["/app/
|
|
|
|
| 1 |
+
# Use public Python base image for HuggingFace compatibility
|
| 2 |
+
FROM python:3.11-slim
|
| 3 |
+
|
| 4 |
+
# Set working directory
|
| 5 |
+
WORKDIR /app/env
|
| 6 |
|
| 7 |
# Install system dependencies for Playwright and browsers
|
| 8 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
|
| 30 |
# Additional dependencies
|
| 31 |
git \
|
| 32 |
wget \
|
| 33 |
+
curl \
|
| 34 |
&& rm -rf /var/lib/apt/lists/*
|
| 35 |
|
| 36 |
+
# Copy environment files first (for better caching)
|
| 37 |
+
COPY . .
|
| 38 |
+
|
| 39 |
+
# Install Python dependencies using pip install -e . (from pyproject.toml)
|
| 40 |
+
RUN pip install --no-cache-dir -e .
|
| 41 |
|
| 42 |
# Install Playwright browsers (Chromium by default)
|
| 43 |
RUN playwright install chromium
|
| 44 |
|
| 45 |
# Install MiniWoB++ tasks
|
|
|
|
| 46 |
RUN git clone --depth 1 https://github.com/Farama-Foundation/miniwob-plusplus.git /app/miniwob-plusplus
|
| 47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
# Set environment variables
|
|
|
|
| 49 |
ENV PYTHONUNBUFFERED=1
|
| 50 |
ENV BROWSERGYM_BENCHMARK=miniwob
|
| 51 |
ENV BROWSERGYM_TASK_NAME="click-test"
|
|
|
|
| 53 |
ENV BROWSERGYM_VIEWPORT_WIDTH=1280
|
| 54 |
ENV BROWSERGYM_VIEWPORT_HEIGHT=720
|
| 55 |
ENV BROWSERGYM_TIMEOUT=10000
|
| 56 |
+
ENV BROWSERGYM_PORT=8000
|
| 57 |
ENV MINIWOB_HTML_DIR=/app/miniwob-plusplus/miniwob/html
|
| 58 |
ENV MINIWOB_HTTP_PORT=8888
|
| 59 |
ENV MINIWOB_URL=http://127.0.0.1:8888/miniwob/
|
| 60 |
+
ENV ENABLE_WEB_INTERFACE=true
|
| 61 |
|
| 62 |
# For WebArena tasks, these should be set by the user when running the container:
|
| 63 |
# ENV SHOPPING=
|
|
|
|
| 68 |
# ENV WIKIPEDIA=
|
| 69 |
# ENV HOMEPAGE=
|
| 70 |
|
| 71 |
+
# Expose ports
|
| 72 |
EXPOSE 8000
|
| 73 |
EXPOSE 8888
|
| 74 |
|
| 75 |
+
# Health check
|
| 76 |
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
|
| 77 |
CMD curl -f http://localhost:8000/health || exit 1
|
| 78 |
|
| 79 |
+
# Run the server using the start script
|
| 80 |
+
CMD ["/app/env/server/start.sh"]
|
client.py
CHANGED
|
@@ -2,8 +2,8 @@
|
|
| 2 |
|
| 3 |
from typing import Any, Dict
|
| 4 |
|
| 5 |
-
from
|
| 6 |
-
from
|
| 7 |
BrowserGymAction,
|
| 8 |
BrowserGymObservation,
|
| 9 |
BrowserGymState,
|
|
|
|
| 2 |
|
| 3 |
from typing import Any, Dict
|
| 4 |
|
| 5 |
+
from openenv_core.http_env_client import HTTPEnvClient, StepResult
|
| 6 |
+
from browsergym_env.models import (
|
| 7 |
BrowserGymAction,
|
| 8 |
BrowserGymObservation,
|
| 9 |
BrowserGymState,
|
models.py
CHANGED
|
@@ -8,7 +8,7 @@ and more under a single Gymnasium-compatible API.
|
|
| 8 |
from dataclasses import dataclass
|
| 9 |
from typing import List, Optional
|
| 10 |
|
| 11 |
-
from
|
| 12 |
|
| 13 |
|
| 14 |
@dataclass(kw_only=True)
|
|
|
|
| 8 |
from dataclasses import dataclass
|
| 9 |
from typing import List, Optional
|
| 10 |
|
| 11 |
+
from openenv_core.env_server.types import Action, Observation, State
|
| 12 |
|
| 13 |
|
| 14 |
@dataclass(kw_only=True)
|
server/app.py
CHANGED
|
@@ -2,12 +2,9 @@
|
|
| 2 |
|
| 3 |
import os
|
| 4 |
|
| 5 |
-
from
|
| 6 |
-
from
|
| 7 |
-
|
| 8 |
-
BrowserGymObservation,
|
| 9 |
-
)
|
| 10 |
-
from envs.browsergym_env.server.browsergym_environment import BrowserGymEnvironment
|
| 11 |
|
| 12 |
# Get configuration from environment variables
|
| 13 |
benchmark = os.environ.get("BROWSERGYM_BENCHMARK", "miniwob")
|
|
|
|
| 2 |
|
| 3 |
import os
|
| 4 |
|
| 5 |
+
from openenv_core.env_server.http_server import create_app
|
| 6 |
+
from browsergym_env.models import BrowserGymAction, BrowserGymObservation
|
| 7 |
+
from browsergym_env.server.browsergym_environment import BrowserGymEnvironment
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
# Get configuration from environment variables
|
| 10 |
benchmark = os.environ.get("BROWSERGYM_BENCHMARK", "miniwob")
|
server/browsergym_environment.py
CHANGED
|
@@ -15,8 +15,8 @@ from uuid import uuid4
|
|
| 15 |
|
| 16 |
import gymnasium as gym
|
| 17 |
|
| 18 |
-
from
|
| 19 |
-
from
|
| 20 |
BrowserGymAction,
|
| 21 |
BrowserGymObservation,
|
| 22 |
BrowserGymState,
|
|
|
|
| 15 |
|
| 16 |
import gymnasium as gym
|
| 17 |
|
| 18 |
+
from openenv_core.env_server.interfaces import Environment
|
| 19 |
+
from browsergym_env.models import (
|
| 20 |
BrowserGymAction,
|
| 21 |
BrowserGymObservation,
|
| 22 |
BrowserGymState,
|
server/start.sh
CHANGED
|
@@ -25,5 +25,5 @@ cleanup() {
|
|
| 25 |
|
| 26 |
trap cleanup EXIT INT TERM
|
| 27 |
|
| 28 |
-
exec python -m uvicorn
|
| 29 |
|
|
|
|
| 25 |
|
| 26 |
trap cleanup EXIT INT TERM
|
| 27 |
|
| 28 |
+
exec python -m uvicorn browsergym_env.server.app:app --host 0.0.0.0 --port "${BROWSERGYM_PORT}"
|
| 29 |
|