Buckets:

hf-doc-build/doc-dev / openenv /pr_749 /en /guides /first-environment.md
HuggingFaceDocBuilder's picture
|
download
raw
1.8 kB

Your First Environment

This page is a condensed preview. For the end-to-end walk-through — including Docker packaging, openenv.yaml, and Hugging Face Space deployment — see the full environment builder guide.

Overview

Building an OpenEnv environment involves:

  1. Define your models - Action, Observation, and State types
  2. Implement the environment - Core logic in a Python class
  3. Create the server - FastAPI wrapper for HTTP access
  4. Package for deployment - Docker container and manifest

Quick Example

Here's a minimal environment that echoes back messages. Reward and done are fields on the Observationstep returns an observation, not a tuple.

from openenv.core.env_server.interfaces import Environment
from openenv.core.env_server.types import Action, Observation, State

class EchoAction(Action):
    message: str

class EchoObservation(Observation):
    echo: str

class EchoState(State):
    last_message: str = ""

class EchoEnvironment(Environment[EchoAction, EchoObservation, EchoState]):
    def reset(self, seed=None, episode_id=None, **kwargs) -> EchoObservation:
        self._state = EchoState()
        return EchoObservation(echo="Ready!")

    def step(self, action: EchoAction, timeout_s=None, **kwargs) -> EchoObservation:
        self._state.last_message = action.message
        return EchoObservation(echo=action.message, reward=0.0, done=False)

    @property
    def state(self) -> EchoState:
        return self._state

Next Steps

Xet Storage Details

Size:
1.8 kB
·
Xet hash:
3f5f770e8243516b11f934da69f538768f944bbda5871cb95ca9202568b55367

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.