Santos alinha pré-contrato com Vitinho e ainda busca contratação de Michael, do Flamengo

Viral_X
By
Viral_X
1 Min Read

"""
import langchain
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_community.llms import Ollama

import pathlib

def parse_news_file(file_path):
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=200, chunk_overlap=20
)
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read()
chunks = text_splitter.split_text(text)

return chunks

def format_template(template_file_path):
with open(template_file_path, 'r', encoding='utf-8') as f:
template = f.read()

Santos alinha pré-contrato com Vitinho e ainda busca contratação de Michael, do Flamengo

return template

def generate_news_articles(text_chunks, template):
llm = Ollama(model='llama3')
output_parser = StrOutputParser()
prompt = ChatPromptTemplate.from_template(template)

chain = {"text": lambda x: x, "template": lambda x: template} | prompt | llm | output_parser

results = chain.batch({"text": text_chunks})

return results

def write_news_articles(output_dir, results):
output_dir = pathlib.Path(output_dir)
if not output_dir.exists():
output_dir.mkdir(parents=True)

for idx, result in enumerate(results):
file_name = f"news_article_{idx}.html"
file_path = output_dir / file_name
with open(file_path, 'w', encoding='utf-8') as f:
f.write(result)

if __name__ == '__main__':
news_file_path = 'news_text.txt'
template_file_path = 'news_template.txt'
output_dir = 'news_articles'

text_chunks = parse_news_file(news_file_path)
template = format_template(template_file_path)
results = generate_news_articles(text_chunks, template)
write_news_articles(output_dir, results)

Share This Article