Tungdabiban commited on
Commit
2be45ba
·
verified ·
1 Parent(s): 06c3412

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -6
app.py CHANGED
@@ -46,6 +46,7 @@ print("Model loaded successfully!")
46
  # ============================================================
47
  class SummarizeRequest(BaseModel):
48
  text: str
 
49
 
50
 
51
  # ============================================================
@@ -129,10 +130,11 @@ def fix_truncated_text(text: str) -> str:
129
  return text + '.'
130
 
131
 
132
- def format_as_bullet_points(summaries: list[str]) -> str:
133
  """
134
  Chuyển đổi các đoạn tóm tắt thành Bullet Points.
135
  Mỗi ý một dòng, bắt đầu bằng '•'.
 
136
  """
137
  bullet_points = []
138
 
@@ -147,6 +149,10 @@ def format_as_bullet_points(summaries: list[str]) -> str:
147
  sentence = fix_truncated_text(sentence)
148
  bullet_points.append(f"• {sentence}")
149
 
 
 
 
 
150
  return '\n'.join(bullet_points)
151
 
152
 
@@ -277,8 +283,18 @@ async def summarize_text(request: SummarizeRequest):
277
  """
278
  Tóm tắt văn bản tiếng Việt.
279
  Trả về danh sách Bullet Points.
 
280
  """
281
  text = request.text
 
 
 
 
 
 
 
 
 
282
 
283
  # Validate text
284
  if not text or len(text.strip()) < 50:
@@ -296,25 +312,35 @@ async def summarize_text(request: SummarizeRequest):
296
  detail="Không thể tạo tóm tắt."
297
  )
298
 
299
- # Format as bullet points
300
- bullet_points = format_as_bullet_points(summaries)
301
 
302
  return {
303
  "success": True,
304
  "original_length": len(text),
305
  "word_count": len(text.split()),
306
  "num_chunks": len(summaries),
 
307
  "summary": bullet_points
308
  }
309
 
310
 
311
  @app.post("/upload-pdf")
312
- async def upload_pdf(file: UploadFile = File(...)):
313
  """
314
  Upload và tóm tắt file PDF.
315
  Đọc qua byte stream, KHÔNG lưu file ra đĩa.
316
  Trả về danh sách Bullet Points.
 
317
  """
 
 
 
 
 
 
 
 
318
  # Validate file type
319
  if not file.filename.lower().endswith('.pdf'):
320
  raise HTTPException(
@@ -358,8 +384,8 @@ async def upload_pdf(file: UploadFile = File(...)):
358
  detail="Không thể tạo tóm tắt."
359
  )
360
 
361
- # Format as bullet points
362
- bullet_points = format_as_bullet_points(summaries)
363
 
364
  return {
365
  "success": True,
@@ -367,6 +393,7 @@ async def upload_pdf(file: UploadFile = File(...)):
367
  "original_length": len(text),
368
  "word_count": len(text.split()),
369
  "num_chunks": len(summaries),
 
370
  "summary": bullet_points
371
  }
372
 
 
46
  # ============================================================
47
  class SummarizeRequest(BaseModel):
48
  text: str
49
+ length_level: int = 1 # 0: Ngắn (2-3 ý), 1: Trung bình (4-5 ý), 2: Chi tiết (6+ ý)
50
 
51
 
52
  # ============================================================
 
130
  return text + '.'
131
 
132
 
133
+ def format_as_bullet_points(summaries: list[str], max_points: int = None) -> str:
134
  """
135
  Chuyển đổi các đoạn tóm tắt thành Bullet Points.
136
  Mỗi ý một dòng, bắt đầu bằng '•'.
137
+ max_points: Số lượng bullet points tối đa (None = không giới hạn)
138
  """
139
  bullet_points = []
140
 
 
149
  sentence = fix_truncated_text(sentence)
150
  bullet_points.append(f"• {sentence}")
151
 
152
+ # Giới hạn số lượng bullet points nếu có
153
+ if max_points is not None and len(bullet_points) > max_points:
154
+ bullet_points = bullet_points[:max_points]
155
+
156
  return '\n'.join(bullet_points)
157
 
158
 
 
283
  """
284
  Tóm tắt văn bản tiếng Việt.
285
  Trả về danh sách Bullet Points.
286
+ length_level: 0 = Ngắn (2-3 ý), 1 = Trung bình (4-5 ý), 2 = Chi tiết (6+ ý)
287
  """
288
  text = request.text
289
+ length_level = request.length_level
290
+
291
+ # Map length_level to max_points
292
+ max_points_map = {
293
+ 0: 3, # Ngắn: 2-3 ý
294
+ 1: 5, # Trung bình: 4-5 ý
295
+ 2: None # Chi tiết: không giới hạn
296
+ }
297
+ max_points = max_points_map.get(length_level, 5)
298
 
299
  # Validate text
300
  if not text or len(text.strip()) < 50:
 
312
  detail="Không thể tạo tóm tắt."
313
  )
314
 
315
+ # Format as bullet points với giới hạn số lượng
316
+ bullet_points = format_as_bullet_points(summaries, max_points=max_points)
317
 
318
  return {
319
  "success": True,
320
  "original_length": len(text),
321
  "word_count": len(text.split()),
322
  "num_chunks": len(summaries),
323
+ "length_level": length_level,
324
  "summary": bullet_points
325
  }
326
 
327
 
328
  @app.post("/upload-pdf")
329
+ async def upload_pdf(file: UploadFile = File(...), length_level: int = 1):
330
  """
331
  Upload và tóm tắt file PDF.
332
  Đọc qua byte stream, KHÔNG lưu file ra đĩa.
333
  Trả về danh sách Bullet Points.
334
+ length_level: 0 = Ngắn (2-3 ý), 1 = Trung bình (4-5 ý), 2 = Chi tiết (6+ ý)
335
  """
336
+ # Map length_level to max_points
337
+ max_points_map = {
338
+ 0: 3, # Ngắn: 2-3 ý
339
+ 1: 5, # Trung bình: 4-5 ý
340
+ 2: None # Chi tiết: không giới hạn
341
+ }
342
+ max_points = max_points_map.get(length_level, 5)
343
+
344
  # Validate file type
345
  if not file.filename.lower().endswith('.pdf'):
346
  raise HTTPException(
 
384
  detail="Không thể tạo tóm tắt."
385
  )
386
 
387
+ # Format as bullet points với giới hạn số lượng
388
+ bullet_points = format_as_bullet_points(summaries, max_points=max_points)
389
 
390
  return {
391
  "success": True,
 
393
  "original_length": len(text),
394
  "word_count": len(text.split()),
395
  "num_chunks": len(summaries),
396
+ "length_level": length_level,
397
  "summary": bullet_points
398
  }
399