ziyadsuper2017 commited on
Commit
389cdce
·
1 Parent(s): ba4c612

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -21
app.py CHANGED
@@ -3,6 +3,7 @@ from PIL import Image
3
  import io
4
  import base64
5
 
 
6
  import google.generativeai as genai
7
 
8
  # Configure the API key (should be set as an environment variable or secure storage in production)
@@ -23,24 +24,9 @@ if 'chat_history' not in st.session_state:
23
  # UI layout
24
  st.title("Gemini Chatbot")
25
 
26
- # Display the chat history
27
- for message in st.session_state['chat_history']:
28
- role, text = message
29
- st.markdown(f"**{role.title()}**: {text}")
30
-
31
- # Multiline text input for the user to send messages
32
- user_input = st.text_area("Enter your message here:", key="user_input")
33
-
34
- # File uploader for images
35
- uploaded_files = st.file_uploader(
36
- "Upload images:",
37
- type=["png", "jpg", "jpeg"],
38
- accept_multiple_files=True,
39
- key="file_uploader"
40
- )
41
-
42
  # Function to convert image to base64
43
  def get_image_base64(image):
 
44
  buffered = io.BytesIO()
45
  image.save(buffered, format="JPEG")
46
  img_str = base64.b64encode(buffered.getvalue()).decode()
@@ -48,6 +34,9 @@ def get_image_base64(image):
48
 
49
  # Callback function to send message and clear input
50
  def send_message():
 
 
 
51
  if user_input or uploaded_files:
52
  # Save user input to the chat history
53
  if user_input:
@@ -68,8 +57,7 @@ def send_message():
68
  # Process and save uploaded images to the chat history
69
  if uploaded_files:
70
  for uploaded_file in uploaded_files:
71
- bytes_data = uploaded_file.read()
72
- image = Image.open(io.BytesIO(bytes_data))
73
  image_base64 = get_image_base64(image)
74
  st.session_state['chat_history'].append(("User", f"Uploaded image: {uploaded_file.name}"))
75
 
@@ -86,10 +74,21 @@ def send_message():
86
  # Clear the input box after sending the message
87
  st.session_state.user_input = ""
88
 
89
- # When the 'Send' button is clicked, call the send_message callback
90
- send_button = st.button("Send", key="send_button", on_click=send_message)
 
 
 
 
 
 
 
 
 
 
 
91
 
92
- # Re-display the chat history to include the new messages
93
  for message in st.session_state['chat_history']:
94
  role, text = message
95
  st.markdown(f"**{role.title()}**: {text}")
 
3
  import io
4
  import base64
5
 
6
+ # Assuming google.generativeai as genai is the correct import based on your description
7
  import google.generativeai as genai
8
 
9
  # Configure the API key (should be set as an environment variable or secure storage in production)
 
24
  # UI layout
25
  st.title("Gemini Chatbot")
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  # Function to convert image to base64
28
  def get_image_base64(image):
29
+ image = image.convert("RGB") # Convert to RGB to remove alpha channel if present
30
  buffered = io.BytesIO()
31
  image.save(buffered, format="JPEG")
32
  img_str = base64.b64encode(buffered.getvalue()).decode()
 
34
 
35
  # Callback function to send message and clear input
36
  def send_message():
37
+ user_input = st.session_state['user_input']
38
+ uploaded_files = st.session_state['file_uploader']
39
+
40
  if user_input or uploaded_files:
41
  # Save user input to the chat history
42
  if user_input:
 
57
  # Process and save uploaded images to the chat history
58
  if uploaded_files:
59
  for uploaded_file in uploaded_files:
60
+ image = Image.open(uploaded_file).convert("RGB") # Ensure image is in RGB
 
61
  image_base64 = get_image_base64(image)
62
  st.session_state['chat_history'].append(("User", f"Uploaded image: {uploaded_file.name}"))
63
 
 
74
  # Clear the input box after sending the message
75
  st.session_state.user_input = ""
76
 
77
+ # Multiline text input for the user to send messages
78
+ user_input = st.text_area("Enter your message here:", key="user_input", value="")
79
+
80
+ # File uploader for images
81
+ uploaded_files = st.file_uploader(
82
+ "Upload images:",
83
+ type=["png", "jpg", "jpeg"],
84
+ accept_multiple_files=True,
85
+ key="file_uploader"
86
+ )
87
+
88
+ # Button to send the message
89
+ send_button = st.button("Send", on_click=send_message)
90
 
91
+ # Display the chat history
92
  for message in st.session_state['chat_history']:
93
  role, text = message
94
  st.markdown(f"**{role.title()}**: {text}")