test-space-2 / app.py
paloma99's picture
Update app.py
210818b verified
import gradio as gr
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer
import torch
import theme
theme = theme.Theme()
import os
import sys
sys.path.append('../..')
#langchain
from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.prompts import PromptTemplate
from langchain.chains import RetrievalQA
from langchain.prompts import ChatPromptTemplate
from langchain.schema import StrOutputParser
from langchain.schema.runnable import Runnable
from langchain.schema.runnable.config import RunnableConfig
from langchain.chains import (
LLMChain, ConversationalRetrievalChain)
from langchain.vectorstores import Chroma
from langchain.memory import ConversationBufferMemory
from langchain.chains import LLMChain
from langchain.prompts.prompt import PromptTemplate
from langchain.prompts.chat import ChatPromptTemplate, SystemMessagePromptTemplate
from langchain.prompts import SystemMessagePromptTemplate, HumanMessagePromptTemplate, ChatPromptTemplate, MessagesPlaceholder
from langchain.document_loaders import PyPDFDirectoryLoader
from pydantic import BaseModel, Field
from langchain.output_parsers import PydanticOutputParser
from langchain_community.llms import HuggingFaceHub
from langchain_community.document_loaders import WebBaseLoader
from pydantic import BaseModel
import shutil
custom_title = "<span style='color: rgb(243, 239, 224);'>Green Greta</span>"
from huggingface_hub import from_pretrained_keras
import tensorflow as tf
from tensorflow import keras
from PIL import Image
# Cell 1: Image Classification Model
pipeline = pipeline(task="image-classification", model="julien-c/hotdog-not-hotdog")
def predict_image(image):
predictions = pipeline(image)
return {p["label"]: p["score"] for p in predictions}
custom_desc_img = "<span style='font-size: 16px; color: rgb(243, 239, 224);'>Carga una foto del objeto que quieras reciclar y Green Greta identificará de qué se trata para que puedas desecharlo adecuadamente.</span>"
image_gradio_app = gr.Interface(
fn=predict_image,
inputs=gr.Image(label="Imágen", sources=['upload', 'webcam'], type="pil"),
outputs=[gr.Label(label="Clasificación")],
title=custom_title,
description=custom_desc_img,
theme=theme,
submit_btn="Cargar",
clear_btn="Borrar",
)
def echo(message, history):
return message
custom_desc_chat = "<span style='font-size: 16px; color: rgb(243, 239, 224);'>Green Greta ChatBot está aquí para responder todas tus preguntas y ayudarte a tomar decisiones más informadas sobre tu reciclaje.</span>"
chatbot_gradio_app = gr.ChatInterface(
fn=echo,
chatbot=gr.Chatbot(height=400),
textbox=gr.Textbox(placeholder="Hazme una pregunta sobre reciclaje...", scale=7),
title=custom_title,
description=custom_desc_chat,
examples=["Hola, ¿cuál es tu nombre?", "¿Qué puedo hacer con ropa que ya no uso?", "¿Qué recursos educativos existen para aprender mas sobre sostenibilidad?"],
fill_height=True,
submit_btn="Enviar",
retry_btn="Reenviar",
undo_btn="Deshacer",
clear_btn="Borrar",
)
banner_tab_content = """
<div style="background-color: #d3e3c3; text-align: center; padding: 20px; display: flex; flex-direction: column; align-items: center;">
<img src="https://huggingface.co/spaces/rocioadlc/test_4/resolve/main/front_4.jpg" alt="Banner Image" style="width: 50%; max-width: 500px; margin: 0 auto;">
<h1 style="font-size: 24px; color: #4e6339; margin-top: 20px;">¡Bienvenido a nuestro clasificador de imágenes y chatbot para un reciclaje más inteligente!♻️</h1>
<p style="font-size: 16px; color: #4e6339; text-align: justify;">¿Alguna vez te has preguntado si puedes reciclar un objeto en particular? ¿O te has sentido abrumado por la cantidad de residuos que generas y no sabes cómo manejarlos de manera más sostenible? ¡Estás en el lugar correcto!</p>
<p style="font-size: 16px; color: #4e6339; text-align: justify;">Nuestra plataforma combina la potencia de la inteligencia artificial con la comodidad de un chatbot para brindarte respuestas rápidas y precisas sobre qué objetos son reciclables y cómo hacerlo de la manera más eficiente.</p>
<p style="font-size: 16px; text-align:center;"><strong><span style="color: #4e6339;">¿Cómo usarlo?</span></strong>
<ul style="list-style-type: disc; text-align: justify; margin-top: 20px; padding-left: 20px;">
<li style="font-size: 16px; color: #4e6339;"><strong><span style="color: #4e6339;">Green Greta Image Classification:</span></strong> Ve a la pestaña "Green Greta - Clasificador de Imágenes" y simplemente carga una foto del objeto que quieras reciclar, y nuestro modelo de identificará de qué se trata🕵️‍♂️ para que puedas desecharlo adecuadamente.</li>
<li style="font-size: 16px; color: #4e6339;"><strong><span style="color: #4e6339;">Green Greta Chat:</span></strong> ¿Tienes preguntas sobre reciclaje, materiales específicos o prácticas sostenibles? ¡Pregunta a nuestro chatbot en la pestaña "Green Greta - Chat"!📝 Está aquí para responder todas tus preguntas y ayudarte a tomar decisiones más informadas sobre tu reciclaje.</li>
</ul>
</div>
"""
banner_tab = gr.Markdown(banner_tab_content)
# Combine interfaces into a single app
app = gr.TabbedInterface(
[banner_tab, image_gradio_app, chatbot_gradio_app],
tab_names=["Bienvenido a Green Greta", "Green Greta - Clasificador de Imágenes", "Green Greta - Chat"],
theme=theme
)
app.queue()
app.launch()