Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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) <
|
| 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
|
| 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>
|