Spaces:
Paused
Paused
import streamlit as st | |
import requests | |
import utils | |
# Custom CSS | |
with open('styles.css') as f: | |
css = f.read() | |
st.markdown(f'<style>{css}</style>', unsafe_allow_html=True) | |
## LOGO and TITLE | |
## ------------------------------------------------------------------------------------------- | |
# Show the logo and title side by side | |
col1, col2 = st.columns([1, 4]) | |
with col1: | |
st.image("brainbot.png", width=100) | |
with col2: | |
st.title("Web-Chat") | |
question = None | |
llm = st.session_state["llm"] | |
if "current_website" in st.session_state: | |
current_website = st.session_state['current_website'] | |
if st.sidebar.button("Upload New Webpage Link"): | |
st.switch_page("BrainBot.py") | |
st.subheader("Your website content has been uploaded successfully. You can now chat with it.") | |
st.success(current_website) | |
question = st.chat_input("Type your question here...") | |
else: | |
st.warning("Upload a webpage link to begin chat with it.") | |
if st.button("Upload Webpage Link"): | |
st.switch_page("BrainBot.py") | |
## CHAT | |
# Clear the web chat history if user has uploaded a new webpage link | |
if st.session_state['uploaded_link'] == True: | |
st.session_state['web_chat_history'] = [] | |
# Display the web chat history | |
for message in st.session_state['web_chat_history']: | |
with st.chat_message("user"): | |
st.write(message["Human"]) | |
with st.chat_message("ai"): | |
st.markdown(utils.format_response(message["AI"])) | |
## QUESTION - WITH CHAT HISTORY | |
## ------------------------------------------------------------------------------------------- | |
# Retrieve the answer to the question asked by the user | |
if question is not None: | |
# Display the question entered by the user in chat | |
with st.chat_message("user"): | |
st.write(question) | |
resource = "web" | |
try: | |
# Send POST request to a FastAPI endpoint to retrieve an answer for the question | |
data = {"question": question, "resource": resource} | |
FASTAPI_URL = f"http://localhost:8000/answer_with_chat_history/{llm}" | |
with st.spinner("Generating response..."): | |
response = requests.post(FASTAPI_URL, json=data) | |
# Append the response to the chat history | |
st.session_state['web_chat_history'].append({"Human": question, "AI": response.text}) | |
st.session_state['uploaded_link'] = False | |
# Display the AI's response to the question in chat | |
with st.chat_message("ai"): | |
# Format the response | |
formatted_response = utils.format_response(response.text) | |
st.markdown(formatted_response) | |
except Exception as e: | |
st.switch_page("error.py") |