Spaces:
Runtime error
Runtime error
Commit
·
36e811b
1
Parent(s):
23ed2c1
Update app.py
Browse files
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
|
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 |
-
|
117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
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":
|
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')
|