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 |
+
|