| |
| from fastapi import FastAPI |
| from pydantic import BaseModel |
| import numpy as np |
| from sklearn.ensemble import IsolationForest |
| import uvicorn |
|
|
| app = FastAPI(title="Omni-Node ML Engine") |
|
|
| |
| |
| baseline_data = np.random.normal(loc=[45.0, 16.0, 120.0], scale=[5.0, 2.0, 15.0], size=(1000, 3)) |
| clf = IsolationForest(n_estimators=100, contamination=0.05, random_state=42) |
| clf.fit(baseline_data) |
|
|
| class TelemetryPayload(BaseModel): |
| component_id: str |
| cpu_load: float |
| memory_usage: float |
| api_latency: float |
|
|
| @app.post("/api/v1/analyze") |
| async def analyze_telemetry(data: TelemetryPayload): |
| |
| current_state = np.array([[data.cpu_load, data.memory_usage, data.api_latency]]) |
| |
| |
| prediction = clf.predict(current_state)[0] |
| score = clf.decision_function(current_state)[0] |
| |
| is_critical = bool(prediction == -1) |
| |
| return { |
| "component_id": data.component_id, |
| "is_critical": is_critical, |
| "anomaly_score": round(float(score), 4), |
| "status": "REQUIRES_REMEDIATION" if is_critical else "NOMINAL" |
| } |
|
|
| if __name__ == "__main__": |
| uvicorn.run(app, host="0.0.0.0", port=8000) |