| |
| from fastapi import FastAPI, HTTPException |
| from fastapi.middleware.cors import CORSMiddleware |
| import gradio as gr |
| import numpy as np |
| from datetime import datetime |
|
|
| |
| 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") |
|
|
| |
| app.add_middleware( |
| CORSMiddleware, |
| allow_origins=["https://arf-frontend-sandy.vercel.app"], |
| allow_methods=["*"], |
| ) |
|
|
| |
| |
| |
| risk_engine = RiskEngine() |
|
|
| |
| faiss_index = create_faiss_index(dim=MemoryConstants.VECTOR_DIM) |
| memory = RAGGraphMemory(faiss_index) |
|
|
| |
| |
| |
| @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 |
| |