Spaces:
Sleeping
Sleeping
File size: 1,469 Bytes
72e2b6e | 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 | from fastapi import APIRouter, HTTPException, Request
from api.schemas import ABStatsResponse, DriftResponse
from src.monitoring.drift import (
get_confidence_drift,
get_drift_summary,
get_oos_rate_drift,
load_current_data,
load_reference_data,
run_drift_report,
)
router = APIRouter()
@router.get("/monitoring/drift", response_model=DriftResponse)
def get_drift() -> DriftResponse:
try:
reference_df = load_reference_data()
current_df = load_current_data()
except FileNotFoundError as e:
raise HTTPException(status_code=404, detail=str(e))
snapshot = run_drift_report(reference_df, current_df)
drift_summary = get_drift_summary(snapshot)
confidence_drift = get_confidence_drift(reference_df, current_df)
oos_rate_drift = get_oos_rate_drift(reference_df, current_df)
return DriftResponse(
drift_summary=drift_summary,
confidence_drift=confidence_drift,
oos_rate_drift=oos_rate_drift,
)
@router.get("/monitoring/ab-stats", response_model=ABStatsResponse)
def get_ab_stats(request: Request) -> ABStatsResponse:
ab_router = request.app.state.ab_router
stats = ab_router.get_stats()
return ABStatsResponse(**stats)
@router.post("/monitoring/reset")
def reset_monitoring(request: Request) -> dict:
ab_router = request.app.state.ab_router
ab_router.reset_stats()
return {"status": "reset"}
|