import asyncio import logging from dotenv import load_dotenv from typing import Literal import nltk import warnings import os from fastapi import Depends, FastAPI, BackgroundTasks, HTTPException, Request from fastapi.staticfiles import StaticFiles import api.solutions from dependencies import get_llm_router, init_dependencies import api.docs import api.requirements from api.docs import docx_to_txt from schemas import * from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse, StreamingResponse from litellm.router import Router load_dotenv() logging.basicConfig( level=logging.DEBUG if (os.environ.get( "DEBUG_LOG", "0") == "1") else logging.INFO, format='[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d]: %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) # Initialize global dependencies init_dependencies() # Download required packages for NLTK nltk.download('stopwords') nltk.download('punkt_tab') nltk.download('wordnet') warnings.filterwarnings("ignore") app = FastAPI(title="Requirements Extractor") app.add_middleware(CORSMiddleware, allow_credentials=True, allow_headers=[ "*"], allow_methods=["*"], allow_origins=["*"]) # ======================================================================================================================================================================================= app.include_router(api.docs.router, prefix="/docs") app.include_router(api.requirements.router, prefix="/requirements") app.include_router(api.solutions.router, prefix="/solutions") app.mount("/", StaticFiles(directory="static", html=True), name="static")