ragha108 commited on
Commit
98932ee
·
1 Parent(s): 5fb6c27

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +81 -0
app.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sqlite3
2
+ import streamlit as st
3
+ import pandas as pd
4
+ import os
5
+ from sqlalchemy import create_engine
6
+ from sqlalchemy.pool import StaticPool
7
+ from langchain import OpenAI, SQLDatabase, SQLDatabaseChain
8
+
9
+
10
+
11
+ #####################################
12
+ # FUNCTIONS #
13
+ #####################################
14
+ @st.cache_data()
15
+ def load_data(url):
16
+ """
17
+ load data from url
18
+ """
19
+ df = pd.read_csv(url)
20
+ return df
21
+
22
+
23
+ def prepare_data(df):
24
+ """
25
+ lowercase columns
26
+ """
27
+ df.columns = [x.replace(' ', '_').lower() for x in df.columns]
28
+ return df
29
+
30
+
31
+ #####################################
32
+ # LOCALS & CONSTANTS #
33
+ #####################################
34
+ table_name = 'taxlien'
35
+ uri = "file::memory:?cache=shared"
36
+
37
+ #####################################
38
+ # HOME PAGE #
39
+ #####################################
40
+ st.title('TAX LIEN CERTIFICATES - FL :house:')
41
+ st.subheader('Upload a file to query')
42
+
43
+ # read file
44
+ uploaded_file = st.file_uploader("Choose a csv file")
45
+ if uploaded_file is not None:
46
+ df = pd.read_csv(uploaded_file)
47
+ st.write(df)
48
+
49
+ # api key
50
+ openai.api_key = os.environ["OPENAI_API_KEY"]
51
+
52
+ # user query
53
+ user_q = st.text_input(
54
+ "User Query",
55
+ help="Enter a question based on the dataset")
56
+
57
+ # commit data to sql
58
+ data = prepare_data(df)
59
+ conn = sqlite3.connect(uri)
60
+ data.to_sql(table_name, conn, if_exists='replace', index=False)
61
+
62
+ # create db engine
63
+ eng = create_engine(
64
+ url='sqlite:///file:memdb1?mode=memory&cache=shared',
65
+ poolclass=StaticPool, # single connection for requests
66
+ creator=lambda: conn)
67
+ db = SQLDatabase(engine=eng)
68
+
69
+ # create open AI conn and db chain
70
+ if openai_api_key:
71
+ llm_chain = OpenAI(
72
+ openai_api_key=openai_api_key,
73
+ temperature=0, # creative scale
74
+ max_tokens=300)
75
+ db_chain = SQLDatabaseChain(llm=llm_chain, database=db, verbose=True)
76
+
77
+ # run query and display result
78
+ if openai_api_key and user_q:
79
+ result = db_chain.run(user_q)
80
+ st.write(result)
81
+