import streamlit as st import random from transformers import pipeline # Configuración de la página st.set_page_config( page_title="¿No sabes qué decir? Te ayudamos", page_icon="💡", layout="centered" ) # Estilo de la app st.markdown( """ """, unsafe_allow_html=True ) # Diccionario de conectores conectores = { "Explicación": ["porque", "ya que", "puesto que", "dado que"], "Contraste": ["sin embargo", "aunque", "no obstante", "a pesar de"], "Adición": ["además", "asimismo", "igualmente", "por otra parte"], "Causalidad negativa": ["pero", "sin embargo", "aunque"] } # Seleccionar conector lógico aleatorio def agregar_conector_automatico(texto_usuario): categoria = random.choice(list(conectores.keys())) conector = random.choice(conectores[categoria]) # Si el texto no termina con un conector lógico, lo añadimos if not texto_usuario.strip().endswith(tuple(conector for sublist in conectores.values() for conector in sublist)): texto_usuario += f" {conector}" return texto_usuario # Cargar modelo @st.cache_resource def load_model(): return pipeline("text-generation", model="datificate/gpt2-small-spanish") generator = load_model() # Título llamativo st.markdown('

¿No sabes qué decir? 💡

', unsafe_allow_html=True) st.markdown('

¡Te ayudamos a completar tus ideas con inteligencia artificial!

', unsafe_allow_html=True) # Entrada del usuario st.subheader("📝 Escribe tu idea:") prompt = st.text_area("Completa tu idea:", placeholder="Ejemplo: Me gustaría escribir una carta a...") # Generar respuesta if st.button("✨ Generar Texto ✨"): if not prompt.strip(): st.warning("⚠️ Por favor, ingresa un texto válido.") else: with st.spinner("⏳ Generando texto..."): # Añadir un conector lógico automáticamente si falta prompt_con_conector = agregar_conector_automatico(prompt) result = generator( prompt_con_conector, max_length=35, temperature=0.1, top_p=0.7, top_k=10, repetition_penalty=1.5, num_return_sequences=1, eos_token_id=50256, do_sample=False ) response = result[0]["generated_text"] st.subheader("🖋️ Texto Generado:") st.success(response) # Footer st.markdown('', unsafe_allow_html=True)