File size: 3,187 Bytes
a2ee974
 
 
 
 
 
 
 
 
5dd704c
a2ee974
 
 
 
 
 
 
 
65dc459
a2ee974
 
566bba1
a2ee974
566bba1
 
 
5dd704c
a2ee974
 
5dd704c
 
a2ee974
 
 
 
 
352342a
a2ee974
db1bb8d
a2ee974
 
 
 
5dd704c
 
 
 
a2ee974
5dd704c
 
 
 
 
a2ee974
bd5a0eb
a2ee974
 
 
51e1c58
a2ee974
db1bb8d
a2ee974
 
bd5a0eb
a2ee974
51e1c58
a2ee974
51e1c58
a2ee974
5dd704c
 
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
71
72
73
74
75
# 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