Ravi theja K
Update app.py
b8118e1 verified
import os
import streamlit as st
from transformers import AutoTokenizer
from snowflake.ml.utils.connection_params import SnowflakeLoginOptions
from langchain_community.utilities import SQLDatabase
from langchain.llms import HuggingFaceHub
from langchain.chains import create_sql_query_chain
@st.cache_resource(show_spinner="Connecting...")
def getSession():
pars = SnowflakeLoginOptions("test_conn")
pars["account"] ="ap20346.ap-south-1"
pars["user"] = "Vassist"
pars["password"]= "Vassist@123"
pars["role"]= "ACCOUNTADMIN"
pars["warehouse"] = "COMPUTE_WH"
pars["database"] = "SNOWFLAKE_SAMPLE_DATA"
pars["schema"] = "TPCH_SF1"
session = Session.builder.configs(pars).create()
url = (f"snowflake://{pars['user']}:{pars['password']}@{pars['account']}"
+ f"/{pars['database']}/{pars['schema']}"
+ f"?warehouse={pars['warehouse']}&role={pars['role']}")
db = SQLDatabase.from_uri(url)
os.environ["HUGGINGFACEHUB_API_TOKEN"] ='HUGGINGFACEHUB_API_TOKEN'
llm = HuggingFaceHub(repo_id= "ravithejakandi/Sf-Arctic-Demo-Enu")
chain = create_sql_query_chain(llm, db)
return session, db, chain
st.title("SQL Query Generator")
st.write("Returns and runs queries from questions in natural language.")
session, db, chain = getSession()
question = st.sidebar.text_area("Ask a question:",
value="Show me the total number of entries in the first table")
sql = chain.invoke({"question": question}).rstrip(';')
tabQuery, tabData, tabLog = st.tabs(["Query", "Data", "Log"])
tabQuery.code(sql, language="sql")
tabData.dataframe(session.sql(sql))
tabLog.code(db.table_info, language="sql")