Josedcape commited on
Commit
f88f9c9
verified
1 Parent(s): 8282dc0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -37
app.py CHANGED
@@ -1,20 +1,24 @@
1
  import streamlit as st
 
2
  import os
3
  import time
4
  import base64
5
  import random
6
  from dotenv import load_dotenv
7
- from transformers import pipeline
8
- from google.cloud import texttospeech
9
  import PyPDF2
10
  from fpdf import FPDF
11
  import tempfile
12
 
13
-
14
  # Cargar variables de entorno desde el archivo .env
15
  load_dotenv()
 
 
 
16
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
17
- genai.configure(api_key=os.environ["AIzaSyCXSnXFNarDiECkKIbVjoEdFxEIFP-P14U"])
 
18
 
19
  # Configuraci贸n de Streamlit
20
  st.set_page_config(page_title="Asistente Teol贸gico", page_icon="馃摉")
@@ -103,23 +107,26 @@ st.markdown("Bienvenido al Asistente Teol贸gico, donde puedes preguntar sobre in
103
  st.sidebar.title("Navegaci贸n")
104
  page = st.sidebar.selectbox("Selecciona una p谩gina", ["P谩gina Principal", "Chat Asistente", "Generador de Frases B铆blicas", "Recibir Reflexi贸n", "La conexi贸n", "Diario Reflexivo"])
105
 
106
- # Cargar el modelo de clasificaci贸n de im谩genes
107
- clasificador = pipeline("zero-shot-image-classification")
 
 
 
 
 
 
 
108
 
109
- # Funci贸n para listar im谩genes de una carpeta local
110
- def listar_imagenes(carpeta):
111
- imagenes = []
112
- for archivo in os.listdir(carpeta):
113
- if archivo.endswith((".png", ".jpg", ".jpeg")):
114
- imagenes.append(os.path.join(carpeta, archivo))
115
- return imagenes
116
 
117
- # Funci贸n para generar reflexi贸n usando Google Gemini
118
  def generar_reflexion(keyword):
119
  prompt = f"Genera una reflexi贸n inspiradora sobre {keyword} en el contexto de la espiritualidad y la Biblia."
120
- model = genai.GenerativeModel(model_name="gemini-1.5-flash")
121
- response = model.generate_content([prompt])
122
- respuesta = response[0]['text']
123
  return respuesta
124
 
125
  # Funci贸n para convertir texto a voz
@@ -157,9 +164,7 @@ def generar_oracion_desde_pdf():
157
  pdf_path = "diario-de-oraciones.pdf" # Ruta al PDF
158
  texto_pdf = extraer_texto_pdf(pdf_path)
159
  prompt = f"Genera una oraci贸n inspiradora basada en el siguiente texto: {texto_pdf[:2000]}" # Limitar a los primeros 2000 caracteres
160
- model = genai.GenerativeModel(model_name="gemini-1.5-flash")
161
- response = model.generate_content([prompt])
162
- respuesta = response[0]['text']
163
  return respuesta
164
 
165
  # Funci贸n para generar y descargar un PDF con la entrada del diario
@@ -239,10 +244,7 @@ elif page == "Chat Asistente":
239
  spinner.empty()
240
 
241
  if pregunta_usuario:
242
- model = genai.GenerativeModel(model_name="gemini-1.5-flash")
243
- prompt = f"Genera una reflexi贸n inspiradora basada en la pregunta: {pregunta_usuario}"
244
- response = model.generate_content([prompt])
245
- respuesta = response[0]['text']
246
  st.session_state.mensajes.append({"role": "assistant", "content": respuesta, "timestamp": time.time()})
247
  with st.chat_message("assistant"):
248
  st.markdown(f'<div class="assistant-response">{respuesta}</div>', unsafe_allow_html=True)
@@ -276,19 +278,15 @@ elif page == "Generador de Frases B铆blicas":
276
  try:
277
  reflexion = generar_reflexion(keyword)
278
  audio_base64 = text_to_speech_base64(reflexion)
279
- imagenes = listar_imagenes("imagenes") # Cambia "imagenes" por la ruta de tu carpeta de im谩genes
280
- if imagenes:
281
- imagen_seleccionada = random.choice(imagenes)
282
- st.image(imagen_seleccionada)
283
- st.markdown(reflexion)
284
- audio_html = f"""
285
- <audio autoplay>
286
- <source src="data:audio/mp3;base64,{audio_base64}" type="audio/mp3">
287
- </audio>
288
- """
289
- st.markdown(audio_html, unsafe_allow_html=True)
290
- else:
291
- st.warning("No se encontraron im谩genes en la carpeta especificada.")
292
  except Exception as e:
293
  st.error(f"Error al generar la imagen y reflexi贸n: {e}")
294
 
 
1
  import streamlit as st
2
+ import openai
3
  import os
4
  import time
5
  import base64
6
  import random
7
  from dotenv import load_dotenv
8
+ from google.cloud import texttospeech, aiplatform
9
+ from google.auth import default
10
  import PyPDF2
11
  from fpdf import FPDF
12
  import tempfile
13
 
 
14
  # Cargar variables de entorno desde el archivo .env
15
  load_dotenv()
16
+ openai.api_key = os.getenv("OPENAI_API_KEY")
17
+ google_api_key = os.getenv("GOOGLE_API_KEY")
18
+ google_cx = os.getenv("GOOGLE_CX")
19
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
20
+ project_id = os.getenv("GOOGLE_PROJECT_ID")
21
+ location = os.getenv("GOOGLE_LOCATION")
22
 
23
  # Configuraci贸n de Streamlit
24
  st.set_page_config(page_title="Asistente Teol贸gico", page_icon="馃摉")
 
107
  st.sidebar.title("Navegaci贸n")
108
  page = st.sidebar.selectbox("Selecciona una p谩gina", ["P谩gina Principal", "Chat Asistente", "Generador de Frases B铆blicas", "Recibir Reflexi贸n", "La conexi贸n", "Diario Reflexivo"])
109
 
110
+ # Inicializar el cliente de Vertex AI
111
+ credentials, _ = default()
112
+ aiplatform.init(project=project_id, location=location, credentials=credentials)
113
+
114
+ # Funci贸n para generar im谩genes con Vertex AI
115
+ def generar_imagen_vertex(prompt):
116
+ model = aiplatform.TextToImage(model="projects/cloud-ml/models/gemini-1.0-pro")
117
+ response = model.predict(instances=[{"prompt": prompt}])
118
+ return response.predictions[0]["generated_image"]
119
 
120
+ # Funci贸n para generar texto con Vertex AI
121
+ def generar_texto_vertex(prompt):
122
+ model = aiplatform.TextGeneration(model="projects/cloud-ml/models/gemini-1.0-pro")
123
+ response = model.predict(instances=[{"prompt": prompt}])
124
+ return response.predictions[0]["generated_text"]
 
 
125
 
126
+ # Funci贸n para generar reflexi贸n usando Vertex AI
127
  def generar_reflexion(keyword):
128
  prompt = f"Genera una reflexi贸n inspiradora sobre {keyword} en el contexto de la espiritualidad y la Biblia."
129
+ respuesta = generar_texto_vertex(prompt)
 
 
130
  return respuesta
131
 
132
  # Funci贸n para convertir texto a voz
 
164
  pdf_path = "diario-de-oraciones.pdf" # Ruta al PDF
165
  texto_pdf = extraer_texto_pdf(pdf_path)
166
  prompt = f"Genera una oraci贸n inspiradora basada en el siguiente texto: {texto_pdf[:2000]}" # Limitar a los primeros 2000 caracteres
167
+ respuesta = generar_texto_vertex(prompt)
 
 
168
  return respuesta
169
 
170
  # Funci贸n para generar y descargar un PDF con la entrada del diario
 
244
  spinner.empty()
245
 
246
  if pregunta_usuario:
247
+ respuesta = generar_reflexion(pregunta_usuario)
 
 
 
248
  st.session_state.mensajes.append({"role": "assistant", "content": respuesta, "timestamp": time.time()})
249
  with st.chat_message("assistant"):
250
  st.markdown(f'<div class="assistant-response">{respuesta}</div>', unsafe_allow_html=True)
 
278
  try:
279
  reflexion = generar_reflexion(keyword)
280
  audio_base64 = text_to_speech_base64(reflexion)
281
+ imagen_url = generar_imagen_vertex(f"spirituality {keyword}")
282
+ st.image(imagen_url)
283
+ st.markdown(reflexion)
284
+ audio_html = f"""
285
+ <audio autoplay>
286
+ <source src="data:audio/mp3;base64,{audio_base64}" type="audio/mp3">
287
+ </audio>
288
+ """
289
+ st.markdown(audio_html, unsafe_allow_html=True)
 
 
 
 
290
  except Exception as e:
291
  st.error(f"Error al generar la imagen y reflexi贸n: {e}")
292