File size: 1,727 Bytes
24990fd
17faa20
c7b4d2b
17faa20
c9e76f1
24990fd
17faa20
24990fd
c7b4d2b
22121da
c7b4d2b
22121da
2e2732b
24990fd
c7b4d2b
 
 
 
 
 
 
22121da
c7b4d2b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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.")