Problem with editing and updating text_area() in a chatbot

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.

Hi @iqra-s

You’ll have to delete new_query from this line:

so it becomes:

def handle_query_change():

This should now work. As the error message is telling us that the handle_query_change function is missing an input argument. But since you’re using it as a callback function with no arguments then it makes sense to delete as suggested previously.

Hope this helps!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.