ziyadsuper2017 commited on
Commit
36e811b
·
1 Parent(s): 23ed2c1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -5
app.py CHANGED
@@ -7,7 +7,6 @@ from gtts import gTTS
7
  import google.generativeai as genai
8
  from io import BytesIO # Import BytesIO
9
 
10
-
11
  # Set your API key
12
  api_key = "AIzaSyC70u1sN87IkoxOoIj4XCAPw97ae2LZwNM" # Replace with your actual API key
13
  genai.configure(api_key=api_key)
@@ -81,6 +80,7 @@ def send_message():
81
  user_input = st.session_state.user_input
82
  uploaded_files = st.session_state.uploaded_files
83
  prompts = []
 
84
 
85
  # Populate the prompts list with the existing chat history
86
  for entry in st.session_state['chat_history']:
@@ -88,38 +88,52 @@ def send_message():
88
  if 'text' in part:
89
  prompts.append(part['text'])
90
  elif 'data' in part:
 
 
91
  prompts.append("[Image]")
92
 
93
  # Append the user input to the prompts list
94
  if user_input:
95
  prompts.append(user_input)
96
  st.session_state['chat_history'].append({"role": "user", "parts": [{"text": user_input}]})
 
 
97
 
98
  # Handle uploaded files
99
  if uploaded_files:
100
  for uploaded_file in uploaded_files:
101
  base64_image = get_image_base64(Image.open(uploaded_file))
102
  prompts.append("[Image]")
 
103
  st.session_state['chat_history'].append({
104
  "role": "user",
105
  "parts": [{"mime_type": uploaded_file.type, "data": base64_image}]
106
  })
107
 
 
 
 
108
  # Set up the model and generate a response
109
- model_name = 'gemini-pro-vision' if st.session_state.get('use_vision_model', False) else 'gemini-pro'
110
  model = genai.GenerativeModel(
111
  model_name=model_name,
112
  generation_config=generation_config,
113
  safety_settings=safety_settings
114
  )
115
  chat_history_str = "\n".join(prompts)
116
- prompt_parts = [{"text": chat_history_str}]
117
- response = model.generate_content([{"role": "user", "parts": prompt_parts}])
 
 
 
 
 
 
118
  response_text = response.text if hasattr(response, "text") else "No response text found."
119
 
120
  # After generating the response from the model, append it to the chat history
121
  if response_text:
122
- st.session_state['chat_history'].append({"role": "model", "parts": [{"text": response_text}]})
123
 
124
  # Convert the response text to speech
125
  tts = gTTS(text=response_text, lang='en')
 
7
  import google.generativeai as genai
8
  from io import BytesIO # Import BytesIO
9
 
 
10
  # Set your API key
11
  api_key = "AIzaSyC70u1sN87IkoxOoIj4XCAPw97ae2LZwNM" # Replace with your actual API key
12
  genai.configure(api_key=api_key)
 
80
  user_input = st.session_state.user_input
81
  uploaded_files = st.session_state.uploaded_files
82
  prompts = []
83
+ prompt_parts = []
84
 
85
  # Populate the prompts list with the existing chat history
86
  for entry in st.session_state['chat_history']:
 
88
  if 'text' in part:
89
  prompts.append(part['text'])
90
  elif 'data' in part:
91
+ # Add the image in base64 format to prompt_parts for vision model
92
+ prompt_parts.append({"data": part['data'], "mime_type": "image/jpeg"})
93
  prompts.append("[Image]")
94
 
95
  # Append the user input to the prompts list
96
  if user_input:
97
  prompts.append(user_input)
98
  st.session_state['chat_history'].append({"role": "user", "parts": [{"text": user_input}]})
99
+ # Also add the user text input to prompt_parts
100
+ prompt_parts.append({"text": user_input})
101
 
102
  # Handle uploaded files
103
  if uploaded_files:
104
  for uploaded_file in uploaded_files:
105
  base64_image = get_image_base64(Image.open(uploaded_file))
106
  prompts.append("[Image]")
107
+ prompt_parts.append({"data": base64_image, "mime_type": "image/jpeg"})
108
  st.session_state['chat_history'].append({
109
  "role": "user",
110
  "parts": [{"mime_type": uploaded_file.type, "data": base64_image}]
111
  })
112
 
113
+ # Determine if vision model should be used
114
+ use_vision_model = any(part.get('mime_type') == 'image/jpeg' for part in prompt_parts)
115
+
116
  # Set up the model and generate a response
117
+ model_name = 'gemini-pro-vision' if use_vision_model else 'gemini-pro'
118
  model = genai.GenerativeModel(
119
  model_name=model_name,
120
  generation_config=generation_config,
121
  safety_settings=safety_settings
122
  )
123
  chat_history_str = "\n".join(prompts)
124
+ if use_vision_model:
125
+ # Include text and images for vision model
126
+ generated_prompt = {"role": "user", "parts": prompt_parts}
127
+ else:
128
+ # Include text only for standard model
129
+ generated_prompt = {"role": "user", "parts": [{"text": chat_history_str}]}
130
+
131
+ response = model.generate_content([generated_prompt])
132
  response_text = response.text if hasattr(response, "text") else "No response text found."
133
 
134
  # After generating the response from the model, append it to the chat history
135
  if response_text:
136
+ st.session_state['chat_history'].append({"role": "model", "parts":[{"text": response_text}]})
137
 
138
  # Convert the response text to speech
139
  tts = gTTS(text=response_text, lang='en')