jeysshon commited on
Commit
552467f
verified
1 Parent(s): fcc2e8f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -28
app.py CHANGED
@@ -1,7 +1,9 @@
1
  import streamlit as st
2
  from PIL import Image
3
  import speech_recognition as sr
4
- from transformers import pipeline
 
 
5
  import pyttsx3
6
 
7
  # Configuraci贸n de la p谩gina de Streamlit
@@ -10,35 +12,58 @@ st.set_page_config(layout="wide")
10
  # Configuraci贸n de la API key para Google Generative AI
11
  api_key = "AIzaSyDJZ3r6VRhRivR0pb96cBRg_VvGg_fXq5k" # API key proporcionada
12
 
13
- # Inicializaci贸n de los pipelines de Hugging Face
14
- generator = pipeline("text-generation", model="gpt-3.5-turbo") # Usa el modelo de Hugging Face para generaci贸n de texto
 
 
 
 
 
 
 
 
 
 
 
15
 
16
- # Lista para almacenar el historial de interacci贸n
17
- historial = []
 
18
 
19
  def guardar_historial(modo_entrada, entrada_usuario, respuesta):
20
- historial.append({
21
- "modo_entrada": modo_entrada,
22
- "entrada_usuario": entrada_usuario,
23
- "respuesta": respuesta
24
- })
 
 
25
 
26
  def cargar_historial():
27
- return historial
 
 
 
28
 
29
- def eliminar_historial(indice):
30
- if 0 <= indice < len(historial):
31
- historial.pop(indice)
32
 
33
  def procesar_texto(texto):
34
- respuesta = generator(texto, max_length=100)[0]['generated_text']
35
- guardar_historial("Texto", texto, respuesta)
36
- return respuesta
 
 
 
37
 
38
  def procesar_imagen(imagen):
39
- respuesta = generator(f"Process image {imagen.name}", max_length=100)[0]['generated_text']
40
- guardar_historial("Imagen", imagen.name, respuesta)
41
- return respuesta
 
 
 
42
 
43
  def reconocer_voz():
44
  reconocedor = sr.Recognizer()
@@ -60,25 +85,27 @@ def hablar_texto(texto):
60
 
61
  st.sidebar.title("Historial")
62
 
 
 
 
63
  # Mostrar historial en la barra lateral
64
- for i, entrada in enumerate(cargar_historial()):
65
  with st.sidebar.expander(f"{entrada['entrada_usuario']}"):
66
  col1, col2 = st.columns([1, 1])
67
  with col1:
68
- if st.button("Respuesta", key=f"respuesta_{i}"):
69
- st.session_state.respuesta_seleccionada = entrada['respuesta']
70
  with col2:
71
- if st.button("Eliminar", key=f"eliminar_{i}"):
72
- eliminar_historial(i)
73
- st.experimental_rerun()
74
 
75
  st.title("馃 ChatBot")
76
 
77
  espacio_contenido_generado = st.empty()
78
 
79
  # Mostrar respuesta seleccionada
80
- if 'respuesta_seleccionada' in st.session_state:
81
- respuesta_seleccionada = st.session_state.respuesta_seleccionada
82
  espacio_contenido_generado.write(respuesta_seleccionada)
83
  if st.button("馃攰 Hablar"):
84
  hablar_texto(respuesta_seleccionada)
 
1
  import streamlit as st
2
  from PIL import Image
3
  import speech_recognition as sr
4
+ import google.generativeai as genai
5
+ from pymongo import MongoClient
6
+ from bson.objectid import ObjectId
7
  import pyttsx3
8
 
9
  # Configuraci贸n de la p谩gina de Streamlit
 
12
  # Configuraci贸n de la API key para Google Generative AI
13
  api_key = "AIzaSyDJZ3r6VRhRivR0pb96cBRg_VvGg_fXq5k" # API key proporcionada
14
 
15
+ # Configuraci贸n de la base de datos MongoDB
16
+ def obtener_cliente_mongo():
17
+ try:
18
+ cliente = MongoClient("mongodb://localhost:27017/")
19
+ cliente.server_info() # Verifica la conexi贸n
20
+ return cliente
21
+ except Exception as e:
22
+ st.error(f"Error: No se pudo conectar a MongoDB. Verifica que el servidor est茅 en ejecuci贸n. Detalles: {e}")
23
+ return None
24
+
25
+ cliente = obtener_cliente_mongo()
26
+ db = None
27
+ coleccion_historial = None
28
 
29
+ if cliente:
30
+ db = cliente["historial_busquedas"]
31
+ coleccion_historial = db["historial"]
32
 
33
  def guardar_historial(modo_entrada, entrada_usuario, respuesta):
34
+ if coleccion_historial:
35
+ entrada_historial = {
36
+ "modo_entrada": modo_entrada,
37
+ "entrada_usuario": entrada_usuario,
38
+ "respuesta": respuesta
39
+ }
40
+ coleccion_historial.insert_one(entrada_historial)
41
 
42
  def cargar_historial():
43
+ if coleccion_historial:
44
+ entradas_historial = list(coleccion_historial.find().sort("_id", -1))
45
+ return entradas_historial
46
+ return []
47
 
48
+ def eliminar_historial(id_entrada):
49
+ if coleccion_historial:
50
+ coleccion_historial.delete_one({"_id": ObjectId(id_entrada)})
51
 
52
  def procesar_texto(texto):
53
+ genai.configure(api_key=api_key)
54
+ modelo = genai.GenerativeModel('gemini-1.5-pro-latest')
55
+ respuesta = modelo.generate_content(texto)
56
+ resultado = respuesta.text
57
+ guardar_historial("Texto", texto, resultado)
58
+ return resultado
59
 
60
  def procesar_imagen(imagen):
61
+ genai.configure(api_key=api_key)
62
+ modelo = genai.GenerativeModel('gemini-1.5-pro-latest')
63
+ respuesta = modelo.generate_content(imagen.name) # Asume que `generate_content` maneja el nombre de la imagen como entrada v谩lida
64
+ resultado = respuesta.text
65
+ guardar_historial("Imagen", imagen.name, resultado)
66
+ return resultado
67
 
68
  def reconocer_voz():
69
  reconocedor = sr.Recognizer()
 
85
 
86
  st.sidebar.title("Historial")
87
 
88
+ historial = cargar_historial()
89
+ respuesta_seleccionada = None
90
+
91
  # Mostrar historial en la barra lateral
92
+ for entrada in historial:
93
  with st.sidebar.expander(f"{entrada['entrada_usuario']}"):
94
  col1, col2 = st.columns([1, 1])
95
  with col1:
96
+ if st.button("Respuesta", key=str(entrada['_id'])):
97
+ respuesta_seleccionada = entrada['respuesta']
98
  with col2:
99
+ if st.button("Eliminar", key=f"eliminar_{entrada['_id']}"):
100
+ eliminar_historial(entrada['_id'])
101
+ st.rerun() # Usa `st.rerun()` en lugar de `st.experimental_rerun()`
102
 
103
  st.title("馃 ChatBot")
104
 
105
  espacio_contenido_generado = st.empty()
106
 
107
  # Mostrar respuesta seleccionada
108
+ if respuesta_seleccionada:
 
109
  espacio_contenido_generado.write(respuesta_seleccionada)
110
  if st.button("馃攰 Hablar"):
111
  hablar_texto(respuesta_seleccionada)