Medical-Assistant / frontend.py
shahabkahn's picture
Upload 11 files
318f2bb verified
raw
history blame
2.53 kB
import requests
import streamlit as st
from dotenv import load_dotenv
import os
load_dotenv()
# Define the URL of your FastAPI endpoint
url = "http://localhost:8000/query"
# Initialize the session state
st.session_state.setdefault("chat_history", [])
# Function to handle the new chat button click
def new_chat():
st.session_state.chat_history = [] # Clear the chat history
# Streamlit app
def app():
st.title("Doctor's Medical Assistant")
st.sidebar.button("New Chat", on_click=new_chat)
st.image("2.jpg", width=300)
# Display Welcome message
st.write("<span style='font-size:20px; font-weight:bold;'>Welcome! How Can I Help You</span>",
unsafe_allow_html=True)
# Placeholder text for the input box
input_placeholder = st.empty()
input_text = input_placeholder.text_input("", key="user_input", help="Type your question here...")
# JavaScript to handle the placeholder behavior
placeholder_script = f"""
<script>
const inputElement = document.querySelector('input[data-baseweb="input"]');
inputElement.placeholder = "Enter your question";
</script>
"""
st.markdown(placeholder_script, unsafe_allow_html=True)
# Handle form submission
submit_button = st.button("➡️")
if submit_button:
user_input = input_text.strip()
if user_input:
# Create the request payload
payload = {"question": user_input}
try:
# Send the POST request to the FastAPI endpoint
response = requests.post(url, json=payload)
# Check if the request was successful
if response.ok:
# Get the answer from the FastAPI endpoint
answer = response.json().get("answer")
st.session_state.chat_history.append({"role": "user", "content": user_input})
st.session_state.chat_history.append({"role": "assistant", "content": answer})
else:
st.error(f"Error: {response.status_code} {response.text}")
except requests.RequestException as e:
st.error(f"Error: {e}")
# Display chat history
for chat in st.session_state.chat_history:
if chat["role"] == "user":
st.write(f"**You:** {chat['content']}")
else:
st.write(f"**Assistant:** {chat['content']}")
if __name__ == "__main__":
app()