File size: 3,177 Bytes
192f447 5875608 8e0a273 5875608 192f447 b037f61 8e0a273 192f447 5875608 192f447 c8236a7 192f447 5875608 192f447 c8236a7 192f447 8e0a273 192f447 8e0a273 5875608 8e0a273 192f447 8e0a273 |
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
import streamlit as st
from llm import load_llm, response_generator
from sql import csv_to_sqlite, run_sql_query
repo_id = "Qwen/Qwen2.5-Coder-1.5B-Instruct-GGUF"
filename = "qwen2.5-coder-1.5b-instruct-q8_0.gguf"
# repo_id = "Qwen/Qwen2.5-0.5B-Instruct-GGUF"
# filename = "qwen2.5-0.5b-instruct-q8_0.gguf"
llm = load_llm(repo_id, filename)
st.title("CSV TO SQL")
st.write("To start, Upload your CSV below 👇")
if st.button("Example prompt"):
st.session_state.db_name = "sales"
st.session_state.table_name = "sales"
csv_to_sqlite("./data/sales.csv", "sales", "sales")
prompt = "What is the sum, count and average sales?"
st.session_state.messages.append({"role": "user", "content": prompt})
response_sql = response_generator(
db_name=st.session_state.db_name,
table_name=st.session_state.table_name,
llm=llm,
messages=st.session_state.messages,
question=prompt,
)
result = run_sql_query(db_name=st.session_state.db_name, query=response_sql)
st.session_state.messages.append({"role": "assistant", "content": response_sql})
st.session_state.messages.append(
{"role": "assistant", "content": str(result), "result": result}
)
with st.expander("Upload CSV"):
csv_file = st.file_uploader(
"CSV",
)
db_name = st.text_input("DB Name")
table_name = st.text_input("Table Name")
if st.button("Save"):
if csv_file and db_name and table_name:
st.session_state.db_name = db_name
st.session_state.table_name = table_name
csv_to_sqlite(csv_file, db_name, table_name)
st.write("Saved ✅")
else:
st.write("Please enter all values")
# Initialize chat history
if "messages" not in st.session_state:
st.session_state.messages = []
# Display chat messages from history on app rerun
for message in st.session_state.messages:
with st.chat_message(message["role"]):
if "content" in message:
st.markdown(message["content"])
if "result" in message:
st.dataframe(message["result"])
# Accept user input
if prompt := st.chat_input(
"What is up?",
disabled=(
not "db_name" in st.session_state or not "table_name" in st.session_state
),
):
# Add user message to chat history
st.session_state.messages.append({"role": "user", "content": prompt})
# Display user message in chat message container
with st.chat_message("user"):
st.markdown(prompt)
# Display assistant response in chat message container
with st.chat_message("assistant"):
response_sql = response_generator(
db_name=st.session_state.db_name,
table_name=st.session_state.table_name,
llm=llm,
messages=st.session_state.messages,
question=prompt,
)
response = st.markdown(response_sql)
result = run_sql_query(db_name=st.session_state.db_name, query=response_sql)
st.markdown(result)
st.table(result)
# Add assistant response to chat history
st.session_state.messages.append({"role": "assistant", "content": response_sql})
|