petter2025's picture
Update hf_demo.py
d31d438 verified
raw
history blame
2.2 kB
# hf_demo.py – ARF v4 API with Memory & Health Check
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import gradio as gr
import numpy as np
from datetime import datetime
# ARF v4 imports
from agentic_reliability_framework.core.governance.risk_engine import RiskEngine
from agentic_reliability_framework.runtime.memory import create_faiss_index, RAGGraphMemory
from agentic_reliability_framework.runtime.memory.constants import MemoryConstants
app = FastAPI(title="ARF v4 API with Memory")
# Enable CORS for your frontend
app.add_middleware(
CORSMiddleware,
allow_origins=["https://arf-frontend-sandy.vercel.app"],
allow_methods=["*"],
)
# ---------------------------------------------------------------------------
# Initialize ARF components
# ---------------------------------------------------------------------------
risk_engine = RiskEngine()
# Create FAISS index and memory (using default dimension from constants)
faiss_index = create_faiss_index(dim=MemoryConstants.VECTOR_DIM)
memory = RAGGraphMemory(faiss_index)
# ---------------------------------------------------------------------------
# API Endpoints
# ---------------------------------------------------------------------------
@app.get("/")
async def root():
return {
"service": "ARF OSS API",
"version": "4.0.0",
"status": "operational",
"memory_stats": memory.get_graph_stats() if memory.has_historical_data() else "empty"
}
@app.get("/health")
async def health():
return {"status": "ok", "version": "4.0.0"}
@app.get("/api/v1/get_risk")
async def get_risk():
risk_score = risk_engine.get_current_risk()
return {
"system_risk": risk_score.mean,
"status": "critical" if risk_score.mean > 0.8 else "normal"
}
@app.post("/api/v1/incident")
async def store_incident(event_data: dict, analysis: dict):
try:
incident_id = memory.store_incident(event_data, analysis)
return {"incident_id": incident_id}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/api/v1/memory/similar")
async def find_similar_incidents(action: str, k