| | """ |
| | FastAPI Main Application |
| | Neural Network Weight Quantizer API |
| | """ |
| |
|
| | from fastapi import FastAPI |
| | from fastapi.middleware.cors import CORSMiddleware |
| | from fastapi.staticfiles import StaticFiles |
| | from fastapi.responses import FileResponse |
| | from pathlib import Path |
| | import os |
| |
|
| | from .routes import quantization, models, analysis, system |
| |
|
| | |
| | app = FastAPI( |
| | title="Neural Network Quantizer API", |
| | description="API for quantizing neural network weights to lower precision formats", |
| | version="1.0.0", |
| | docs_url="/api/docs", |
| | openapi_url="/api/openapi.json" |
| | ) |
| |
|
| | |
| | app.add_middleware( |
| | CORSMiddleware, |
| | allow_origins=["*"], |
| | allow_credentials=True, |
| | allow_methods=["*"], |
| | allow_headers=["*"], |
| | ) |
| |
|
| | |
| | app.include_router(system.router, prefix="/api/system", tags=["System"]) |
| | app.include_router(models.router, prefix="/api/models", tags=["Models"]) |
| | app.include_router(quantization.router, prefix="/api/quantize", tags=["Quantization"]) |
| | app.include_router(analysis.router, prefix="/api/analysis", tags=["Analysis"]) |
| |
|
| | |
| | @app.get("/api/health") |
| | async def health_check(): |
| | return {"status": "healthy", "service": "quantizer-api"} |
| |
|
| | |
| | FRONTEND_DIR = Path(__file__).parent.parent.parent / "frontend" / "dist" |
| |
|
| | if FRONTEND_DIR.exists(): |
| | app.mount("/assets", StaticFiles(directory=FRONTEND_DIR / "assets"), name="assets") |
| | |
| | @app.get("/{full_path:path}") |
| | async def serve_frontend(full_path: str): |
| | |
| | file_path = FRONTEND_DIR / full_path |
| | if file_path.exists() and file_path.is_file(): |
| | return FileResponse(file_path) |
| | return FileResponse(FRONTEND_DIR / "index.html") |
| |
|
| |
|
| | if __name__ == "__main__": |
| | import uvicorn |
| | uvicorn.run(app, host="0.0.0.0", port=8000) |
| |
|