Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -182,49 +182,39 @@ def process_text(user_name, text_input, selected_model, temp_values):
|
|
182 |
st.markdown(f"{user_name} ({timestamp}): {text_input}")
|
183 |
|
184 |
with st.chat_message("Assistant"):
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
{"role": "user", "content": m["message"]}
|
191 |
-
for m in st.session_state.messages
|
192 |
-
],
|
193 |
-
stream=True,
|
194 |
-
temperature=temp_values
|
195 |
-
)
|
196 |
-
return_text = st.write_stream(completion)
|
197 |
-
else:
|
198 |
-
messages = [
|
199 |
-
{"content": m["message"]}
|
200 |
for m in st.session_state.messages
|
201 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
stream = hf_client.chat.completions.create(
|
203 |
model=model_links[selected_model],
|
204 |
-
messages=
|
|
|
|
|
|
|
205 |
temperature=temp_values,
|
206 |
stream=True,
|
207 |
max_tokens=3000,
|
208 |
)
|
209 |
return_text = st.write_stream(stream)
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
except requests.exceptions.RequestException as e:
|
214 |
-
return_text = f"Network Error: {str(e)}"
|
215 |
-
st.error(return_text)
|
216 |
-
except Exception as e:
|
217 |
-
return_text = f"Unexpected Error: {str(e)}"
|
218 |
-
st.error(return_text)
|
219 |
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
save_data()
|
226 |
-
|
227 |
-
return return_text
|
228 |
|
229 |
# Function to process image (using GPT-4o)
|
230 |
def process_image(user_name, image_input, user_prompt):
|
@@ -276,7 +266,6 @@ def process_audio(user_name, audio_input, text_input):
|
|
276 |
create_file(filename, text_input, transcription.text, user_name, timestamp)
|
277 |
st.session_state.messages.append({"user": "Assistant", "message": transcription.text, "timestamp": timestamp})
|
278 |
save_data()
|
279 |
-
return transcription.text
|
280 |
|
281 |
# Function to process video (using GPT-4o)
|
282 |
def process_video(user_name, video_input, user_prompt):
|
@@ -307,45 +296,6 @@ def process_video(user_name, video_input, user_prompt):
|
|
307 |
save_data()
|
308 |
return video_response
|
309 |
|
310 |
-
# Callback function for text processing
|
311 |
-
def process_text_callback(column_name):
|
312 |
-
text_input = st.session_state[f"{column_name}_text"]
|
313 |
-
selected_model = st.session_state[f"{column_name}_model"]
|
314 |
-
temp_values = st.session_state[f"{column_name}_temp"]
|
315 |
-
if text_input:
|
316 |
-
process_text(st.session_state.current_user['name'], text_input, selected_model, temp_values)
|
317 |
-
st.session_state[f"{column_name}_text"] = "" # Clear the input after processing
|
318 |
-
|
319 |
-
# Callback function for image processing
|
320 |
-
def process_image_callback(column_name):
|
321 |
-
text_input = st.session_state[f"{column_name}_image_text"]
|
322 |
-
uploaded_files = st.session_state[f"{column_name}_image_upload"]
|
323 |
-
if text_input and uploaded_files:
|
324 |
-
for image_input in uploaded_files:
|
325 |
-
image_bytes = image_input.read()
|
326 |
-
process_image(st.session_state.current_user['name'], image_bytes, text_input)
|
327 |
-
st.session_state[f"{column_name}_image_text"] = "" # Clear the input after processing
|
328 |
-
st.session_state[f"{column_name}_image_upload"] = None # Clear the file uploader
|
329 |
-
|
330 |
-
# Callback function for audio processing
|
331 |
-
def process_audio_callback(column_name):
|
332 |
-
text_input = st.session_state[f"{column_name}_audio_text"]
|
333 |
-
uploaded_files = st.session_state[f"{column_name}_audio_upload"]
|
334 |
-
if uploaded_files:
|
335 |
-
for audio_input in uploaded_files:
|
336 |
-
process_audio(st.session_state.current_user['name'], audio_input, text_input)
|
337 |
-
st.session_state[f"{column_name}_audio_text"] = "" # Clear the input after processing
|
338 |
-
st.session_state[f"{column_name}_audio_upload"] = None # Clear the file uploader
|
339 |
-
|
340 |
-
# Callback function for video processing
|
341 |
-
def process_video_callback(column_name):
|
342 |
-
text_input = st.session_state[f"{column_name}_video_text"]
|
343 |
-
video_input = st.session_state[f"{column_name}_video_upload"]
|
344 |
-
if video_input and text_input:
|
345 |
-
process_video(st.session_state.current_user['name'], video_input, text_input)
|
346 |
-
st.session_state[f"{column_name}_video_text"] = "" # Clear the input after processing
|
347 |
-
st.session_state[f"{column_name}_video_upload"] = None # Clear the file uploader
|
348 |
-
|
349 |
# Main function for each column
|
350 |
def main_column(column_name):
|
351 |
st.markdown(f"##### {column_name}")
|
@@ -355,20 +305,25 @@ def main_column(column_name):
|
|
355 |
option = st.selectbox(f"Select an option for {column_name}", ("Text", "Image", "Audio", "Video"), key=f"{column_name}_option")
|
356 |
|
357 |
if option == "Text":
|
358 |
-
st.text_input(f"Enter your text for {column_name}:", key=f"{column_name}_text")
|
359 |
-
|
|
|
360 |
elif option == "Image":
|
361 |
-
st.text_input(f"Enter text prompt to use with Image context for {column_name}:", key=f"{column_name}_image_text")
|
362 |
-
st.file_uploader(f"Upload images for {column_name}", type=["png", "jpg", "jpeg"], accept_multiple_files=True, key=f"{column_name}_image_upload")
|
363 |
-
|
|
|
|
|
364 |
elif option == "Audio":
|
365 |
-
st.text_input(f"Enter text prompt to use with Audio context for {column_name}:", key=f"{column_name}_audio_text")
|
366 |
-
st.file_uploader(f"Upload an audio file for {column_name}", type=["mp3", "wav"], accept_multiple_files=True, key=f"{column_name}_audio_upload")
|
367 |
-
|
|
|
368 |
elif option == "Video":
|
369 |
-
st.file_uploader(f"Upload a video file for {column_name}", type=["mp4"], key=f"{column_name}_video_upload")
|
370 |
-
st.text_input(f"Enter text prompt to use with Video context for {column_name}:", key=f"{column_name}_video_text")
|
371 |
-
|
|
|
372 |
|
373 |
# Main Streamlit app
|
374 |
st.title("Personalized Real-Time Chat")
|
@@ -409,4 +364,5 @@ with col2:
|
|
409 |
|
410 |
# Run the Streamlit app
|
411 |
if __name__ == "__main__":
|
412 |
-
st.markdown("
|
|
|
|
182 |
st.markdown(f"{user_name} ({timestamp}): {text_input}")
|
183 |
|
184 |
with st.chat_message("Assistant"):
|
185 |
+
if selected_model == "GPT-4o":
|
186 |
+
completion = client.chat.completions.create(
|
187 |
+
model=GPT4O_MODEL,
|
188 |
+
messages=[
|
189 |
+
{"role": "user", "content": m["message"]}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
for m in st.session_state.messages
|
191 |
+
],
|
192 |
+
stream=True,
|
193 |
+
temperature=temp_values
|
194 |
+
)
|
195 |
+
return_text = st.write_stream(completion)
|
196 |
+
else:
|
197 |
+
try:
|
198 |
stream = hf_client.chat.completions.create(
|
199 |
model=model_links[selected_model],
|
200 |
+
messages=[
|
201 |
+
{"role": m["role"], "content": m["content"]}
|
202 |
+
for m in st.session_state.messages
|
203 |
+
],
|
204 |
temperature=temp_values,
|
205 |
stream=True,
|
206 |
max_tokens=3000,
|
207 |
)
|
208 |
return_text = st.write_stream(stream)
|
209 |
+
except Exception as e:
|
210 |
+
return_text = f"Error: {str(e)}"
|
211 |
+
st.error(return_text)
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
|
213 |
+
st.markdown(f"Assistant ({timestamp}): {return_text}")
|
214 |
+
filename = generate_filename(text_input, "md")
|
215 |
+
create_file(filename, text_input, return_text, user_name, timestamp)
|
216 |
+
st.session_state.messages.append({"user": "Assistant", "message": return_text, "timestamp": timestamp})
|
217 |
+
save_data()
|
|
|
|
|
|
|
218 |
|
219 |
# Function to process image (using GPT-4o)
|
220 |
def process_image(user_name, image_input, user_prompt):
|
|
|
266 |
create_file(filename, text_input, transcription.text, user_name, timestamp)
|
267 |
st.session_state.messages.append({"user": "Assistant", "message": transcription.text, "timestamp": timestamp})
|
268 |
save_data()
|
|
|
269 |
|
270 |
# Function to process video (using GPT-4o)
|
271 |
def process_video(user_name, video_input, user_prompt):
|
|
|
296 |
save_data()
|
297 |
return video_response
|
298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
# Main function for each column
|
300 |
def main_column(column_name):
|
301 |
st.markdown(f"##### {column_name}")
|
|
|
305 |
option = st.selectbox(f"Select an option for {column_name}", ("Text", "Image", "Audio", "Video"), key=f"{column_name}_option")
|
306 |
|
307 |
if option == "Text":
|
308 |
+
text_input = st.text_input(f"Enter your text for {column_name}:", key=f"{column_name}_text")
|
309 |
+
if text_input:
|
310 |
+
process_text(st.session_state.current_user['name'], text_input, selected_model, temp_values)
|
311 |
elif option == "Image":
|
312 |
+
text_input = st.text_input(f"Enter text prompt to use with Image context for {column_name}:", key=f"{column_name}_image_text")
|
313 |
+
uploaded_files = st.file_uploader(f"Upload images for {column_name}", type=["png", "jpg", "jpeg"], accept_multiple_files=True, key=f"{column_name}_image_upload")
|
314 |
+
for image_input in uploaded_files:
|
315 |
+
image_bytes = image_input.read()
|
316 |
+
process_image(st.session_state.current_user['name'], image_bytes, text_input)
|
317 |
elif option == "Audio":
|
318 |
+
text_input = st.text_input(f"Enter text prompt to use with Audio context for {column_name}:", key=f"{column_name}_audio_text")
|
319 |
+
uploaded_files = st.file_uploader(f"Upload an audio file for {column_name}", type=["mp3", "wav"], accept_multiple_files=True, key=f"{column_name}_audio_upload")
|
320 |
+
for audio_input in uploaded_files:
|
321 |
+
process_audio(st.session_state.current_user['name'], audio_input, text_input)
|
322 |
elif option == "Video":
|
323 |
+
video_input = st.file_uploader(f"Upload a video file for {column_name}", type=["mp4"], key=f"{column_name}_video_upload")
|
324 |
+
text_input = st.text_input(f"Enter text prompt to use with Video context for {column_name}:", key=f"{column_name}_video_text")
|
325 |
+
if video_input and text_input:
|
326 |
+
process_video(st.session_state.current_user['name'], video_input, text_input)
|
327 |
|
328 |
# Main Streamlit app
|
329 |
st.title("Personalized Real-Time Chat")
|
|
|
364 |
|
365 |
# Run the Streamlit app
|
366 |
if __name__ == "__main__":
|
367 |
+
st.markdown("*by Aaron Wacker*")
|
368 |
+
st.markdown("\n[Aaron Wacker](https://huggingface.co/spaces/awacke1/).")
|