File size: 2,051 Bytes
a2ee974
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6f82717
65dc459
 
 
 
 
a2ee974
 
 
 
f966467
 
 
 
 
 
a2ee974
 
 
 
 
 
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
# Created by Leandro Carneiro at 19/01/2024
# Description: 
# ------------------------------------------------

import search_engine
import rag
import constants
import llm


def generate_news(subject, min_words, max_words, sites):
    print('\n\n' + '*' * 50)
    print('\n\nInício do Programa: \n')

    print('\nBuscando sites relevantes...')
    retrieved_sites = search_engine.search_google(subject, sites)
    if type(retrieved_sites) == str:
        return 'Erro: ' + retrieved_sites

    print('\nBaixando as notícias...')
    retrieved_text_from_sites = search_engine.retrieve_text_from_site(retrieved_sites)
    if type(retrieved_text_from_sites) == str:
        return 'Erro: ' + retrieved_text_from_sites

    print('\nSalvando as notícias em base local...')
    ret = search_engine.delete_base(constants.local_base)
    if ret != 0:
        return 'Erro: ' + ret
    ret = search_engine.save_on_base(retrieved_sites, retrieved_text_from_sites, constants.local_base)
    if ret != 0:
        return 'Erro: ' + ret

    print('\nGerando embeddings e vectorstore...')
    vectorstore = rag.generate_embeddings_and_vectorstore(constants.local_base)
    if type(vectorstore) == str:
        return 'Erro: ' + vectorstore

    print('\nGerando a notícia (RAG)...')
    print('    Assunto: ' + subject)
    obj_rag = rag.Rag(vectorstore, min_words, max_words)
    result_news = obj_rag.generate_text(subject)
    if type(result_news) == str:
        if 'maximum context length' in result_news:
            msg = 'Erro: Reduza o número máximo de palavras.'
        else:
            msg = 'Erro: ' + result_news
        return msg

    print('\n\n' + '*' * 50 + '\n\n')
    print(result_news[0])

    if result_news[1]:
        print('\n\nFontes: ')
        print(result_news[1])
        return result_news[0] + '\n\n' + 'Fontes: ' + '\n' + result_news[1]
    else:
        return result_news[0]

def call_llm(context, prompt):
    print('\nChamando o modelo de linguagem...')
    result = llm.invoke_llm(context, prompt)

    return result