smile
test build
00e8611
raw
history blame
1.89 kB
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()
@app.get("/", response_class=HTMLResponse)
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]
})
@app.post("/api/filter")
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)