VoltIC commited on
Commit
368f596
Β·
verified Β·
1 Parent(s): 29576a5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -43
app.py CHANGED
@@ -1,51 +1,45 @@
1
- import streamlit as st
2
  from transformers import pipeline
 
3
 
4
- # 1. Page Config MUST be first to tell HF the app is "alive"
5
- st.set_page_config(page_title="AI Summarizer", page_icon="πŸ“")
6
-
7
- st.title("πŸ“ Automated Text Summarizer")
8
-
9
- # 2. Configuration
10
  MODEL_ID = "VoltIC/Automated-Text-Summarizer"
11
 
12
- @st.cache_resource
13
- def load_summarizer():
14
- # This function handles the heavy lifting
15
- return pipeline(
16
- "summarization",
17
- model=MODEL_ID,
18
- subfolder="summarizer_model",
19
- framework="pt"
20
- )
 
21
 
22
- # 3. Deferred Loading Logic
23
- # This allows the UI to render BEFORE the model finishes downloading
24
- if 'model_ready' not in st.session_state:
25
- st.session_state.model_ready = False
 
 
 
 
26
 
27
- if not st.session_state.model_ready:
28
- with st.status("πŸ“₯ Downloading AI Model (1.6GB)...", expanded=True) as status:
29
- st.write("This only happens on the first run. Please wait 2-3 minutes.")
30
- try:
31
- summarizer = load_summarizer()
32
- st.session_state.model_ready = True
33
- status.update(label="βœ… Model Loaded!", state="complete", expanded=False)
34
- st.rerun()
35
- except Exception as e:
36
- st.error("Model is still transferring from Hub. Refreshing in 30 seconds...")
37
- st.stop()
38
- else:
39
- # 4. The actual interface (only shows once model_ready is True)
40
- summarizer = load_summarizer()
41
 
42
- input_text = st.text_area("Paste your article here:", height=300)
 
 
43
 
44
- if st.button("Summarize"):
45
- if input_text.strip():
46
- with st.spinner("AI is condensing your text..."):
47
- summary = summarizer(input_text, max_length=100, min_length=30)
48
- st.subheader("Summary")
49
- st.write(summary[0]['summary_text'])
50
- else:
51
- st.warning("Please enter text first.")
 
1
+ import gradio as gr
2
  from transformers import pipeline
3
+ import torch
4
 
5
+ # 1. Configuration
 
 
 
 
 
6
  MODEL_ID = "VoltIC/Automated-Text-Summarizer"
7
 
8
+ # 2. Load the model once at startup
9
+ # Gradio handles the 'waiting' state better for the user
10
+ print("πŸš€ Loading BART model from subfolder... this may take a minute.")
11
+ summarizer = pipeline(
12
+ "summarization",
13
+ model=MODEL_ID,
14
+ subfolder="summarizer_model",
15
+ framework="pt"
16
+ )
17
+ print("βœ… Model loaded and ready!")
18
 
19
+ # 3. Define the Summarization Function
20
+ def summarize_text(text):
21
+ if not text or len(text.strip()) < 50:
22
+ return "Please enter a longer text (at least 50 characters)."
23
+
24
+ # max_length=100 generally results in 2-3 sentences
25
+ result = summarizer(text, max_length=100, min_length=30, do_sample=False)
26
+ return result[0]['summary_text']
27
 
28
+ # 4. Build the Gradio Interface
29
+ # 'article' theme is clean and professional
30
+ with gr.Blocks(theme=gr.themes.Soft()) as demo:
31
+ gr.Markdown("# πŸ“ Automated Text Summarizer")
32
+ gr.Markdown("Paste a long article below to get a concise 2-3 sentence summary.")
 
 
 
 
 
 
 
 
 
33
 
34
+ with gr.Row():
35
+ input_box = gr.Textbox(label="Input Text", placeholder="Paste here...", lines=10)
36
+ output_box = gr.Textbox(label="Summary", lines=5)
37
 
38
+ submit_btn = gr.Button("Summarize", variant="primary")
39
+
40
+ # Connect the button to the function
41
+ submit_btn.click(fn=summarize_text, inputs=input_box, outputs=output_box)
42
+
43
+ # 5. Launch the app
44
+ if __name__ == "__main__":
45
+ demo.launch()