ledgershield / server /app.py
king673134's picture
Upload folder using huggingface_hub
4945417 verified
Raw
History Blame Contribute Delete
2.34 kB
from __future__ import annotations
import json
import os
from pathlib import Path
import importlib
import sys
from typing import Any
if __package__ in {None, ""}:
repo_root = str(Path(__file__).resolve().parents[1])
if repo_root not in sys.path:
sys.path.insert(0, repo_root)
import uvicorn
from models import LedgerShieldAction, LedgerShieldObservation
from openenv_compat import create_fastapi_app
if __package__ in {None, ""}:
from server.environment import LedgerShieldEnvironment
else:
from .environment import LedgerShieldEnvironment
def _load_benchmark_report_module():
try:
return importlib.import_module("benchmark_report")
except ModuleNotFoundError:
return None
def build_app():
env = LedgerShieldEnvironment()
app = create_fastapi_app(env, LedgerShieldAction, LedgerShieldObservation)
@app.get("/leaderboard")
def leaderboard() -> dict[str, Any]:
benchmark_report = _load_benchmark_report_module()
if benchmark_report is None:
return {
"benchmark": "ledgershield-v3",
"generated_at": None,
"note": "benchmark_report.py is unavailable in this runtime image.",
"entries": [],
}
return benchmark_report.load_leaderboard_payload()
@app.get("/benchmark-report")
def latest_benchmark_report() -> dict[str, Any]:
benchmark_report = _load_benchmark_report_module()
if benchmark_report is None:
return {
"benchmark": "ledgershield-v3",
"generated_at": None,
"note": "benchmark_report.py is unavailable in this runtime image.",
}
report_path = benchmark_report.DEFAULT_REPORT_PATH
if report_path.exists():
return json.loads(report_path.read_text(encoding="utf-8"))
return {
"benchmark": "ledgershield-v3",
"generated_at": None,
"note": "No benchmark report artifact generated yet. Run benchmark_report.py to create one.",
}
return app
app = build_app()
def main() -> None:
host = os.getenv("HOST", "0.0.0.0")
port = int(os.getenv("PORT", "8000"))
uvicorn.run("server.app:app", host=host, port=port, reload=False)
if __name__ == "__main__":
main()