from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from config import settings from middleware.auth import AuthMiddleware from routers import auth, chat, embeddings, gpu, health, models from services.registry import registry @asynccontextmanager async def lifespan(app: FastAPI): await registry.load_backends(settings.backends_config) registry.start_health_loop() yield registry.stop_health_loop() app = FastAPI( title="AI Gateway", version="0.1.0", lifespan=lifespan, ) app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins.split(","), allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.add_middleware(AuthMiddleware) app.include_router(auth.router) app.include_router(chat.router) app.include_router(models.router) app.include_router(embeddings.router) app.include_router(health.router) app.include_router(gpu.router) @app.get("/") async def root(): return {"service": "AI Gateway", "version": "0.1.0"}