Graph_RAG / backend /app /main.py
Aigenthix's picture
Upload 2585 files
711f785 verified
Raw
History Blame Contribute Delete
1.92 kB
"""FastAPI application initialization"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from contextlib import asynccontextmanager
import logging
from .core.config import get_settings
from .api.routes import health, documents, rag, config as config_routes
# Setup logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
"""Application lifespan context manager"""
logger.info("RAG Application starting...")
yield
logger.info("RAG Application shutting down...")
def create_app() -> FastAPI:
"""Create and configure FastAPI application"""
settings = get_settings()
app = FastAPI(
title="RAG Application",
description="Retrieval-Augmented Generation with Groq and Multiple Vector Databases",
version="1.0.0",
lifespan=lifespan,
)
# CORS Middleware
app.add_middleware(
CORSMiddleware,
allow_origins=[settings.frontend_url, "http://localhost:3000", "http://localhost:8000"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Include routers
app.include_router(health.router, prefix="/api/v1", tags=["Health"])
app.include_router(documents.router, prefix="/api/v1", tags=["Documents"])
app.include_router(rag.router, prefix="/api/v1", tags=["RAG"])
app.include_router(config_routes.router, prefix="/api/v1", tags=["Configuration"])
logger.info("RAG Application created successfully")
return app
app = create_app()
if __name__ == "__main__":
import uvicorn
settings = get_settings()
uvicorn.run(
"app.main:app",
host="0.0.0.0",
port=8000,
reload=settings.debug,
log_level=settings.log_level.lower(),
)