Spaces:
Build error
Build error
| import os | |
| os.system("pip install google-generativeai") | |
| os.system("pip install streamlit") | |
| os.system("pip install PyMuPDF") | |
| os.system("pip install python-dotenv") | |
| import streamlit as st | |
| import os | |
| import google.generativeai as genai | |
| from dotenv import load_dotenv | |
| import fitz # PyMuPDF para leer PDFs | |
| # Cargar variables de entorno | |
| load_dotenv() | |
| # Obtener API Key de Gemini | |
| GEMINI_API_KEY = os.getenv("AIzaSyBtzGXVrrY5_y99zVR-sSlZ_KEJI7HhuKs") | |
| # Configurar la API de Gemini | |
| genai.configure(api_key="AIzaSyBtzGXVrrY5_y99zVR-sSlZ_KEJI7HhuKs") | |
| # Modelo de Gemini | |
| MODEL_NAME = "gemini-2.0-flash-thinking-exp-01-21" | |
| # Función para generar contenido con Gemini | |
| 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)}" | |
| # Función para extraer texto de un PDF | |
| 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)}" | |
| # Interfaz con Streamlit | |
| st.set_page_config(page_title="Chat AI", layout="centered") | |
| st.title("Chat AI by Oscar") | |
| # Entrada del usuario (texto manual) | |
| user_input = st.text_area("Escribe algo:", "") | |
| # Opción para subir un archivo PDF | |
| uploaded_file = st.file_uploader("O sube un PDF", type=["pdf"]) | |
| # Botón para generar respuesta | |
| 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.") |