app.py
Browse filesimport streamlit as st
from transformers import pipeline
import requests
from bs4 import BeautifulSoup
from PIL import Image
import os
from dotenv import load_dotenv
# Cargar la clave de la API (si decides usar alguna otra API en el futuro)
load_dotenv()
# Cargar el modelo de Hugging Face
generator = pipeline('text-generation', model='gpt2')  # Usamos GPT-2 de Hugging Face como ejemplo
# Función para realizar búsquedas en Internet
def search_internet(query):
    search_url = f"https://www.google.com/search?q={query}"
    headers = {"User-Agent": "Mozilla/5.0"}
    response = requests.get(search_url, headers=headers)
    
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, "html.parser")
        results = soup.find_all('div', class_='BVG0Nb')
        search_results = [result.get_text() for result in results]
        return "\n".join(search_results[:5])  # Retornar los primeros 5 resultados
    else:
        return "No pude obtener resultados de la búsqueda."
# Función para analizar imágenes
def analyze_image(image_file):
    image = Image.open(image_file)
    # Aquí puedes agregar más análisis o usar algún modelo para analizar la imagen.
    return f"Imagen cargada: {image.size[0]}x{image.size[1]} px"
# Título de la aplicación
st.title("Chat IA con búsqueda y análisis de imágenes 🤖")
# Input del usuario
user_input = st.text_input("Hazme una pregunta:")
# Subir una imagen (si se desea analizar)
uploaded_image = st.file_uploader("Sube una imagen para análisis", type=["jpg", "png"])
# Procesar la respuesta
if user_input:
    if "buscar" in user_input.lower():  # Si el usuario pide realizar una búsqueda
        with st.spinner("Buscando en Internet... 🕵️♂️"):
            search_results = search_internet(user_input)
        st.success("¡Resultados listos! 😊")
        st.write(search_results)
    else:  # Si es una pregunta que el modelo debe responder
        with st.spinner("Pensando... 🤔"):
            response = generator(user_input, max_length=100, num_return_sequences=1)
            answer = response[0]['generated_text']
        st.success("¡Respuesta lista! 😊")
        st.write(answer)
# Si el usuario sube una imagen
if uploaded_image:
    analysis_result = analyze_image(uploaded_image)
    st.success("¡Imagen analizada! 😊")
    st.write(analysis_result)
| @@ -1,15 +1,16 @@ | |
| 1 | 
             
            import streamlit as st
         | 
| 2 | 
            -
            import  | 
| 3 | 
             
            import requests
         | 
| 4 | 
             
            from bs4 import BeautifulSoup
         | 
| 5 | 
             
            from PIL import Image
         | 
| 6 | 
            -
            from io import BytesIO
         | 
| 7 | 
             
            import os
         | 
| 8 | 
             
            from dotenv import load_dotenv
         | 
| 9 |  | 
| 10 | 
            -
            # Cargar la clave de la API  | 
| 11 | 
             
            load_dotenv()
         | 
| 12 | 
            -
             | 
|  | |
|  | |
| 13 |  | 
| 14 | 
             
            # Función para realizar búsquedas en Internet
         | 
| 15 | 
             
            def search_internet(query):
         | 
| @@ -48,22 +49,15 @@ if user_input: | |
| 48 | 
             
                    st.success("¡Resultados listos! 😊")
         | 
| 49 | 
             
                    st.write(search_results)
         | 
| 50 | 
             
                else:  # Si es una pregunta que el modelo debe responder
         | 
| 51 | 
            -
                     | 
| 52 | 
            -
                         | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
                                max_tokens=150,
         | 
| 57 | 
            -
                                temperature=0.7
         | 
| 58 | 
            -
                            )
         | 
| 59 | 
            -
                            answer = response.choices[0].text.strip()
         | 
| 60 | 
            -
                        st.success("¡Respuesta lista! 😊")
         | 
| 61 | 
            -
                        st.write(answer)
         | 
| 62 | 
            -
                    except Exception as e:
         | 
| 63 | 
            -
                        st.error(f"Hubo un error: {e}")
         | 
| 64 |  | 
| 65 | 
             
            # Si el usuario sube una imagen
         | 
| 66 | 
             
            if uploaded_image:
         | 
| 67 | 
             
                analysis_result = analyze_image(uploaded_image)
         | 
| 68 | 
             
                st.success("¡Imagen analizada! 😊")
         | 
| 69 | 
             
                st.write(analysis_result)
         | 
|  | 
|  | |
| 1 | 
             
            import streamlit as st
         | 
| 2 | 
            +
            from transformers import pipeline
         | 
| 3 | 
             
            import requests
         | 
| 4 | 
             
            from bs4 import BeautifulSoup
         | 
| 5 | 
             
            from PIL import Image
         | 
|  | |
| 6 | 
             
            import os
         | 
| 7 | 
             
            from dotenv import load_dotenv
         | 
| 8 |  | 
| 9 | 
            +
            # Cargar la clave de la API (si decides usar alguna otra API en el futuro)
         | 
| 10 | 
             
            load_dotenv()
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            # Cargar el modelo de Hugging Face
         | 
| 13 | 
            +
            generator = pipeline('text-generation', model='gpt2')  # Usamos GPT-2 de Hugging Face como ejemplo
         | 
| 14 |  | 
| 15 | 
             
            # Función para realizar búsquedas en Internet
         | 
| 16 | 
             
            def search_internet(query):
         | 
|  | |
| 49 | 
             
                    st.success("¡Resultados listos! 😊")
         | 
| 50 | 
             
                    st.write(search_results)
         | 
| 51 | 
             
                else:  # Si es una pregunta que el modelo debe responder
         | 
| 52 | 
            +
                    with st.spinner("Pensando... 🤔"):
         | 
| 53 | 
            +
                        response = generator(user_input, max_length=100, num_return_sequences=1)
         | 
| 54 | 
            +
                        answer = response[0]['generated_text']
         | 
| 55 | 
            +
                    st.success("¡Respuesta lista! 😊")
         | 
| 56 | 
            +
                    st.write(answer)
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 57 |  | 
| 58 | 
             
            # Si el usuario sube una imagen
         | 
| 59 | 
             
            if uploaded_image:
         | 
| 60 | 
             
                analysis_result = analyze_image(uploaded_image)
         | 
| 61 | 
             
                st.success("¡Imagen analizada! 😊")
         | 
| 62 | 
             
                st.write(analysis_result)
         | 
| 63 | 
            +
             |