File size: 1,334 Bytes
38336e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from fastapi import HTTPException
from pydantic import BaseModel
from openenv.core.env_server.http_server import create_app
from models import RevOpsAction, RevOpsObservation
from server.environment import RevOpsEnvironment
import subprocess
app = create_app(
RevOpsEnvironment,
RevOpsAction,
RevOpsObservation,
env_name="RevOps-Agent",
max_concurrent_envs=1
)
@app.post("/baseline")
@app.get("/baseline")
def run_baseline():
try:
result = subprocess.run(["python", "baseline.py"], capture_output=True, text=True)
return {"output": result.stdout, "error": result.stderr}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/grader")
def get_grader():
import server.environment as env_module
return {"grader_score": getattr(env_module, "global_last_grader_score", None)}
@app.get("/tasks")
def get_tasks_endpoint():
schema = RevOpsAction.model_json_schema()
return {
"tasks": ["task_easy", "task_medium", "task_hard"],
"action_schema": schema
}
def main(host: str = "0.0.0.0", port: int = 8000):
import uvicorn
uvicorn.run("server.app:app", host=host, port=port)
if __name__ == '__main__':
main()
|