我在捕获前端给出的反馈时遇到问题。下面是我的代码。
import streamlit as st
from streamlit_feedback import streamlit_feedback
def display_answer():
for i in st.session_state.chat_history:
with st.chat_message("human"):
st.write(i["question"])
with st.chat_message("ai"):
st.write(i["answer"])
def create_answer(question):
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
message_id = len(st.session_state.chat_history)
st.session_state.chat_history.append(
{
"question": question,
"answer": f"{question}_Answer",
"message_id": message_id,
}
)
if question := st.chat_input(placeholder="Ask your question here .... !!!!"):
create_answer(question)
display_answer()
if feedback := streamlit_feedback(feedback_type="thumbs", align="flex-start"):
print(feedback)
目前在我的代码中,当我在输入中提出问题时,我可以在用户界面中看到问题和答案对。我还可以看到反馈按钮。但是,当我单击任何按钮时,用户界面会变成空白,历史记录也会消失。
我现在完全空白了。如果我的理解是正确的,当我单击任何反馈按钮时,我应该看到终端中打印的反馈。
这解决了我的问题。
import streamlit as st
from streamlit_feedback import streamlit_feedback
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
def display_answer():
for i in st.session_state.chat_history:
with st.chat_message("human"):
st.write(i["question"])
with st.chat_message("ai"):
st.write(i["answer"])
# If there is no feedback show N/A
if "feedback" in i:
st.write(f"Feedback: {i['feedback']}")
else:
st.write("Feedback: N/A")
def create_answer(question):
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
message_id = len(st.session_state.chat_history)
st.session_state.chat_history.append({
"question": question,
"answer": f"{question}_Answer",
"message_id": message_id,
})
def fbcb():
message_id = len(st.session_state.chat_history) - 1
if message_id >= 0:
st.session_state.chat_history[message_id]["feedback"] = st.session_state.fb_k
display_answer()
if question := st.chat_input(placeholder="Ask your question here .... !!!!"):
create_answer(question)
display_answer()
with st.form('form'):
streamlit_feedback(feedback_type="thumbs", align="flex-start", key='fb_k')
st.form_submit_button('Save feedback', on_click=fbcb)```