Open himsgpt opened 7 months ago
I'm having the same issue :(
To collect multiple feedback points with the same component, you can set a dynamic key
. See the example below:
import streamlit as st
from streamlit_feedback import streamlit_feedback
def handle_feedback(user_response):
st.toast("✔️ Feedback received!")
if "feedback" not in st.session_state:
st.session_state.feedback = []
if "feedback_key" not in st.session_state:
st.session_state.feedback_key = 0
if st.button("Refresh feedback component"):
st.session_state.feedback_key += 1 # overwrite feedback component
result = streamlit_feedback(
feedback_type="thumbs",
align="flex-start",
on_submit=handle_feedback,
key=f"feedback_{st.session_state.feedback_key}",
)
if result:
st.session_state.feedback.append(result)
st.session_state.feedback
Thanks. I slightly modified this to fit my case. On submitting ‘Get_response’ i run reset_cb. This works fine except 1 last bug.
on submitting the feedback, since the app reruns. The ai_response get’s cleared, Any solution to keep the content as is in the form on submitting the feedback? Since the ai_response function is expensive, i don’t want to rerun it on submitting feedback.
import streamlit as st
from streamlit import session_state as ss
from streamlit_feedback import streamlit_feedback
import uuid
if 'fbk' not in ss:
ss.fbk = str(uuid.uuid4())
def reset_cb():
"""Reset callback for feedback, etc.
This can be used to save interactions.
"""
ss.fbk = str(uuid.uuid4()) # use new key to display new feedback prompt
def ai_response():
"""Gets query text and use it to build a response.
It assigns its response to the query response.
"""
res = "Hey, what's up?"
ss.qr = f"My response is: {res}"
st.write(ss.qr)
# Build a form to receive user query input.
with st.form("query_form_k", clear_on_submit=False):
st.text_area("Enter your query", key='qt')
check = st.form_submit_button('Get response', on_click=reset_cb)
if check:
st.write('Ai Response:')
ai_response()
# Manage the feedback.
with st.container():
st.write('Your feedback:')
streamlit_feedback(
feedback_type="thumbs",
optional_text_label="[Optional] Please provide an explanation",
align="flex-start",
key=ss.fbk
)
I am running into the same issue, and currently its only either or for me, so if anyone has a tip or so, would love to hear it.
After user gives a feedback based on a response. The feedback doesn't get cleared for another feedback on another response. ANy help?