如何捕获streamlit-feedback输出?

问题描述 投票:0回答:1

我在捕获前端给出的反馈时遇到问题。下面是我的代码。

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)

目前在我的代码中,当我在输入中提出问题时,我可以在用户界面中看到问题和答案对。我还可以看到反馈按钮。但是,当我单击任何按钮时,用户界面会变成空白,历史记录也会消失。

我现在完全空白了。如果我的理解是正确的,当我单击任何反馈按钮时,我应该看到终端中打印的反馈。

python streamlit feedback
1个回答
0
投票

这解决了我的问题。

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)```
© www.soinside.com 2019 - 2024. All rights reserved.