from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse import uvicorn import duckdb from query_engine import set_query_engine from llama_index.core.indices.struct_store import NLSQLTableQueryEngine import os from huggingface_hub import hf_hub_download from models import SQL app = FastAPI() origins = ["*"] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # query_engine:NLSQLTableQueryEngine = set_query_engine() query_file_path = "" @app.on_event("startup") def startup(): dataset_name = "pdrMottaS/afabd-duckdb" duckdb_filename = "afabd.db" global query_file_path query_file_path = hf_hub_download(repo_id=dataset_name, filename=duckdb_filename, repo_type="dataset") @app.post("/sql") async def query_database(query_data: SQL): global query_file_path conn = duckdb.connect(query_file_path,read_only=True) df = conn.execute(query_data.query).fetch_df() return JSONResponse(df.to_json(orient = "records")) # @app.post("/llm") # async def llm(prompt: str): # response = query_engine.query(prompt) # return JSONResponse({"promt":prompt,"response":response}) uvicorn.run(app,host='0.0.0.0',port=7860)