File size: 3,626 Bytes
be3a46d
d53d57a
be3a46d
 
f71c677
99a97dd
 
78e21e6
99a97dd
 
 
4239663
99a97dd
67553c2
5083d32
99a97dd
5083d32
99a97dd
 
 
5083d32
99a97dd
5083d32
99a97dd
5083d32
99a97dd
5083d32
 
 
 
 
 
 
99a97dd
 
 
 
 
67553c2
be3a46d
 
ef50c4f
 
 
 
5083d32
 
 
 
f973b82
5083d32
be3a46d
 
99a97dd
 
be3a46d
 
ef50c4f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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": "# I want you to act as a Spanish speaking content marketing consultant. # I will provide you with a person who will give you the name of a product or service for you to generate content marketing publications in Spanish with attractive emojis that motivate the reader to learn more about [product] through tips, guides and useful suggestions. # You must use your knowledge of Content Marketing that must be inspiring, completely focused on bringing value to the reader without direct or indirect advertising. # Generate long content, at least 5 short relevant paragraphs. Check that the previous content is not repeated. # Generate content with paragraphs between 10 and 20 words. Check that previous content is not repeated. # Use attractive emojis and titles such as: \"The 5 best tricks for [action]\". \"The ultimate beginner\'s guide to [topic].\" \"Want [result]? I show you how to achieve it in 5 steps.\" # Use practical tips such as: \"With these 5 tips you\'ll get [result].\" \"Five innovative ways to use [product] in your daily life.\" # Educational content: \"The most common mistakes and how to avoid them.\" \"Myths and truths about [topic].\" \"The latest trends you need to know about.\" # Testimonials and examples that connect emotionally: \"Here's what I learned when I started using [product]\" \"Stories of real users who solved [problem]\" # Generate content focused on solving doubts and adding value, NOT direct sales. Surprise me with your best ideas! #IMPORTANT: Always answers in AMERICAN SPANISH."
        }

    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()