from fastapi import FastAPI, HTTPException from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse from pydantic import BaseModel from main import Guard import json import os from datetime import datetime app = FastAPI(title="Sentinell API", version="2.0") guard = Guard() # Data Models class PromptRequest(BaseModel): prompt: str class FeedbackRequest(BaseModel): prompt: str user_feedback: str @app.get("/") async def read_index(): return FileResponse('index.html') @app.post("/analyze") async def analyze_prompt(request: PromptRequest): try: analysis = guard.check_prompt(request.prompt) return {"analysis": analysis} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.post("/feedback") async def log_feedback(request: FeedbackRequest): log_entry = { "timestamp": datetime.now().isoformat(), "prompt": request.prompt, "type": request.user_feedback } with open("data/feedback_loop.json", "a") as f: f.write(json.dumps(log_entry) + "\n") return {"status": "success", "message": "Feedback received"}