File size: 2,710 Bytes
57a506a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6ecf859
 
57a506a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66cba48
3097e92
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from queue import Queue
from threading import Thread

import gradio as gr
import os


def call_invoke(name, queue_input, queue_output):
    from MLSalesPitch import MLSalesPitch

    ml_sales_pitch = MLSalesPitch()

    ml_sales_pitch.embedding()

    while True:
        q = queue_input.get()

        products = q['products']
        sub_category_input = q['sub_category_input']

        resp = ml_sales_pitch.generate_sales_pitch(query={'products': products, 'sub_category': sub_category_input})

        queue_output.put(resp)


def call_invoke_queue(category: str, sub_category_input: str, products: str):
    queue.put({'category': category, 'sub_category_input': sub_category_input, 'products': products})

    return result.get()


with gr.Blocks(title='MLSalesPitch') as page:

    gr.Image(type='pil', value=os.path.join(os.path.dirname(__file__), "asserts/imgs/llm.png"), elem_id="image_llm",
             width=300, height=300)
    gr.Markdown(" ")
    gr.Markdown("# MLSalesPitch")
    gr.Markdown("## Gerar textos persuasivos para ações de Marketing e Vendas")
    gr.Markdown(" ")

    category_opt = \
        gr.Dropdown(
            ["Acessórios para Veículos"],
            label="Categoria de produtos",
            info="Selecione uma categoria",
        )

    sub_category_opt = \
        gr.Dropdown(
            ["Navegadores GPS para Vehículos", "Outros", "Ferramentas para Veículos", "Peças de Carros e Caminhonetes",
             "Peças de Motos e Quadriciclos", "Performance", "Som Automotivo", "Peças de Linha Pesada",
             "Acessórios Náuticos", "Limpeza Automotiva", "Aces. de Carros e Caminhonetes", "Rodas", "GNV",
             "Segurança Veicular", "Aces. de Motos e Quadriciclos", "Peças Náuticas", "Pneus e Acessórios", "Tuning",
             "Lubrificantes e Fluidos", "Serviços Programados", "Acessórios de Linha Pesada", "Motos",
             "Tags de Pagamento de Pedágio"],
            label="Sub categoria do produto",
            info="Selecione uma sub categoria do produto"
        )

    with gr.Row():
        input1 = gr.Textbox(label="Informe um ou mais produtos separados por vírgula:", lines=1)

    with gr.Row():
        button1 = gr.Button("Criar discurso de vendas")

    with gr.Row():
        output1 = gr.Textbox(label="Sugestão de discurso de venda gerado:", lines=25)

    button1.click(call_invoke_queue, inputs=[category_opt, sub_category_opt, input1], outputs=[output1])

if __name__ == "__main__":
    os.environ['TOKENIZERS_PARALLELISM'] = 'true'

    queue = Queue()
    result = Queue()

    thd = Thread(target=call_invoke, args=(f"Thread invoke", queue, result), daemon=True)

    thd.start()

    page.launch()