Barto517 commited on
Commit
c1f4f65
·
verified ·
1 Parent(s): 15f8672

Update app.py

Browse files

import streamlit as st
import requests
from transformers import pipeline
from PIL import Image
import io
import pandas as pd
import plotly.express as px

# Configuración inicial
st.set_page_config(page_title="CriptoAnalizador IA", layout="wide")

# Título de la aplicación
st.title("🚀 CriptoAnalizador IA")

# Clave de API para Coinalyze
COINALYZE_API_KEY = "8429ca91-8726-45b4-a067-05cc778ea867"
COINALYZE_URL = "https://api.coinalyze.net/v1"

# Opciones de navegación
menu = st.sidebar.radio("Navegación", ["Chat", "Análisis de imágenes", "Criptomonedas"])

if menu == "Chat":
st.header("🤖 Chat Avanzado con IA")
user_input = st.text_input("Escribe tu mensaje:")
if user_input:
# Respuesta usando un modelo de lenguaje
model = pipeline("text-generation", model="gpt2")
response = model(user_input, max_length=100, num_return_sequences=1)
st.success(response[0]["generated_text"])

elif menu == "Análisis de imágenes":
st.header("📷 Análisis de Imágenes")
uploaded_file = st.file_uploader("Sube una imagen para analizar:")
if uploaded_file:
image = Image.open(uploaded_file)
st.image(image, caption="Imagen cargada", use_column_width=True)

# Extracción de texto
from transformers import TrOCRProcessor, VisionEncoderDecoderModel

processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")

image_tensor = processor(images=image, return_tensors="pt").pixel_values
generated_ids = model.generate(image_tensor)
extracted_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

st.subheader("Texto extraído:")
st.write(extracted_text)

elif menu == "Criptomonedas":
st.header("📊 Análisis Técnico de Criptomonedas")

# Selección de criptomoneda
crypto = st.text_input("Ingresa el símbolo de la criptomoneda (Ejemplo: BTC, ETH):")

if crypto:
st.subheader(f"Análisis Técnico para {crypto.upper()}")

# Llamada a la API de Coinalyze
endpoint = f"{COINALYZE_URL}/cryptocurrencies/{crypto}/historical"
headers = {"Authorization": f"Bearer {COINALYZE_API_KEY}"}

response = requests.get(endpoint, headers=headers)
if response.status_code == 200:
data = response.json()
df = pd.DataFrame(data["prices"], columns=["timestamp", "price"])

# Convertir timestamp a fecha
df["timestamp"] = pd.to_datetime(df["timestamp"], unit="ms")

# Graficar precios
fig = px.line(df, x="timestamp", y="price", title=f"Precio de {crypto.upper()} a lo largo del tiempo")
st.plotly_chart(fig)
else:
st.error("No se pudieron obtener los datos. Verifica el símbolo o intenta más tarde.")

# Footer
st.sidebar.markdown("---")
st.sidebar.markdown("Creado con ❤️ por tu ChatBot")

Files changed (1) hide show
  1. app.py +72 -54
app.py CHANGED
@@ -1,63 +1,81 @@
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):
17
- search_url = f"https://www.google.com/search?q={query}"
18
- headers = {"User-Agent": "Mozilla/5.0"}
19
- response = requests.get(search_url, headers=headers)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
- if response.status_code == 200:
22
- soup = BeautifulSoup(response.text, "html.parser")
23
- results = soup.find_all('div', class_='BVG0Nb')
24
- search_results = [result.get_text() for result in results]
25
- return "\n".join(search_results[:5]) # Retornar los primeros 5 resultados
26
- else:
27
- return "No pude obtener resultados de la búsqueda."
28
-
29
- # Función para analizar imágenes
30
- def analyze_image(image_file):
31
- image = Image.open(image_file)
32
- # Aquí puedes agregar más análisis o usar algún modelo para analizar la imagen.
33
- return f"Imagen cargada: {image.size[0]}x{image.size[1]} px"
 
 
 
 
 
 
 
 
 
 
34
 
35
- # Título de la aplicación
36
- st.title("Chat IA con búsqueda y análisis de imágenes 🤖")
37
-
38
- # Input del usuario
39
- user_input = st.text_input("Hazme una pregunta:")
40
-
41
- # Subir una imagen (si se desea analizar)
42
- uploaded_image = st.file_uploader("Sube una imagen para análisis", type=["jpg", "png"])
43
-
44
- # Procesar la respuesta
45
- if user_input:
46
- if "buscar" in user_input.lower(): # Si el usuario pide realizar una búsqueda
47
- with st.spinner("Buscando en Internet... 🕵️‍♂️"):
48
- search_results = search_internet(user_input)
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
 
 
1
  import streamlit as st
 
2
  import requests
3
+ from transformers import pipeline
4
  from PIL import Image
5
+ import io
6
+ import pandas as pd
7
+ import plotly.express as px
8
+
9
+ # Configuración inicial
10
+ st.set_page_config(page_title="CriptoAnalizador IA", layout="wide")
11
+
12
+ # Título de la aplicación
13
+ st.title("🚀 CriptoAnalizador IA")
14
 
15
+ # Clave de API para Coinalyze
16
+ COINALYZE_API_KEY = "8429ca91-8726-45b4-a067-05cc778ea867"
17
+ COINALYZE_URL = "https://api.coinalyze.net/v1"
18
 
19
+ # Opciones de navegación
20
+ menu = st.sidebar.radio("Navegación", ["Chat", "Análisis de imágenes", "Criptomonedas"])
21
 
22
+ if menu == "Chat":
23
+ st.header("🤖 Chat Avanzado con IA")
24
+ user_input = st.text_input("Escribe tu mensaje:")
25
+ if user_input:
26
+ # Respuesta usando un modelo de lenguaje
27
+ model = pipeline("text-generation", model="gpt2")
28
+ response = model(user_input, max_length=100, num_return_sequences=1)
29
+ st.success(response[0]["generated_text"])
30
+
31
+ elif menu == "Análisis de imágenes":
32
+ st.header("📷 Análisis de Imágenes")
33
+ uploaded_file = st.file_uploader("Sube una imagen para analizar:")
34
+ if uploaded_file:
35
+ image = Image.open(uploaded_file)
36
+ st.image(image, caption="Imagen cargada", use_column_width=True)
37
+
38
+ # Extracción de texto
39
+ from transformers import TrOCRProcessor, VisionEncoderDecoderModel
40
+
41
+ processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
42
+ model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")
43
+
44
+ image_tensor = processor(images=image, return_tensors="pt").pixel_values
45
+ generated_ids = model.generate(image_tensor)
46
+ extracted_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
47
+
48
+ st.subheader("Texto extraído:")
49
+ st.write(extracted_text)
50
+
51
+ elif menu == "Criptomonedas":
52
+ st.header("📊 Análisis Técnico de Criptomonedas")
53
 
54
+ # Selección de criptomoneda
55
+ crypto = st.text_input("Ingresa el símbolo de la criptomoneda (Ejemplo: BTC, ETH):")
56
+
57
+ if crypto:
58
+ st.subheader(f"Análisis Técnico para {crypto.upper()}")
59
+
60
+ # Llamada a la API de Coinalyze
61
+ endpoint = f"{COINALYZE_URL}/cryptocurrencies/{crypto}/historical"
62
+ headers = {"Authorization": f"Bearer {COINALYZE_API_KEY}"}
63
+
64
+ response = requests.get(endpoint, headers=headers)
65
+ if response.status_code == 200:
66
+ data = response.json()
67
+ df = pd.DataFrame(data["prices"], columns=["timestamp", "price"])
68
+
69
+ # Convertir timestamp a fecha
70
+ df["timestamp"] = pd.to_datetime(df["timestamp"], unit="ms")
71
+
72
+ # Graficar precios
73
+ fig = px.line(df, x="timestamp", y="price", title=f"Precio de {crypto.upper()} a lo largo del tiempo")
74
+ st.plotly_chart(fig)
75
+ else:
76
+ st.error("No se pudieron obtener los datos. Verifica el símbolo o intenta más tarde.")
77
 
78
+ # Footer
79
+ st.sidebar.markdown("---")
80
+ st.sidebar.markdown("Creado con ❤️ por tu ChatBot")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81