|
import streamlit as st |
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline |
|
import traceback |
|
|
|
|
|
import warnings |
|
warnings.filterwarnings("ignore") |
|
|
|
MODEL_NAME = 'exo-is/t5-small-60M-esg-keyword' |
|
|
|
@st.cache_resource |
|
def load_model(): |
|
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, use_fast=False) |
|
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME) |
|
return model, tokenizer |
|
|
|
st.title('Gerador de Texto T5') |
|
|
|
try: |
|
model, tokenizer = load_model() |
|
gerador = pipeline('text2text-generation', model=model, tokenizer=tokenizer) |
|
|
|
st.write("Este aplicativo gera texto baseado em um prompt inicial usando o modelo T5.") |
|
|
|
prompt = st.text_area("Digite o prompt inicial:", height=100) |
|
|
|
col1, col2 = st.columns(2) |
|
with col1: |
|
max_length = st.slider("Comprimento máximo do texto gerado:", min_value=10, max_value=500, value=100) |
|
with col2: |
|
num_return_sequences = st.slider("Número de sequências a gerar:", min_value=1, max_value=5, value=1) |
|
|
|
temperature = st.slider("Temperatura (criatividade):", min_value=0.1, max_value=1.0, value=0.7, step=0.1) |
|
|
|
if st.button('Gerar Texto'): |
|
if prompt: |
|
with st.spinner('Gerando texto...'): |
|
|
|
if num_return_sequences > 1: |
|
resultados = gerador(prompt, max_length=max_length, num_return_sequences=num_return_sequences, |
|
temperature=temperature, num_beams=num_return_sequences, |
|
no_repeat_ngram_size=2, early_stopping=True) |
|
else: |
|
resultados = gerador(prompt, max_length=max_length, num_return_sequences=1, |
|
temperature=temperature, do_sample=True) |
|
|
|
st.subheader('Texto(s) gerado(s):') |
|
for i, resultado in enumerate(resultados, 1): |
|
st.markdown(f"**Sequência {i}:**") |
|
st.write(resultado['generated_text']) |
|
st.markdown("---") |
|
else: |
|
st.warning('Por favor, digite um prompt inicial.') |
|
|
|
except Exception as e: |
|
st.error(f"Um erro ocorreu: {str(e)}") |
|
st.error("Traceback completo:") |
|
st.error(traceback.format_exc()) |
|
|
|
st.markdown("---") |
|
st.write("Desenvolvido com ❤️ usando Streamlit e Hugging Face Transformers") |