Barto517 commited on
Commit
ca7840e
·
verified ·
1 Parent(s): 02a0ba8

Búsqueda en Internet:

El sistema realiza una búsqueda de Google cuando el usuario escribe algo que contiene la palabra "buscar". Utiliza requests para hacer una petición HTTP a Google y BeautifulSoup para extraer los resultados de la página de búsqueda. Luego muestra los primeros 5 resultados.
Análisis de imágenes:

Si el usuario sube una imagen, se procesa usando PIL (Pillow). Aquí he hecho un análisis básico para devolver el tamaño de la imagen, pero puedes expandirlo para hacer análisis más complejos.
Interfaz de chat:

El chat muestra el input del usuario y la respuesta generada por la API de OpenAI cuando el usuario no solicita una búsqueda. La respuesta se genera a través del modelo GPT-3.5 de OpenAI.
Cargar claves de API:

Las claves de la API de OpenAI deben ser cargadas de manera segura desde un archivo .env.

Files changed (1) hide show
  1. app.py +59 -18
app.py CHANGED
@@ -1,28 +1,69 @@
1
  import streamlit as st
2
  import openai
 
 
 
 
 
 
3
 
4
- # Configura tu clave de OpenAI
5
- openai.api_key = "TU_API_KEY_AQUÍ"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  # Título de la aplicación
8
- st.title("Chat IA sin restricciones 🤖")
9
 
10
  # Input del usuario
11
  user_input = st.text_input("Hazme una pregunta:")
12
 
13
- # Procesa la respuesta de la IA
 
 
 
14
  if user_input:
15
- try:
16
- with st.spinner("Pensando... 🤔"):
17
- response = openai.ChatCompletion.create(
18
- model="gpt-3.5-turbo",
19
- messages=[
20
- {"role": "system", "content": "Eres un asistente útil y sin sesgos."},
21
- {"role": "user", "content": user_input},
22
- ],
23
- )
24
- answer = response["choices"][0]["message"]["content"]
25
- st.success("¡Respuesta lista! 😊")
26
- st.write(answer)
27
- except Exception as e:
28
- st.error(f"Hubo un error: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import openai
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 desde un archivo .env
11
+ load_dotenv()
12
+ openai.api_key = os.getenv("OPENAI_API_KEY")
13
+
14
+ # Función para realizar búsquedas en Internet
15
+ def search_internet(query):
16
+ search_url = f"https://www.google.com/search?q={query}"
17
+ headers = {"User-Agent": "Mozilla/5.0"}
18
+ response = requests.get(search_url, headers=headers)
19
+
20
+ if response.status_code == 200:
21
+ soup = BeautifulSoup(response.text, "html.parser")
22
+ results = soup.find_all('div', class_='BVG0Nb')
23
+ search_results = [result.get_text() for result in results]
24
+ return "\n".join(search_results[:5]) # Retornar los primeros 5 resultados
25
+ else:
26
+ return "No pude obtener resultados de la búsqueda."
27
+
28
+ # Función para analizar imágenes
29
+ def analyze_image(image_file):
30
+ image = Image.open(image_file)
31
+ # Aquí puedes agregar más análisis o usar algún modelo para analizar la imagen.
32
+ return f"Imagen cargada: {image.size[0]}x{image.size[1]} px"
33
 
34
  # Título de la aplicación
35
+ st.title("Chat IA con búsqueda y análisis de imágenes 🤖")
36
 
37
  # Input del usuario
38
  user_input = st.text_input("Hazme una pregunta:")
39
 
40
+ # Subir una imagen (si se desea analizar)
41
+ uploaded_image = st.file_uploader("Sube una imagen para análisis", type=["jpg", "png"])
42
+
43
+ # Procesar la respuesta
44
  if user_input:
45
+ if "buscar" in user_input.lower(): # Si el usuario pide realizar una búsqueda
46
+ with st.spinner("Buscando en Internet... 🕵️‍♂️"):
47
+ search_results = search_internet(user_input)
48
+ st.success("¡Resultados listos! 😊")
49
+ st.write(search_results)
50
+ else: # Si es una pregunta que el modelo debe responder
51
+ try:
52
+ with st.spinner("Pensando... 🤔"):
53
+ response = openai.Completion.create(
54
+ model="gpt-3.5-turbo",
55
+ prompt=user_input,
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)