Spaces:
Sleeping
Sleeping
import streamlit as st | |
from lib import Text2SQLRAG | |
from utils import execute_query_and_return_df | |
st.set_page_config(page_title="Text2SQLRAG") | |
st.title("Text2SQLRAG") | |
# Create an instance of Text2SQLRAG | |
text2sql = Text2SQLRAG() | |
# Initialize session state for storing chat messages | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
# Display conversation history from session state | |
for message in st.session_state.messages: | |
role = message.get("role", "assistant") | |
with st.chat_message(role): | |
if "output" in message: | |
with st.expander("Reasoning", expanded=True): | |
st.markdown(message["reasoning"]) | |
if "sql_query" in message and message["sql_query"]: | |
with st.expander("SQL Query", expanded=True): | |
st.code(message["sql_query"]) | |
# Get user input | |
input_text = st.chat_input("Chat with your bot here...") | |
if input_text: | |
# Display user input | |
with st.chat_message("user"): | |
st.markdown(input_text) | |
# Add user input to chat history | |
st.session_state.chat_history.append({"role": "user", "text": input_text}) | |
# Get chatbot response | |
response = text2sql.run(input_text) | |
sql_query = response.query | |
reasoning = response.reasoning | |
df = execute_query_and_return_df(sql_query) | |
if sql_query: | |
with st.expander("SQL Query", expanded=True): | |
st.code(sql_query) | |
with st.expander("Reasoning", expanded=True): | |
st.write(reasoning) | |
if df is not None: | |
st.dataframe(df) | |
else: | |
st.error("Error executing query") | |
# Append assistant response to session state | |
st.session_state.messages.append( | |
{ | |
"role": "assistant", | |
"reasoning": reasoning, | |
"sql_query": sql_query, | |
} | |
) |