Hi Everyone,
I’m trying to build a chatbot that takes user input, generate a query, display that query in a text_area (editable) and then have a button to run that query and display the resulting data as table.
Now, when the query is displayed, and I’m editing it, then I’m getting an error:
The handle_query_change() function is :
def handle_query_change(new_query):
st.session_state.query_editable = new_query
and below is my code:
# Accept user input
if prompt := st.chat_input("Please ask your question"):
# Display user message in chat message container
with st.chat_message("user"):
st.markdown(prompt)
# Add user message to chat history
st.session_state.messages.append({"role": "user", "content": prompt})
query = generate_query(prompt)
print('Original Query ---- ', query)
# Display the generated SQL query
st.subheader("Generated SQL Query:")
query_editable = st.text_area("Generated SQL Query:", value=query, height=200, max_chars=None, on_change=handle_query_change)
#####
st.session_state["query_editable"] = query_editable
print('After Edit Query ---- ', st.session_state.query_editable)
# Execute the SQL query when the "Run Query" button is clicked
if st.button("Run Query"):
# Retrieve the edited query from session state
query_editable = st.session_state.query_editable
# Define query_editable here
if query_editable.strip(): # Check if query_editable is not empty
with st.spinner("Running query..."):
try:
result_data = raw_query(query_editable, as_df=True) # Execute the query and return as DataFrame
with st.chat_message("assistant"):
if isinstance(result_data, pd.DataFrame):
st.table(result_data) # Display the result as a table
else:
st.markdown(result_data) # Display the result as markdown
st.session_state.messages.append({"role": "assistant", "content": result_data}) # Add assistant response to chat history
except Exception as e:
st.error(f"Error executing the query: {e}")
else:
st.error("Please enter a valid SQL query before running.")
After editing, its not getting updated, I’m getting the same query as the original query.
Attaching the link of the video for the same:
It’d be great help for your collaboration.
Thanks, Have a great day.