org-sim / org_sim /server /app.py
mohansshf's picture
OrgSim environment — Team Clawless submission
3c1aa59
Raw
History Blame Contribute Delete
1.4 kB
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
# BSD-style license
"""FastAPI application for the OrgSim Environment."""
import os
from fastapi import FastAPI
from openenv.core.env_server.http_server import create_app
from ..models import OrgAction, OrgObservation, OrgState
from .org_environment import OrgSimEnvironment, TASK_IDS
_env: OrgSimEnvironment | None = None
def get_env() -> OrgSimEnvironment:
global _env
if _env is None:
max_steps = int(os.getenv("ORGSIM_MAX_STEPS", "50"))
_env = OrgSimEnvironment(max_steps=max_steps)
return _env
def create_orgsim_app() -> FastAPI:
"""Create the OrgSim FastAPI app with /grade and /tasks endpoints."""
app = create_app(
get_env,
OrgAction,
OrgObservation,
env_name="org_sim",
)
@app.get("/tasks")
def list_tasks():
"""List available task IDs for enumeration by automated validator."""
return {"tasks": TASK_IDS}
@app.get("/grade")
def grade_episode():
"""Return current episode grade (call after done=True)."""
env = get_env()
score = env.grade_episode()
return {"score": score, "task_id": env._current_task_id}
return app
app = create_orgsim_app()
def main():
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
if __name__ == "__main__":
main()