|
import os
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class SandboxConfig(BaseModel):
|
|
"""Configuration for the sandbox.
|
|
|
|
Attributes:
|
|
remote_runtime_api_url: The hostname for the Remote Runtime API.
|
|
local_runtime_url: The default hostname for the local runtime. You may want to change to http://host.docker.internal for DIND environments
|
|
base_container_image: The base container image from which to build the runtime image.
|
|
runtime_container_image: The runtime container image to use.
|
|
user_id: The user ID for the sandbox.
|
|
timeout: The timeout for the default sandbox action execution.
|
|
remote_runtime_init_timeout: The timeout for the remote runtime to start.
|
|
enable_auto_lint: Whether to enable auto-lint.
|
|
use_host_network: Whether to use the host network.
|
|
initialize_plugins: Whether to initialize plugins.
|
|
force_rebuild_runtime: Whether to force rebuild the runtime image.
|
|
runtime_extra_deps: The extra dependencies to install in the runtime image (typically used for evaluation).
|
|
This will be rendered into the end of the Dockerfile that builds the runtime image.
|
|
It can contain any valid shell commands (e.g., pip install numpy).
|
|
The path to the interpreter is available as $OH_INTERPRETER_PATH,
|
|
which can be used to install dependencies for the OH-specific Python interpreter.
|
|
runtime_startup_env_vars: The environment variables to set at the launch of the runtime.
|
|
This is a dictionary of key-value pairs.
|
|
This is useful for setting environment variables that are needed by the runtime.
|
|
For example, for specifying the base url of website for browsergym evaluation.
|
|
browsergym_eval_env: The BrowserGym environment to use for evaluation.
|
|
Default is None for general purpose browsing. Check evaluation/miniwob and evaluation/webarena for examples.
|
|
platform: The platform on which the image should be built. Default is None.
|
|
remote_runtime_resource_factor: Factor to scale the resource allocation for remote runtime.
|
|
Must be one of [1, 2, 4, 8]. Will only be used if the runtime is remote.
|
|
enable_gpu: Whether to enable GPU.
|
|
docker_runtime_kwargs: Additional keyword arguments to pass to the Docker runtime when running containers.
|
|
This should be a JSON string that will be parsed into a dictionary.
|
|
"""
|
|
|
|
remote_runtime_api_url: str = Field(default='http://localhost:8000')
|
|
local_runtime_url: str = Field(default='http://localhost')
|
|
keep_runtime_alive: bool = Field(default=False)
|
|
rm_all_containers: bool = Field(default=False)
|
|
api_key: str | None = Field(default=None)
|
|
base_container_image: str = Field(
|
|
default='nikolaik/python-nodejs:python3.12-nodejs22'
|
|
)
|
|
runtime_container_image: str | None = Field(default=None)
|
|
user_id: int = Field(default=os.getuid() if hasattr(os, 'getuid') else 1000)
|
|
timeout: int = Field(default=120)
|
|
remote_runtime_init_timeout: int = Field(default=180)
|
|
enable_auto_lint: bool = Field(
|
|
default=False
|
|
)
|
|
use_host_network: bool = Field(default=False)
|
|
runtime_extra_build_args: list[str] | None = Field(default=None)
|
|
initialize_plugins: bool = Field(default=True)
|
|
force_rebuild_runtime: bool = Field(default=False)
|
|
runtime_extra_deps: str | None = Field(default=None)
|
|
runtime_startup_env_vars: dict[str, str] = Field(default_factory=dict)
|
|
browsergym_eval_env: str | None = Field(default=None)
|
|
platform: str | None = Field(default=None)
|
|
close_delay: int = Field(default=900)
|
|
remote_runtime_resource_factor: int = Field(default=1)
|
|
enable_gpu: bool = Field(default=False)
|
|
docker_runtime_kwargs: str | None = Field(default=None)
|
|
|
|
model_config = {'extra': 'forbid'}
|
|
|