Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException | |
| from pydantic import BaseModel | |
| from llama_cpp import Llama | |
| from functools import lru_cache | |
| import uvicorn | |
| # Initialize FastAPI app | |
| app = FastAPI() | |
| # Lazy load the Llama model | |
| def load_model(): | |
| try: | |
| return Llama.from_pretrained( | |
| repo_id="prithivMLmods/Llama-3.2-1B-GGUF", | |
| filename="Llama-3.2-1B.F16.gguf" | |
| ) | |
| except Exception as e: | |
| raise RuntimeError(f"Failed to load model: {e}") | |
| # Define request model for log data | |
| class LogRequest(BaseModel): | |
| log_data: str | |
| # Define response model | |
| class AnalysisResponse(BaseModel): | |
| analysis: str | |
| # Define the route for security log analysis | |
| async def analyze_security_logs(request: LogRequest): | |
| llm = load_model() | |
| try: | |
| # Security-focused prompt | |
| prompt = ( | |
| "Analyze the following network log data for any indicators of malicious activity, " | |
| "such as unusual IP addresses, unauthorized access attempts, data exfiltration, or anomalies. " | |
| "Provide details on potential threats, IPs involved, and suggest actions if any threats are detected.\n\n" | |
| f"{request.log_data}" | |
| ) | |
| # Generate response from the Llama model | |
| response = llm.create_chat_completion( | |
| messages=[ | |
| { | |
| "role": "user", | |
| "content": prompt | |
| } | |
| ] | |
| ) | |
| # Extract and return the analysis text | |
| analysis_text = response["choices"][0]["message"]["content"] | |
| return AnalysisResponse(analysis=analysis_text) | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| # Run the FastAPI app using uvicorn | |
| if __name__ == "__main__": | |
| uvicorn.run("app:app", host="0.0.0.0", port=8000, workers=4, reload=True) | |