|
import streamlit as st |
|
from transformers import pipeline |
|
import requests |
|
from bs4 import BeautifulSoup |
|
from PIL import Image |
|
import os |
|
from dotenv import load_dotenv |
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
generator = pipeline('text-generation', model='gpt2') |
|
|
|
|
|
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]) |
|
else: |
|
return "No pude obtener resultados de la búsqueda." |
|
|
|
|
|
def analyze_image(image_file): |
|
image = Image.open(image_file) |
|
|
|
return f"Imagen cargada: {image.size[0]}x{image.size[1]} px" |
|
|
|
|
|
st.title("Chat IA con búsqueda y análisis de imágenes 🤖") |
|
|
|
|
|
user_input = st.text_input("Hazme una pregunta:") |
|
|
|
|
|
uploaded_image = st.file_uploader("Sube una imagen para análisis", type=["jpg", "png"]) |
|
|
|
|
|
if user_input: |
|
if "buscar" in user_input.lower(): |
|
with st.spinner("Buscando en Internet... 🕵️♂️"): |
|
search_results = search_internet(user_input) |
|
st.success("¡Resultados listos! 😊") |
|
st.write(search_results) |
|
else: |
|
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) |
|
|
|
|
|
if uploaded_image: |
|
analysis_result = analyze_image(uploaded_image) |
|
st.success("¡Imagen analizada! 😊") |
|
st.write(analysis_result) |
|
|
|
|