Josedcape commited on
Commit
12385d4
verified
1 Parent(s): 7fffadc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -11
app.py CHANGED
@@ -6,7 +6,6 @@ from google.cloud import texttospeech
6
  from dotenv import load_dotenv
7
  from docx import Document
8
  import base64
9
- import time
10
 
11
  # Configuraci贸n de la interfaz
12
  st.set_page_config(page_title="Boti Asistente", layout="wide")
@@ -16,14 +15,14 @@ load_dotenv()
16
  openai.api_key = os.getenv("OPENAI_API_KEY")
17
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
18
 
19
- # Funci贸n para obtener respuesta de OpenAI
20
- 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 o tres preguntas para ayudarte a orientar y 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 3 preguntas espec铆ficas."},
25
- {"role": "user", "content": pregunta}
26
- ],
27
  temperature=temperatura,
28
  max_tokens=300,
29
  )
@@ -91,6 +90,7 @@ def encuesta_asistente():
91
 
92
  if 'respuestas' not in st.session_state:
93
  st.session_state.respuestas = {}
 
94
  st.session_state.pregunta_actual = 0
95
  st.session_state.preguntas_adicionales = []
96
  st.session_state.pregunta_adicional_actual = 0
@@ -102,7 +102,7 @@ def encuesta_asistente():
102
  st.write("Por favor, para poder continuar con el cuestionario es necesario que responda todas las preguntas adicionales.")
103
  pregunta_adicional_actual = st.session_state.pregunta_adicional_actual
104
  pregunta_adicional = st.session_state.preguntas_adicionales[pregunta_adicional_actual]
105
- st.write(f"**Pregunta adicional {pregunta_adicional_actual + 1}:**")
106
 
107
  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}")
108
  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}")
@@ -114,6 +114,11 @@ def encuesta_asistente():
114
  st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 2)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}']
115
  st.session_state.respuestas[pregunta_adicional + " (Otras observaciones)"] = st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}']
116
 
 
 
 
 
 
117
  st.session_state.pregunta_adicional_actual += 1
118
 
119
  if st.session_state.pregunta_adicional_actual == len(st.session_state.preguntas_adicionales):
@@ -139,11 +144,15 @@ def encuesta_asistente():
139
  st.session_state.respuestas[pregunta_actual['pregunta']] = respuesta
140
 
141
  # Obtener respuesta del asistente
142
- respuesta_asistente = obtener_respuesta(respuesta)
143
  st.session_state.respuesta_actual = respuesta_asistente
144
 
 
 
 
 
145
  # Verificar si el asistente hace una pregunta adicional
146
- if "pregunta" in respuesta_asistente.lower() and len(st.session_state.preguntas_adicionales) < 5:
147
  st.session_state.preguntas_adicionales.append(respuesta_asistente)
148
  st.session_state.respuestas_adicionales_completadas = False
149
 
@@ -211,7 +220,7 @@ def incrustar_video_principal():
211
  video_bytes = open(video_path, 'rb').read()
212
  video_base64 = base64.b64encode(video_bytes).decode()
213
  video_html = f"""
214
- <video width="100%" autoplay muted>
215
  <source src="data:video/mp4;base64,{video_base64}" type="video/mp4">
216
  Tu navegador no soporta la reproducci贸n de videos.
217
  </video>
 
6
  from dotenv import load_dotenv
7
  from docx import Document
8
  import base64
 
9
 
10
  # Configuraci贸n de la interfaz
11
  st.set_page_config(page_title="Boti Asistente", layout="wide")
 
15
  openai.api_key = os.getenv("OPENAI_API_KEY")
16
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
17
 
18
+ # Funci贸n para obtener respuesta de OpenAI con historial de conversaci贸n
19
+ def obtener_respuesta(pregunta, historial, modelo="gpt-4", temperatura=0.5):
20
+ mensajes = historial + [
21
+ {"role": "user", "content": pregunta}
22
+ ]
23
  response = openai.ChatCompletion.create(
24
  model=modelo,
25
+ messages=mensajes,
 
 
 
26
  temperature=temperatura,
27
  max_tokens=300,
28
  )
 
90
 
91
  if 'respuestas' not in st.session_state:
92
  st.session_state.respuestas = {}
93
+ st.session_state.historial = [{"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 o tres preguntas para ayudarte a orientar y 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 3 preguntas espec铆ficas."}]
94
  st.session_state.pregunta_actual = 0
95
  st.session_state.preguntas_adicionales = []
96
  st.session_state.pregunta_adicional_actual = 0
 
102
  st.write("Por favor, para poder continuar con el cuestionario es necesario que responda todas las preguntas adicionales.")
103
  pregunta_adicional_actual = st.session_state.pregunta_adicional_actual
104
  pregunta_adicional = st.session_state.preguntas_adicionales[pregunta_adicional_actual]
105
+ st.write(f"**Pregunta adicional {pregunta_adicional_actual + 1}:** {pregunta_adicional}")
106
 
107
  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}")
108
  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}")
 
114
  st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 2)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}']
115
  st.session_state.respuestas[pregunta_adicional + " (Otras observaciones)"] = st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}']
116
 
117
+ st.session_state.historial.append({"role": "user", "content": st.session_state.respuestas_adicionales[f'respuesta_adicional_1_{pregunta_adicional_actual}']})
118
+ st.session_state.historial.append({"role": "user", "content": st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}']})
119
+ st.session_state.historial.append({"role": "user", "content": st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}']})
120
+ st.session_state.historial.append({"role": "assistant", "content": st.session_state.respuesta_actual})
121
+
122
  st.session_state.pregunta_adicional_actual += 1
123
 
124
  if st.session_state.pregunta_adicional_actual == len(st.session_state.preguntas_adicionales):
 
144
  st.session_state.respuestas[pregunta_actual['pregunta']] = respuesta
145
 
146
  # Obtener respuesta del asistente
147
+ respuesta_asistente = obtener_respuesta(respuesta, st.session_state.historial)
148
  st.session_state.respuesta_actual = respuesta_asistente
149
 
150
+ # Agregar la pregunta y respuesta actual al historial
151
+ st.session_state.historial.append({"role": "user", "content": respuesta})
152
+ st.session_state.historial.append({"role": "assistant", "content": respuesta_asistente})
153
+
154
  # Verificar si el asistente hace una pregunta adicional
155
+ if "pregunta" in respuesta_asistente.lower() and len(st.session_state.preguntas_adicionales) < 3:
156
  st.session_state.preguntas_adicionales.append(respuesta_asistente)
157
  st.session_state.respuestas_adicionales_completadas = False
158
 
 
220
  video_bytes = open(video_path, 'rb').read()
221
  video_base64 = base64.b64encode(video_bytes).decode()
222
  video_html = f"""
223
+ <video width="100%" autoplay>
224
  <source src="data:video/mp4;base64,{video_base64}" type="video/mp4">
225
  Tu navegador no soporta la reproducci贸n de videos.
226
  </video>