Spaces:
Sleeping
Sleeping
pdrMottaS
commited on
Commit
·
d128798
0
Parent(s):
creating service
Browse files- .gitattributes +35 -0
- Dockerfile +16 -0
- README.md +10 -0
- main.py +45 -0
- query_engine.py +22 -0
- requirements.txt +86 -0
.gitattributes
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
Dockerfile
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker
|
2 |
+
# you will also find guides on how best to write your Dockerfile
|
3 |
+
|
4 |
+
FROM python:3.9
|
5 |
+
|
6 |
+
RUN useradd -m -u 1000 user
|
7 |
+
|
8 |
+
WORKDIR /app
|
9 |
+
|
10 |
+
COPY --chown=user ./requirements.txt requirements.txt
|
11 |
+
|
12 |
+
RUN pip install --no-cache-dir --upgrade -r requirements.txt
|
13 |
+
|
14 |
+
COPY --chown=user . /app
|
15 |
+
|
16 |
+
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
|
README.md
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: Afa-bd Sql-service
|
3 |
+
emoji: 📊
|
4 |
+
colorFrom: yellow
|
5 |
+
colorTo: blue
|
6 |
+
sdk: docker
|
7 |
+
pinned: false
|
8 |
+
---
|
9 |
+
|
10 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
main.py
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from fastapi import FastAPI
|
2 |
+
from fastapi.middleware.cors import CORSMiddleware
|
3 |
+
from fastapi.responses import JSONResponse
|
4 |
+
import uvicorn
|
5 |
+
import duckdb
|
6 |
+
from query_engine import set_query_engine
|
7 |
+
from llama_index.core.indices.struct_store import NLSQLTableQueryEngine
|
8 |
+
import os
|
9 |
+
from huggingface_hub import hf_hub_download
|
10 |
+
|
11 |
+
app = FastAPI()
|
12 |
+
|
13 |
+
origins = ["*"]
|
14 |
+
|
15 |
+
app.add_middleware(
|
16 |
+
CORSMiddleware,
|
17 |
+
allow_origins=origins,
|
18 |
+
allow_credentials=True,
|
19 |
+
allow_methods=["*"],
|
20 |
+
allow_headers=["*"],
|
21 |
+
)
|
22 |
+
|
23 |
+
query_engine:NLSQLTableQueryEngine = set_query_engine()
|
24 |
+
query_file_path = ""
|
25 |
+
|
26 |
+
@app.on_event("startup")
|
27 |
+
def startup():
|
28 |
+
dataset_name = "pdrMottaS/afabd-duckdb"
|
29 |
+
duckdb_filename = "afabd.db"
|
30 |
+
global query_file_path
|
31 |
+
query_file_path = hf_hub_download(repo_id=dataset_name, filename=duckdb_filename, repo_type="dataset")
|
32 |
+
|
33 |
+
@app.post("/sql")
|
34 |
+
async def query_database(query:str):
|
35 |
+
global query_file_path
|
36 |
+
conn = duckdb.connect(query_file_path,read_only=True)
|
37 |
+
df = conn.execute(query).fetch_df()
|
38 |
+
return JSONResponse(df.to_json(orient = "records"))
|
39 |
+
|
40 |
+
@app.post("/llm")
|
41 |
+
async def llm(prompt: str):
|
42 |
+
response = query_engine.query(prompt)
|
43 |
+
return JSONResponse({"promt":prompt,"response":response})
|
44 |
+
|
45 |
+
uvicorn.run(app,host='0.0.0.0',port=7860)
|
query_engine.py
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from llama_index.llms.groq import Groq
|
2 |
+
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
|
3 |
+
from llama_index.core import Settings
|
4 |
+
from sqlalchemy import create_engine
|
5 |
+
from llama_index.core import SQLDatabase
|
6 |
+
from llama_index.core.indices.struct_store import NLSQLTableQueryEngine
|
7 |
+
|
8 |
+
def set_query_engine():
|
9 |
+
llm = Groq(
|
10 |
+
model="llama3-8b-8192",
|
11 |
+
api_key="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"
|
12 |
+
)
|
13 |
+
embedding = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
|
14 |
+
Settings.llm = llm
|
15 |
+
Settings.embed_model = embedding
|
16 |
+
engine = create_engine("duckdb:///llm_view.db")
|
17 |
+
sql_database = SQLDatabase(engine)
|
18 |
+
return NLSQLTableQueryEngine(
|
19 |
+
sql_database=sql_database, # The SQL database instance to query
|
20 |
+
tables=["afabd"], # List of tables to include in the query engine
|
21 |
+
llm=llm, # The language model used for processing natural language queries
|
22 |
+
)
|
requirements.txt
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
aiohttp==3.9.5
|
2 |
+
aiosignal==1.3.1
|
3 |
+
annotated-types==0.7.0
|
4 |
+
anyio==4.4.0
|
5 |
+
attrs==23.2.0
|
6 |
+
certifi==2024.6.2
|
7 |
+
charset-normalizer==3.3.2
|
8 |
+
click==8.1.7
|
9 |
+
dataclasses-json==0.6.7
|
10 |
+
Deprecated==1.2.14
|
11 |
+
dirtyjson==1.0.8
|
12 |
+
distro==1.9.0
|
13 |
+
dnspython==2.6.1
|
14 |
+
duckdb==1.0.0
|
15 |
+
email_validator==2.2.0
|
16 |
+
fastapi==0.111.0
|
17 |
+
fastapi-cli==0.0.4
|
18 |
+
filelock==3.15.3
|
19 |
+
frozenlist==1.4.1
|
20 |
+
fsspec==2024.6.0
|
21 |
+
greenlet==3.0.3
|
22 |
+
h11==0.14.0
|
23 |
+
httpcore==1.0.5
|
24 |
+
httptools==0.6.1
|
25 |
+
httpx==0.27.0
|
26 |
+
huggingface-hub==0.23.4
|
27 |
+
idna==3.7
|
28 |
+
Jinja2==3.1.4
|
29 |
+
joblib==1.4.2
|
30 |
+
llama-index-core==0.10.48
|
31 |
+
llama-index-embeddings-huggingface==0.2.2
|
32 |
+
llama-index-llms-groq==0.1.4
|
33 |
+
llama-index-llms-openai==0.1.22
|
34 |
+
llama-index-llms-openai-like==0.1.3
|
35 |
+
llamaindex-py-client==0.1.19
|
36 |
+
markdown-it-py==3.0.0
|
37 |
+
MarkupSafe==2.1.5
|
38 |
+
marshmallow==3.21.3
|
39 |
+
mdurl==0.1.2
|
40 |
+
multidict==6.0.5
|
41 |
+
mypy-extensions==1.0.0
|
42 |
+
nest-asyncio==1.6.0
|
43 |
+
networkx==3.3
|
44 |
+
nltk==3.8.1
|
45 |
+
numpy==1.26.4
|
46 |
+
openai==1.35.3
|
47 |
+
orjson==3.10.5
|
48 |
+
packaging==24.1
|
49 |
+
pandas==2.2.2
|
50 |
+
pillow==10.3.0
|
51 |
+
pydantic==2.7.4
|
52 |
+
pydantic_core==2.18.4
|
53 |
+
Pygments==2.18.0
|
54 |
+
python-dateutil==2.9.0.post0
|
55 |
+
python-dotenv==1.0.1
|
56 |
+
python-multipart==0.0.9
|
57 |
+
pytz==2024.1
|
58 |
+
PyYAML==6.0.1
|
59 |
+
regex==2024.5.15
|
60 |
+
requests==2.32.3
|
61 |
+
rich==13.7.1
|
62 |
+
safetensors==0.4.3
|
63 |
+
shellingham==1.5.4
|
64 |
+
six==1.16.0
|
65 |
+
sniffio==1.3.1
|
66 |
+
SQLAlchemy==2.0.31
|
67 |
+
starlette==0.37.2
|
68 |
+
tenacity==8.4.1
|
69 |
+
tiktoken==0.7.0
|
70 |
+
tokenizers==0.19.1
|
71 |
+
tqdm==4.66.4
|
72 |
+
transformers==4.41.2
|
73 |
+
typer==0.12.3
|
74 |
+
typing-inspect==0.9.0
|
75 |
+
typing_extensions==4.12.2
|
76 |
+
tzdata==2024.1
|
77 |
+
ujson==5.10.0
|
78 |
+
urllib3==2.2.2
|
79 |
+
uvicorn==0.30.1
|
80 |
+
uvloop==0.19.0
|
81 |
+
watchfiles==0.22.0
|
82 |
+
websockets==12.0
|
83 |
+
wrapt==1.16.0
|
84 |
+
yarl==1.9.4
|
85 |
+
SQLAlchemy==2.0.31
|
86 |
+
datasets==2.20.0
|