Update app.py
Browse files
app.py
CHANGED
|
@@ -31,7 +31,8 @@ def obtener_respuesta_groq(pregunta, contexto="", modelo="llama3-8b-8192", tempe
|
|
| 31 |
|
| 32 |
try:
|
| 33 |
with st.spinner('Evaluando su respuesta...'):
|
| 34 |
-
# Hacer la llamada a la API de Groq
|
|
|
|
| 35 |
response = client_groq.chat.completions.create(
|
| 36 |
messages=[
|
| 37 |
{"role": "system", "content": contexto},
|
|
@@ -124,17 +125,34 @@ def mostrar_galatea_asistente():
|
|
| 124 |
'pregunta': pregunta_usuario,
|
| 125 |
'tiempo_ejecucion': tiempo_ejecucion,
|
| 126 |
'tiempo_en_segundos': tiempo_en_segundos,
|
| 127 |
-
'audio_file_path': None
|
|
|
|
| 128 |
}
|
| 129 |
|
| 130 |
-
# Actualizar la interfaz cada segundo para verificar si el tiempo ha pasado
|
| 131 |
st_autorefresh(interval=1000, key="data_refresh")
|
| 132 |
|
| 133 |
# Verificar si hay una respuesta programada que deba ejecutarse
|
| 134 |
if 'respuesta_programada' in st.session_state and st.session_state['respuesta_programada']:
|
| 135 |
respuesta_programada = st.session_state['respuesta_programada']
|
| 136 |
-
|
| 137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
respuesta, audio_file_path = obtener_respuesta_groq(respuesta_programada['pregunta'])
|
| 139 |
|
| 140 |
# Guardar la respuesta y el audio en el estado
|
|
|
|
| 31 |
|
| 32 |
try:
|
| 33 |
with st.spinner('Evaluando su respuesta...'):
|
| 34 |
+
# Hacer la llamada a la API de Groq con el rol de Galatea
|
| 35 |
+
contexto = "Act煤as como Galatea, la asistente virtual de la cl铆nica odontol贸gica Omardent. Tu funci贸n es recordar citas y eventos de forma clara y profesional."
|
| 36 |
response = client_groq.chat.completions.create(
|
| 37 |
messages=[
|
| 38 |
{"role": "system", "content": contexto},
|
|
|
|
| 125 |
'pregunta': pregunta_usuario,
|
| 126 |
'tiempo_ejecucion': tiempo_ejecucion,
|
| 127 |
'tiempo_en_segundos': tiempo_en_segundos,
|
| 128 |
+
'audio_file_path': None,
|
| 129 |
+
'notificacion_reproducida': False # Para saber si se ha reproducido la notificaci贸n
|
| 130 |
}
|
| 131 |
|
| 132 |
+
# Actualizar la interfaz cada segundo para verificar si el tiempo ha pasado y mostrar el contador
|
| 133 |
st_autorefresh(interval=1000, key="data_refresh")
|
| 134 |
|
| 135 |
# Verificar si hay una respuesta programada que deba ejecutarse
|
| 136 |
if 'respuesta_programada' in st.session_state and st.session_state['respuesta_programada']:
|
| 137 |
respuesta_programada = st.session_state['respuesta_programada']
|
| 138 |
+
|
| 139 |
+
# Mostrar el contador del tiempo restante
|
| 140 |
+
tiempo_restante = respuesta_programada['tiempo_ejecucion'] - datetime.now()
|
| 141 |
+
if tiempo_restante.total_seconds() > 0:
|
| 142 |
+
minutos, segundos = divmod(int(tiempo_restante.total_seconds()), 60)
|
| 143 |
+
horas, minutos = divmod(minutos, 60)
|
| 144 |
+
tiempo_restante_str = f"{horas}h {minutos}m {segundos}s" if horas > 0 else f"{minutos}m {segundos}s"
|
| 145 |
+
st.info(f"Tiempo restante: {tiempo_restante_str}")
|
| 146 |
+
|
| 147 |
+
# Reproducir la notificaci贸n si el tiempo ha pasado y la notificaci贸n a煤n no se ha reproducido
|
| 148 |
+
if datetime.now() >= respuesta_programada['tiempo_ejecucion'] and not respuesta_programada['notificacion_reproducida']:
|
| 149 |
+
# Reproducir la notificaci贸n
|
| 150 |
+
with open("notificacion.mp3", "rb") as audio_file:
|
| 151 |
+
st.audio(audio_file.read(), format="audio/mp3")
|
| 152 |
+
st.session_state['respuesta_programada']['notificacion_reproducida'] = True # Marcar que se ha reproducido
|
| 153 |
+
|
| 154 |
+
# Generar la respuesta si ya se ha reproducido la notificaci贸n y no se ha generado el audio
|
| 155 |
+
if st.session_state['respuesta_programada']['notificacion_reproducida'] and st.session_state['respuesta_programada']['audio_file_path'] is None:
|
| 156 |
respuesta, audio_file_path = obtener_respuesta_groq(respuesta_programada['pregunta'])
|
| 157 |
|
| 158 |
# Guardar la respuesta y el audio en el estado
|