File size: 2,850 Bytes
a2ee974
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566bba1
a2ee974
566bba1
 
 
 
a2ee974
 
 
 
 
 
 
 
 
 
 
db1bb8d
a2ee974
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
db1bb8d
a2ee974
 
 
 
 
 
 
 
 
 
 
 
99017a2
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
# 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):
    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 max_words < 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)
    return result_news

def call_invoke_llm(context, prompt):
    result = main.call_llm(context, prompt)
    return result

# Create the Gradio interface using Blocks
with gr.Blocks(title='BotNews') as page:
    gr.Markdown("# BotNews")
    gr.Markdown("## Gerar Notícia por 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():
        input2 = gr.Textbox(label="Domínios para pesquisa (coloque um domínio por linha):",
                            lines=10, value='https://www.cnnbrasil.com.br/\nhttps://g1.globo.com/\nhttps://www.metropoles.com/\nhttps://www.bbc.com/portuguese/\nhttps://www.instagram.com/')
    with gr.Row():
        input3 = gr.Textbox(label="Mínimo de palavras:", lines=1, value="300")
        input4 = gr.Textbox(label="Máximo de palavras:", lines=1, value="700")
    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("## Prompt para a Notícia")
    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():
        input5 = gr.Textbox(label="Prompt para a notícia")
    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], outputs=[output1])
    button2.click(call_invoke_llm, inputs=[output1, input5], outputs=[output2])

# Launch the interface
page.launch() #share=True