Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -21,7 +21,7 @@ def obtener_respuesta(pregunta, modelo="gpt-4", temperatura=0.5):
|
|
| 21 |
response = openai.ChatCompletion.create(
|
| 22 |
model=modelo,
|
| 23 |
messages=[
|
| 24 |
-
{"role": "system", "content": "Eres Boty, un asistente de la empresa Botidinamix AI para el desarrollo e implementaci贸n de asistentes virtuales automatizados. Te guiar谩s a trav茅s de
|
| 25 |
{"role": "user", "content": pregunta}
|
| 26 |
],
|
| 27 |
temperature=temperatura,
|
|
@@ -94,43 +94,63 @@ def encuesta_asistente():
|
|
| 94 |
st.session_state.pregunta_actual = 0
|
| 95 |
st.session_state.preguntas_adicionales = []
|
| 96 |
st.session_state.pregunta_adicional_actual = 0
|
|
|
|
| 97 |
|
| 98 |
-
if st.session_state.
|
| 99 |
-
|
| 100 |
-
st.
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
respuesta_otro = st.text_input("Por favor especifica:", key=f"respuesta_otro_{st.session_state.pregunta_actual}")
|
| 108 |
-
if respuesta_otro:
|
| 109 |
-
respuesta = respuesta_otro
|
| 110 |
|
| 111 |
-
if st.button("Enviar
|
| 112 |
-
with st.spinner('Procesando
|
| 113 |
-
st.session_state.respuestas[
|
|
|
|
|
|
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
st.session_state.
|
| 122 |
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 134 |
|
| 135 |
if 'respuesta_actual' in st.session_state:
|
| 136 |
st.write("Respuesta del asistente:")
|
|
@@ -150,26 +170,6 @@ def encuesta_asistente():
|
|
| 150 |
unsafe_allow_html=True
|
| 151 |
)
|
| 152 |
|
| 153 |
-
# Preguntas adicionales
|
| 154 |
-
if st.session_state.preguntas_adicionales:
|
| 155 |
-
st.markdown("<h3>Preguntas Adicionales:</h3>", unsafe_allow_html=True)
|
| 156 |
-
pregunta_adicional_actual = st.session_state.pregunta_adicional_actual
|
| 157 |
-
if pregunta_adicional_actual < len(st.session_state.preguntas_adicionales):
|
| 158 |
-
pregunta_adicional = st.session_state.preguntas_adicionales[pregunta_adicional_actual]
|
| 159 |
-
st.write(f"**Pregunta adicional {pregunta_adicional_actual + 1}:** {pregunta_adicional}")
|
| 160 |
-
respuesta_adicional = st.text_input("Tu respuesta:", key=f"respuesta_adicional_{pregunta_adicional_actual}")
|
| 161 |
-
if st.button("Enviar respuesta adicional", key=f"btn_adicional_{pregunta_adicional_actual}"):
|
| 162 |
-
with st.spinner('Procesando su respuesta, por favor espere...'):
|
| 163 |
-
st.session_state.respuestas[pregunta_adicional] = respuesta_adicional
|
| 164 |
-
respuesta_asistente = obtener_respuesta(respuesta_adicional)
|
| 165 |
-
st.session_state.respuesta_actual = respuesta_asistente
|
| 166 |
-
|
| 167 |
-
audio_path = text_to_speech(respuesta_asistente)
|
| 168 |
-
st.session_state.audio_path = audio_path
|
| 169 |
-
|
| 170 |
-
st.session_state.pregunta_adicional_actual += 1
|
| 171 |
-
st.experimental_rerun()
|
| 172 |
-
|
| 173 |
if 'encuesta_completada' in st.session_state and st.session_state.encuesta_completada:
|
| 174 |
if st.button("Obtener Resultado de la Encuesta"):
|
| 175 |
generar_documento()
|
|
@@ -204,7 +204,7 @@ def incrustar_video_principal():
|
|
| 204 |
video_bytes = open(video_path, 'rb').read()
|
| 205 |
video_base64 = base64.b64encode(video_bytes).decode()
|
| 206 |
video_html = f"""
|
| 207 |
-
<video width="100%" autoplay
|
| 208 |
<source src="data:video/mp4;base64,{video_base64}" type="video/mp4">
|
| 209 |
Tu navegador no soporta la reproducci贸n de videos.
|
| 210 |
</video>
|
|
|
|
| 21 |
response = openai.ChatCompletion.create(
|
| 22 |
model=modelo,
|
| 23 |
messages=[
|
| 24 |
+
{"role": "system", "content": "Eres Boty, un asistente de la empresa Botidinamix AI para el desarrollo e implementaci贸n de asistentes virtuales automatizados. Te guiar谩s a trav茅s de una serie de preguntas para ayudarte a configurar tu asistente virtual. Act煤as de manera muy amable, entusiasta y te diriges por el nombre a cada encuestado. Limita las preguntas adicionales a un m谩ximo de cinco preguntas espec铆ficas."},
|
| 25 |
{"role": "user", "content": pregunta}
|
| 26 |
],
|
| 27 |
temperature=temperatura,
|
|
|
|
| 94 |
st.session_state.pregunta_actual = 0
|
| 95 |
st.session_state.preguntas_adicionales = []
|
| 96 |
st.session_state.pregunta_adicional_actual = 0
|
| 97 |
+
st.session_state.respuestas_adicionales = {}
|
| 98 |
|
| 99 |
+
if st.session_state.pregunta_adicional_actual < len(st.session_state.preguntas_adicionales):
|
| 100 |
+
st.write("Por favor, para poder continuar con el cuestionario es necesario que responda todas las preguntas adicionales.")
|
| 101 |
+
pregunta_adicional_actual = st.session_state.pregunta_adicional_actual
|
| 102 |
+
pregunta_adicional = st.session_state.preguntas_adicionales[pregunta_adicional_actual]
|
| 103 |
+
st.write(f"**Pregunta adicional {pregunta_adicional_actual + 1}:** {pregunta_adicional}")
|
| 104 |
+
|
| 105 |
+
st.session_state.respuestas_adicionales[f'respuesta_adicional_1_{pregunta_adicional_actual}'] = st.text_input("Respuesta adicional 1:", key=f"respuesta_adicional_1_{pregunta_adicional_actual}")
|
| 106 |
+
st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}'] = st.text_input("Respuesta adicional 2:", key=f"respuesta_adicional_2_{pregunta_adicional_actual}")
|
| 107 |
+
st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}'] = st.text_input("Otras observaciones:", key=f'otras_observaciones_{pregunta_adicional_actual}')
|
|
|
|
|
|
|
|
|
|
| 108 |
|
| 109 |
+
if st.button("Enviar respuestas adicionales", key=f"btn_adicional_{pregunta_adicional_actual}"):
|
| 110 |
+
with st.spinner('Procesando sus respuestas, por favor espere...'):
|
| 111 |
+
st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 1)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_1_{pregunta_adicional_actual}']
|
| 112 |
+
st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 2)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}']
|
| 113 |
+
st.session_state.respuestas[pregunta_adicional + " (Otras observaciones)"] = st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}']
|
| 114 |
|
| 115 |
+
st.session_state.pregunta_adicional_actual += 1
|
| 116 |
+
st.experimental_rerun()
|
| 117 |
+
else:
|
| 118 |
+
if st.session_state.pregunta_actual < len(preguntas):
|
| 119 |
+
pregunta_actual = preguntas[st.session_state.pregunta_actual]
|
| 120 |
+
st.write(f"**Pregunta:** {pregunta_actual['pregunta']}")
|
| 121 |
+
|
| 122 |
+
if pregunta_actual["tipo"] == "texto":
|
| 123 |
+
respuesta = st.text_input("Tu respuesta:", key=f"respuesta_{st.session_state.pregunta_actual}")
|
| 124 |
+
elif pregunta_actual["tipo"] == "multiple":
|
| 125 |
+
respuesta = st.selectbox("Selecciona una opci贸n:", pregunta_actual["opciones"], key=f"respuesta_{st.session_state.pregunta_actual}")
|
| 126 |
+
if respuesta == "Otro":
|
| 127 |
+
respuesta_otro = st.text_input("Por favor especifica:", key=f"respuesta_otro_{st.session_state.pregunta_actual}")
|
| 128 |
+
if respuesta_otro:
|
| 129 |
+
respuesta = respuesta_otro
|
| 130 |
+
|
| 131 |
+
if st.button("Enviar respuesta", key=f"btn_{st.session_state.pregunta_actual}"):
|
| 132 |
+
with st.spinner('Procesando su respuesta, por favor espere...'):
|
| 133 |
+
st.session_state.respuestas[pregunta_actual['pregunta']] = respuesta
|
| 134 |
|
| 135 |
+
# Obtener respuesta del asistente
|
| 136 |
+
respuesta_asistente = obtener_respuesta(respuesta)
|
| 137 |
+
st.session_state.respuesta_actual = respuesta_asistente
|
| 138 |
|
| 139 |
+
# Verificar si el asistente hace una pregunta adicional
|
| 140 |
+
if "pregunta" in respuesta_asistente.lower() and len(st.session_state.preguntas_adicionales) < 5:
|
| 141 |
+
st.session_state.preguntas_adicionales.append(respuesta_asistente)
|
| 142 |
|
| 143 |
+
# Convertir respuesta a audio
|
| 144 |
+
audio_path = text_to_speech(respuesta_asistente)
|
| 145 |
+
st.session_state.audio_path = audio_path
|
| 146 |
+
|
| 147 |
+
st.session_state.pregunta_actual += 1
|
| 148 |
+
st.experimental_rerun()
|
| 149 |
+
else:
|
| 150 |
+
st.write("Gracias por responder todas las preguntas. Haz clic en 'Registrar Encuesta' para finalizar y generar el archivo descargable.")
|
| 151 |
+
if st.button("Registrar Encuesta"):
|
| 152 |
+
st.session_state.encuesta_completada = True
|
| 153 |
+
st.success("Encuesta completada exitosamente. Haz clic en 'Obtener Resultado de la Encuesta' para descargar el archivo.")
|
| 154 |
|
| 155 |
if 'respuesta_actual' in st.session_state:
|
| 156 |
st.write("Respuesta del asistente:")
|
|
|
|
| 170 |
unsafe_allow_html=True
|
| 171 |
)
|
| 172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 173 |
if 'encuesta_completada' in st.session_state and st.session_state.encuesta_completada:
|
| 174 |
if st.button("Obtener Resultado de la Encuesta"):
|
| 175 |
generar_documento()
|
|
|
|
| 204 |
video_bytes = open(video_path, 'rb').read()
|
| 205 |
video_base64 = base64.b64encode(video_bytes).decode()
|
| 206 |
video_html = f"""
|
| 207 |
+
<video width="100%" autoplay>
|
| 208 |
<source src="data:video/mp4;base64,{video_base64}" type="video/mp4">
|
| 209 |
Tu navegador no soporta la reproducci贸n de videos.
|
| 210 |
</video>
|