FirstAgent / app.py
Vladt-Tempest's picture
añado .gitignore
6b4c8c0
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
import gradio as gr
import emoji
import random
class MemeAgent:
def __init__(self):
model = HfApiModel('mistralai/Mistral-7B-Instruct-v0.1')
self.agent = CodeAgent(
model=model,
tools=[DuckDuckGoSearchTool()]
)
self.styles = {
"sarcastic": self._sarcastic_style,
"vibe": self._vibe_style,
"dramatic": self._dramatic_style,
"uwu": self._uwu_style,
"gamer": self._gamer_style,
"deep": self._deep_style,
"cool": self._cool_style
}
def _sarcastic_style(self, text):
return "".join(c.upper() if i % 2 else c.lower() for i, c in enumerate(text)) + " 🥴"
def _vibe_style(self, text):
return "✨ " + " ✨ ".join(text.split()) + " ✨"
def _dramatic_style(self, text):
return f"😔✋ {text} 😭💔"
def _uwu_style(self, text):
text = text.replace('r', 'w').replace('l', 'w')
return f"{text} uwu 🥺👉👈"
def _gamer_style(self, text):
return f"🎮 {text.replace('o', '0').replace('a', '4')} GG! 🎯"
def _deep_style(self, text):
return f"🌌 {text} 💭✨ #deep #mindblown"
def _cool_style(self, text):
return f"😎 {text} 🔥"
def process_text(self, text, style=None):
if not text.strip():
return "Por favor, ingresa algún texto", "No hay texto para procesar"
# Usar el agente para analizar el texto y sugerir un estilo si no se proporciona uno
if not style:
prompt = f"""
Analiza este texto: '{text}'
Selecciona el mejor estilo de meme entre estas opciones: {list(self.styles.keys())}
Solo responde con el nombre del estilo, nada más.
"""
style = self.agent.run(prompt).strip().lower()
if style not in self.styles:
style = random.choice(list(self.styles.keys()))
explanation = f"El agente eligió el estilo '{style}' basado en el análisis del texto."
else:
explanation = f"Usando el estilo '{style}' como solicitaste."
converted_text = self.styles[style](text)
return converted_text, explanation
def create_interface():
agent = MemeAgent()
def process_input(text, style=None):
return agent.process_text(text, style)
iface = gr.Interface(
fn=process_input,
inputs=[
gr.Textbox(
label="Ingresa tu texto",
placeholder="Escribe algo para convertir en meme..."
),
gr.Dropdown(
choices=[""] + list(agent.styles.keys()), # Agregamos una opción vacía
label="Estilo de meme (opcional)",
value="" # Establecemos string vacío como valor por defecto
)
],
outputs=[
gr.Textbox(label="Texto convertido"),
gr.Textbox(label="Explicación")
],
title="🎭 Convertidor de Memes con IA",
description="Convierte texto normal en diferentes estilos de memes usando IA",
examples=[
["la vida es bella", "dramatic"],
["me encanta programar"],
["soy un profesional", "sarcastic"],
["victoria royale", "gamer"],
["estoy pensando en el universo", "deep"]
],
theme="huggingface"
)
return iface
if __name__ == "__main__":
demo = create_interface()
demo.launch()