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