import gradio as gr from transformers import pipeline import torch try: # Memuat model BART Large CNN untuk tugas summarization summarizer = pipeline("summarization", model="facebook/bart-large-cnn") print("Model summarization berhasil dimuat.") except Exception as e: summarizer = None print(f"Error saat memuat model summarization: {str(e)}") # Cetak error ke konsol jika gagal dimuat def summarize_text_simple(text_input, min_length_val=30, max_length_val=150): # Ubah nama parameter untuk kejelasan # Cek apakah model berhasil dimuat if summarizer is None: return "❌ Error: Model ringkasan gagal dimuat. Coba lagi nanti." if not text_input.strip(): return "⚠️ Mohon masukkan teks yang ingin diringkas!" # Pastikan panjang minimum dan maksimum masuk akal if min_length_val >= max_length_val: # Gunakan parameter yang diperbarui return "⚠️ Panjang minimum harus lebih kecil dari panjang maksimum!" if min_length_val <= 0 or max_length_val <= 0: # Gunakan parameter yang diperbarui return "⚠️ Panjang tidak boleh nol atau negatif!" try: # Lakukan ringkasan # Pastikan min_length dan max_length diteruskan ke summarizer summary = summarizer( text_input, min_length=int(min_length_val), # Pastikan nilai adalah integer max_length=int(max_length_val), # Pastikan nilai adalah integer truncation=True # Penting: Potong input jika terlalu panjang untuk model ) # Hasil ringkasan ada di 'summary_text' summarized_text = summary[0]['summary_text'] result_message = f"""
{summarized_text}
""" return result_message except Exception as e: return f"❌ Terjadi kesalahan saat meringkas: {str(e)}" with gr.Blocks(title="Aplikasi Ringkasan Teks Sederhana") as demo: gr.Markdown("# 📝 Aplikasi Ringkasan Teks Sederhana") gr.Markdown("Masukkan teks panjang di bawah ini untuk mendapatkan versi ringkasnya.") with gr.Row(): text_input = gr.Textbox( label="Teks Asli", placeholder="Masukkan teks panjang yang ingin Anda ringkas di sini...", lines=10 ) with gr.Row(): min_length_slider = gr.Slider( minimum=10, maximum=100, value=30, step=1, label="Panjang Ringkasan Minimum" ) max_length_slider = gr.Slider( minimum=50, # Ubah minimum agar selalu lebih besar dari max slider min_length maximum=200, value=80, step=1, label="Panjang Ringkasan Maksimum" ) summarize_btn = gr.Button("✨ Ringkas Sekarang") summary_output = gr.HTML(label="Hasil Ringkasan") # Menghubungkan tombol ke fungsi ringkasan summarize_btn.click( fn=summarize_text_simple, inputs=[text_input, min_length_slider, max_length_slider], # Pastikan Anda melewati kedua slider outputs=summary_output ) gr.Markdown(""" ---Didukung oleh Hugging Face Transformers (Model: facebook/bart-large-cnn) dan Gradio.