# Created by Leandro Carneiro at 22/01/2024 # Description: # ------------------------------------------------ import gradio as gr import main # Define two separate functions for each button def call_generate_news(subject, sites, min_words, max_words, model): if subject == '': return 'Erro: Assunto não informado', '' if min_words == '': return 'Erro: Mínimo de palavras não informado', '' if max_words == '': return 'Erro: Máximo de palavras não informado', '' if sites == '': return 'Erro: Domínios para pesquisa não informados', '' if int(max_words) < int(min_words): return 'Erro: Máximo de palavras menor que o mínimo de palavras' filtered_list_sites = [] list_sites = sites.split('\n') for item in list_sites: if item: filtered_list_sites.append(item) result_news = main.generate_news(subject, min_words, max_words, filtered_list_sites, model.lower()) return result_news def call_invoke_llm(context, prompt, model): result = main.call_llm(context, prompt, model) return result # Create the Gradio interface using Blocks with gr.Blocks(title='BotNews') as page: gr.Markdown("# BotNews") gr.Markdown("## Gerar a notícia com IA") gr.Markdown(" ") gr.Markdown("Instrução: Preencha abaixo com um assunto (Por exemplo: 'Guerra em Israel' ou 'Economia do Brasil').") gr.Markdown(" ") with gr.Row(): input1 = gr.Textbox(label="Assunto:", lines=1) with gr.Row(): input5 = gr.Dropdown( ["OpenAI", "Mixtral-8x7B"], value='OpenAI', label="Modelo LLM", info="Escolha o modelo para processamento das informações.", scale=1 ) input2 = gr.Textbox(label="Domínios para pesquisa (coloque um domínio por linha):", lines=8, scale=2, value='https://www.cnnbrasil.com.br/\nhttps://g1.globo.com/\nhttps://www.metropoles.com/\nhttps://www.bbc.com/portuguese/\nhttps://www.instagram.com/') input3 = gr.Textbox(label="Mínimo de palavras:", lines=1, value="300", scale=1) input4 = gr.Textbox(label="Máximo de palavras:", lines=1, value="700", scale=1) with gr.Row(): button1 = gr.Button("Gerar notícia") with gr.Row(): output1 = gr.Textbox(label="Notícia gerada por IA", lines=25) gr.Markdown("
") gr.Markdown("## Prompt para a Notícia") gr.Markdown(" ") gr.Markdown("Instrução: Preencha abaixo com um comando para ser executado sobre a notícia (Por exemplo: 'Resuma em tópicos' ou 'Adicione um tom sarcástico').") gr.Markdown(" ") with gr.Row(): input6 = gr.Textbox(label="Ajustar a notícia com IA") with gr.Row(): button2 = gr.Button("Gerar resposta") with gr.Row(): output2 = gr.Textbox(label="Resposta gerada por IA", lines=25) button1.click(call_generate_news, inputs=[input1, input2, input3, input4, input5], outputs=[output1]) button2.click(call_invoke_llm, inputs=[output1, input6, input5], outputs=[output2]) # Launch the interface page.launch() #share=True