Spaces:
No application file
No application file
from fastapi import FastAPI, Request | |
from fastapi.templating import Jinja2Templates | |
from fastapi.staticfiles import StaticFiles | |
from fastapi.responses import HTMLResponse | |
import pandas as pd | |
from pathlib import Path | |
from app.backend.constant import Navigation, ModelProvider, EvaluationMetric, EmbdDtype, EmbdDim, Similarity | |
from app.backend.data_engine import DataEngine | |
app = FastAPI() | |
# Mount static files | |
app.mount("/static", StaticFiles(directory="app/static"), name="static") | |
# Templates | |
templates = Jinja2Templates(directory="app/templates") | |
# Initialize data engine | |
data_engine = DataEngine() | |
async def home(request: Request, tab: str = "text"): | |
# Get initial data based on tab | |
if tab == "multimodal": | |
data = data_engine.get_filtered_data(navigation="multimodal") | |
else: | |
data = data_engine.get_data() | |
# Convert data to list for template rendering | |
data_list = data.values.tolist() | |
columns = data.columns.tolist() | |
return templates.TemplateResponse("index.html", { | |
"request": request, | |
"active_tab": tab, | |
"data": data_list, | |
"columns": columns, | |
"navigations": [e.value for e in Navigation], | |
"embd_types": [e.value for e in EmbdDtype], | |
"embd_dims": [e.value for e in EmbdDim], | |
"similarities": [e.value for e in Similarity] | |
}) | |
async def filter_data(filters: dict): | |
# Apply filters to data | |
data = data_engine.get_filtered_data( | |
navigation=filters.get('navigation'), | |
embd_type=filters.get('embd_type'), | |
embd_dims=filters.get('embd_dims'), | |
similarity=filters.get('similarity') | |
) | |
# Convert to list for JSON response | |
return data.values.tolist() | |
if __name__ == "__main__": | |
import uvicorn | |
uvicorn.run(app, host="0.0.0.0", port=7890) | |