BotNews / app.py
leandrocarneiro's picture
Upload 2 files
51e1c58 verified
# 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("<b>Instrução:</b> 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("<hr>")
gr.Markdown("## Ajustar a notícia com IA")
gr.Markdown(" ")
gr.Markdown("<b>Instrução:</b> 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("Ajustar notícia")
with gr.Row():
output2 = gr.Textbox(label="Notícia ajustada 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