Spaces:
Sleeping
Sleeping
| """OKF Screener — Gradio Server entrypoint. | |
| Serves a custom HTML frontend and exposes a single streaming API endpoint | |
| that runs three compliance-checking lanes (RAG, CSV, OKF) concurrently. | |
| """ | |
| import json | |
| import os | |
| import sys | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| os.environ.setdefault("GRADIO_ANALYTICS_ENABLED", "False") | |
| _ROOT = os.path.dirname(os.path.abspath(__file__)) | |
| if _ROOT not in sys.path: | |
| sys.path.insert(0, _ROOT) | |
| import gradio as gr | |
| from fastapi import Request | |
| from fastapi.responses import FileResponse, JSONResponse, StreamingResponse | |
| from backend.race import race_events | |
| app = gr.Server() | |
| _DIST = os.path.join(_ROOT, "frontend", "dist") | |
| async def race_stream(request: Request): | |
| """Stream NDJSON events from the three-lane compliance race.""" | |
| try: | |
| body = await request.json() | |
| except Exception: | |
| body = {} | |
| query = body.get("query", "").strip() | |
| model_id = body.get("model_id", "meta-llama/Llama-3.3-70B-Instruct").strip() | |
| def generate(): | |
| try: | |
| for event in race_events(query, model_id): | |
| yield json.dumps(event, ensure_ascii=True) + "\n" | |
| except Exception as exc: | |
| yield json.dumps({"type": "error", "message": str(exc)}) + "\n" | |
| return StreamingResponse( | |
| generate(), | |
| media_type="application/x-ndjson", | |
| headers={"Cache-Control": "no-store"}, | |
| ) | |
| def index(): | |
| path = os.path.join(_DIST, "index.html") | |
| if os.path.isfile(path): | |
| return FileResponse(path) | |
| return JSONResponse({"error": "Frontend not built."}, status_code=503) | |
| if __name__ == "__main__": | |
| app.launch( | |
| server_name="0.0.0.0", | |
| server_port=int(os.environ.get("PORT", "7860")), | |
| show_error=True, | |
| ) | |