Spaces:
Sleeping
Sleeping
| 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, Prompt, PromptResponse | |
| import json | |
| app = FastAPI() | |
| origins = ["*"] | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=origins, | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| query_engine:NLSQLTableQueryEngine | |
| query_file_path = "" | |
| llm_file_path = "" | |
| def startup(): | |
| dataset_name = "pdrMottaS/afabd-duckdb" | |
| global query_file_path | |
| global llm_file_path | |
| global query_engine | |
| llm_file_path = hf_hub_download(repo_id=dataset_name, filename='llm_afabd.db', repo_type="dataset") | |
| query_file_path = hf_hub_download(repo_id=dataset_name, filename='afabd.db', repo_type="dataset") | |
| query_engine = set_query_engine(llm_file_path) | |
| 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(json.loads(df.to_json(orient = "records"))) | |
| async def llm(prompt_data: Prompt): | |
| global query_engine | |
| response = query_engine.query(prompt_data.prompt) | |
| print(response) | |
| return PromptResponse(prompt=prompt_data.prompt,response= response.response) | |
| uvicorn.run(app,host='0.0.0.0',port=7860) |