VoltIC commited on
Commit
3527e48
Β·
verified Β·
1 Parent(s): c7641bc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -33
app.py CHANGED
@@ -2,44 +2,47 @@ 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()
 
2
  from transformers import pipeline
3
  import torch
4
 
 
5
  MODEL_ID = "VoltIC/Automated-Text-Summarizer"
6
 
7
+ # Load the model with low_cpu_mem_usage to save RAM
8
+ print("πŸš€ Initializing model...")
9
+ try:
10
+ summarizer = pipeline(
11
+ "summarization",
12
+ model=MODEL_ID,
13
+ subfolder="summarizer_model",
14
+ framework="pt",
15
+ device=-1 # Explicitly force CPU
16
+ )
17
+ print("βœ… System Ready")
18
+ except Exception as e:
19
+ print(f"❌ Initialization Error: {e}")
20
 
 
21
  def summarize_text(text):
22
+ if not text or len(text.strip()) < 20:
23
+ return "Error: Text is too short."
24
 
25
+ try:
26
+ # TRUNCATION is the key.
27
+ # It prevents the model from trying to process 10,000 words at once.
28
+ result = summarizer(
29
+ text,
30
+ max_length=100,
31
+ min_length=30,
32
+ do_sample=False,
33
+ truncation=True # πŸ‘ˆ This prevents memory crashes
34
+ )
35
+ return result[0]['summary_text']
36
+ except Exception as e:
37
+ return f"Runtime Error: {str(e)}"
38
 
39
+ # Define the UI
40
+ with gr.Blocks() as demo:
41
+ gr.Markdown("# AI Summarizer")
42
+ input_box = gr.Textbox(label="Input", lines=5)
43
+ output_box = gr.Textbox(label="Result", lines=5)
44
+ btn = gr.Button("Summarize")
45
 
46
+ btn.click(fn=summarize_text, inputs=input_box, outputs=output_box)
 
 
 
 
 
 
 
47
 
48
+ demo.launch()