File size: 2,474 Bytes
979518f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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")