Spaces:
Sleeping
Sleeping
import streamlit as st | |
from app import rag_query, process_feedback | |
st.title("RAG Chatbot") | |
# Initialize chat history | |
if "messages" not in st.session_state: | |
st.session_state.messages = [] | |
# Display chat messages from history on app rerun | |
for i, message in enumerate(st.session_state.messages): | |
with st.chat_message(message["role"]): | |
st.markdown(message["content"]) | |
if message["role"] == "assistant": | |
col1, col2 = st.columns([1,15]) | |
with col1: | |
if st.button("👍", key=f"thumbs_up_{i}"): | |
process_feedback(st.session_state.messages[i-1]["content"], message["content"], True) | |
with col2: | |
if st.button("👎", key=f"thumbs_down_{i}"): | |
process_feedback(st.session_state.messages[i-1]["content"], message["content"], False) | |
# st.session_state.messages.pop() # Remove the last assistant message | |
#st.rerun() # Rerun the app to regenerate the response | |
# React to user input | |
if prompt := st.chat_input("What is your question?"): | |
# Display user message in chat message container | |
st.chat_message("user").markdown(prompt) | |
# Add user message to chat history | |
st.session_state.messages.append({"role": "user", "content": prompt}) | |
response = rag_query(prompt) | |
# Display assistant response in chat message container | |
with st.chat_message("assistant"): | |
st.markdown(response) | |
# Add assistant response to chat history | |
st.session_state.messages.append({"role": "assistant", "content": response}) | |
# Rerun the app to display the feedback buttons | |
st.experimental_rerun() | |
# Sidebar for additional controls | |
with st.sidebar: | |
st.header("Options") | |
if st.button("Clear Chat History"): | |
st.session_state.messages = [] | |
st.experimental_rerun() |