Josedcape commited on
Commit
e37279b
verified
1 Parent(s): 1f3903b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -53
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 dos preguntas muy especificas 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 tres preguntas espec铆ficas."},
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.pregunta_actual < len(preguntas):
99
- pregunta_actual = preguntas[st.session_state.pregunta_actual]
100
- st.write(f"**Pregunta:** {pregunta_actual['pregunta']}")
101
-
102
- if pregunta_actual["tipo"] == "texto":
103
- respuesta = st.text_input("Tu respuesta:", key=f"respuesta_{st.session_state.pregunta_actual}")
104
- elif pregunta_actual["tipo"] == "multiple":
105
- respuesta = st.selectbox("Selecciona una opci贸n:", pregunta_actual["opciones"], key=f"respuesta_{st.session_state.pregunta_actual}")
106
- if respuesta == "Otro":
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 respuesta", key=f"btn_{st.session_state.pregunta_actual}"):
112
- with st.spinner('Procesando su respuesta, por favor espere...'):
113
- st.session_state.respuestas[pregunta_actual['pregunta']] = respuesta
 
 
114
 
115
- # Obtener respuesta del asistente
116
- respuesta_asistente = obtener_respuesta(respuesta)
117
- st.session_state.respuesta_actual = respuesta_asistente
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
 
119
- # Verificar si el asistente hace una pregunta adicional
120
- if "pregunta" in respuesta_asistente.lower() and len(st.session_state.preguntas_adicionales) < 3:
121
- st.session_state.preguntas_adicionales.append(respuesta_asistente)
122
 
123
- # Convertir respuesta a audio
124
- audio_path = text_to_speech(respuesta_asistente)
125
- st.session_state.audio_path = audio_path
126
 
127
- st.session_state.pregunta_actual += 1
128
- st.experimental_rerun()
129
- else:
130
- st.write("Gracias por responder todas las preguntas. Haz clic en 'Registrar Encuesta' para finalizar y generar el archivo descargable.")
131
- if st.button("Registrar Encuesta"):
132
- st.session_state.encuesta_completada = True
133
- st.success("Encuesta completada exitosamente. Haz clic en 'Obtener Resultado de la Encuesta' para descargar el archivo.")
 
 
 
 
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 muted>
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>