File size: 1,657 Bytes
749e634
 
35dc562
749e634
 
1457a2f
749e634
 
 
 
 
c60cfa3
 
 
 
 
749e634
 
 
 
 
 
 
 
c60cfa3
8f2a438
84fe25b
749e634
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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")