BotNews / main.py
leandrocarneiro's picture
Upload 5 files
5dd704c verified
# 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, model):
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, model)
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, model)
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, model):
print('\nChamando o modelo de linguagem...')
result = llm.invoke_llm(context, prompt, model)
return result