pdrMottaS commited on
Commit
d128798
·
0 Parent(s):

creating service

Browse files
Files changed (6) hide show
  1. .gitattributes +35 -0
  2. Dockerfile +16 -0
  3. README.md +10 -0
  4. main.py +45 -0
  5. query_engine.py +22 -0
  6. 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