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("Image-Scan") | |
llm = st.session_state["llm"] | |
if "current_image" in st.session_state: | |
current_image = st.session_state['current_image'] | |
if st.sidebar.button("Upload New Image"): | |
st.switch_page("BrainBot.py") | |
st.subheader("Your image has been uploaded successfully.") | |
st.success(current_image) | |
else: | |
st.warning("Upload an image to interpret it.") | |
if st.button("Upload Image"): | |
st.switch_page("BrainBot.py") | |
## CHAT | |
# Clear the image chat history if user has uploaded a new image | |
if st.session_state['uploaded_image'] == True: | |
st.session_state['image_chat_history'] = [] | |
# Display the image chat history | |
for image in st.session_state['image_chat_history']: | |
with st.chat_message("user"): | |
st.image(image["path"], caption=current_image) | |
with st.chat_message("ai"): | |
st.markdown(utils.format_response(image["Description"])) | |
## IMAGE | |
# Display the image uploaded by the user | |
if "temp_img_path" in st.session_state and st.session_state['uploaded_image'] == True: | |
temp_img_path = st.session_state['temp_img_path'] | |
with st.chat_message("human"): | |
st.image(temp_img_path, width=300, caption=current_image) | |
try: | |
# Send POST request to a FastAPI endpoint with temporary image path | |
FASTAPI_URL = f"http://localhost:8000/image/{llm}" | |
with st.spinner("Interpreting image..."): | |
response = requests.post(FASTAPI_URL, json={"image_path": temp_img_path}) | |
# Append the image and response to the chat history | |
st.session_state['image_chat_history'].append({"path": temp_img_path, "Description": response.text}) | |
st.session_state['uploaded_image'] = False | |
# Display the AI's interpretation of the image in chat | |
with st.chat_message("assistant"): | |
# Format the response | |
formatted_response = utils.format_response(response.text) | |
st.markdown(formatted_response) | |
except Exception as e: | |
st.switch_page("error.py") |