Mahek2Bhatia's picture
Upload 3 files
e0c3a62 verified
Raw
History Blame Contribute Delete
2.52 kB
import os
import asyncio
import threading
import joblib
from fastapi import FastAPI, BackgroundTasks
from fastapi.middleware.cors import CORSMiddleware
import socketio
# Import individual agent routers
from API.agent1_routes import router as agent1
from API.agent2_routes import router as agent2
from API.agent3_routes import router as agent3
from API.agent4_routes import router as agent4
from API.agent5_routes import router as agent5
from API.agent1_premium_routes import router as agent1_premium_router
# Import Premium Logic
from agents.agent1_premium import run_agent1_premium
app = FastAPI(title="ESG Multi-Agent Monitoring System")
# 1. Setup Socket.IO Server
sio = socketio.AsyncServer(async_mode='asgi', cors_allowed_origins="*")
socket_app = socketio.ASGIApp(sio, app)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Global Model Loading
MODEL_PATH = "models/risk_model.pkl"
app.state.model = joblib.load(MODEL_PATH) if os.path.exists(MODEL_PATH) else None
# Register Agent Routers
app.include_router(agent1)
app.include_router(agent2)
app.include_router(agent3)
app.include_router(agent4)
app.include_router(agent5)
app.include_router(agent1_premium_router)
# --- ๐Ÿ’Ž PREMIUM ROUTE (Fixed) ---
# @app.post("/api/premium/agent1/start")
# async def activate_premium_agent1(company_id: str = "company3"):
# """
# Starts the Agent 1 Premium background thread safely.
# """
# try:
# # 1. Main loop ka reference lenge
# main_loop = asyncio.get_running_loop()
# # 2. Corrected Callback: Thread-safe tareeke se emit karega
# def socket_callback(event, data):
# # Bina naya loop banaye, main loop par task schedule karega
# asyncio.run_coroutine_threadsafe(sio.emit(event, data), main_loop)
# # 3. Start the watcher thread
# thread = threading.Thread(
# target=run_agent1_premium,
# args=(socket_callback, company_id)
# )
# thread.daemon = True
# thread.start()
# return {
# "status": "Success",
# "message": f" Agent 1 Premium streaming started for {company_id}"
# }
# except Exception as e:
# return {"status": "Error", "message": str(e)}
@app.get("/")
def home():
return {"message": "ESG Multi-Agent API Running Successfully"}