GeminiChatbot / app.py
VicMata's picture
Update app.py
c9e76f1 verified
import streamlit as st
import os
import google.generativeai as genai
from dotenv import load_dotenv
import fitz
load_dotenv()
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
genai.configure(api_key=GEMINI_API_KEY)
MODEL_NAME = "gemini-2.5-pro-exp-03-25"
def generate_response(user_input):
try:
model = genai.GenerativeModel(MODEL_NAME)
response = model.generate_content(user_input)
return response.text if response else "No se recibió respuesta."
except Exception as e:
return f"Error en la generación de contenido: {str(e)}"
def extract_text_from_pdf(pdf_file):
try:
doc = fitz.open(stream=pdf_file.read(), filetype="pdf")
text = "\n".join([page.get_text() for page in doc])
return text if text else "No se pudo extraer texto del PDF."
except Exception as e:
return f"Error al leer el PDF: {str(e)}"
st.set_page_config(page_title="Generador con Gemini API", layout="centered")
st.title("Chat con Gemini API")
user_input = st.text_area("Escribe algo:", "")
uploaded_file = st.file_uploader("📄 O sube un PDF", type=["pdf"])
if st.button("Generar respuesta"):
if uploaded_file:
st.write("⏳ Extrayendo texto del PDF...")
extracted_text = extract_text_from_pdf(uploaded_file)
st.text_area("📄 Texto extraído:", extracted_text, height=200)
user_input = extracted_text # Usar el texto extraído para la consulta
if user_input:
st.write("⏳ Procesando con Gemini...")
response = generate_response(user_input)
st.subheader("🔹 Respuesta de Gemini:")
st.write(response)
else:
st.warning("⚠️ Ingresa un texto o sube un PDF antes de continuar.")