Spaces:
Sleeping
Sleeping
import os | |
from groq import Groq | |
import gradio as gr | |
from config import GROQ_API_KEY | |
class ConversationalAI: | |
def __init__(self): | |
os.environ["GROQ_API_KEY"] = GROQ_API_KEY | |
self.client = Groq() | |
self.system_prompt = { | |
"role": "system", | |
"content": "#Quiero que actúes como consultor de marketing de contenidos EN ESPAÑOL. #El usuario te dará el nombre de un producto o servicio para que generes UNA PUBLICACIÓN de MARKETING DE CONTENIDOS en español con emojis atractivos que motiven al lector para conocer más sobre [producto] a través de un ejemplo seleccionado como la mejor opción entre tips, guías, trucos, errores y sugerencias útiles. #Usa todos tus conocimientos de Marketing de Contenidos que deben ser inspiradores, completamente enfocados a aportar valor al lector SIN PUBLICIDAD DIRECTA o indirecta. #Generar un ejemplo desarrollado en 5 párrafos cortos relevantes, con párrafos de entre 10 y 20 palabras. #Utiliza emojis atractivos y títulos como: \"Los 5 mejores trucos para [. acción]\". \"La guía definitiva para principiantes sobre [tema].\" \"¿Quieres [resultado]? Te muestro cómo lograrlo en 5 pasos.\" # Usa consejos prácticos como: \"Con estos 5 consejos obtendrás [resultado].\" \"Cinco formas innovadoras de utilizar [producto] en tu día a día vida.\" # Contenido educativo: \"Los errores más comunes y cómo evitarlos.\" \"Mitos y verdades sobre [tema].\" \"Las últimas tendencias que debes conocer.\" #Testimonios y ejemplos que conectan emocionalmente: \"Esto es lo que aprendí cuando comencé a usar [producto]\" \"Historias de usuarios reales que resolvieron [problema]\" #Generar contenido enfocado en resolver dudas y agregar valor, NO en ventas directas. Sorpréndeme con tu mejor idea desarrollada! ##Propina: El usuario te dara $2000 de propina si haces un buen trabajo. #IMPORTANTE: Siempre responde en ESPAÑOL." | |
} | |
async def chat_groq(self, message, history): | |
messages = [self.system_prompt] | |
for msg in history: | |
messages.append({"role": "user", "content": str(msg[0])}) | |
messages.append({"role": "assistant", "content": str(msg[1])}) | |
messages.append({"role": "user", "content": str(message)}) | |
response_content = '' | |
stream = self.client.chat.completions.create( | |
model="llama3-70b-8192", | |
messages=messages, | |
max_tokens=1024, | |
temperature=1.3, | |
stream=True | |
) | |
for chunk in stream: | |
content = chunk.choices[0].delta.content | |
if content: | |
response_content += chunk.choices[0].delta.content | |
yield response_content | |
def create_chat_interface(self): | |
with gr.Blocks(theme=gr.themes.Monochrome(), fill_height=True) as demo: | |
# Añadir título y texto adicional | |
gr.Markdown("# Bot de Marketing") | |
gr.Markdown("### Más información al WhatsApp: [wa.me/51927929109](https://wa.me/51927929109)") | |
gr.ChatInterface(self.chat_groq, | |
clear_btn=None, | |
undo_btn=None, | |
retry_btn=None, | |
submit_btn="Enviar" | |
) | |
return demo | |
if __name__ == "__main__": | |
ai = ConversationalAI() | |
demo = ai.create_chat_interface() | |
demo.queue() | |
demo.launch() | |