TanTran123 commited on
Commit
f7ebc88
·
verified ·
1 Parent(s): 3d1fd8e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -34
app.py CHANGED
@@ -1,53 +1,29 @@
1
- from transformers import pipeline
2
- import gradio as gr
3
-
4
- # Tạo pipeline với mô hình GPT-2 tiếng Việt từ NlpHUST
5
- text_generator = pipeline(
6
- "text-generation",
7
- model="NlpHUST/gpt2-vietnamese",
8
- tokenizer="NlpHUST/gpt2-vietnamese"
9
- )
10
-
11
- # Hàm xử lý sinh bio
12
  def generate_bio(prompt, max_length, temperature):
13
- # Làm sạch prompt và chuẩn hóa định dạng
14
  prompt = prompt.strip()
15
  if not prompt:
16
  return "❗️Vui lòng nhập thông tin mô tả bản thân để tạo bio."
17
-
18
- full_prompt = f"Viết một đoạn giới thiệu bản thân hấp dẫn cho mạng xã hội:\n{prompt}\n\nBio:"
19
-
20
- # Sinh văn bản
21
  try:
22
  outputs = text_generator(
23
  full_prompt,
24
- max_length=max_length,
25
  temperature=temperature,
26
  do_sample=True,
27
  top_k=50,
28
  top_p=0.95,
29
- num_return_sequences=1
 
30
  )
 
31
  result = outputs[0]["generated_text"].replace(full_prompt, "").strip()
 
 
 
32
  return result if result else "⚠️ Không tạo được bio phù hợp. Hãy thử lại với mô tả khác."
33
  except Exception as e:
34
  return f"🚫 Lỗi xảy ra khi sinh văn bản: {str(e)}"
35
 
36
- # Giao diện Gradio
37
- gr.Interface(
38
- fn=generate_bio,
39
- inputs=[
40
- gr.Textbox(label="🧠 Mô tả bản thân / điểm mạnh", placeholder="VD: Tôi là một chuyên gia marketing đam mê giáo dục...", lines=4),
41
- gr.Slider(50, 300, value=150, step=10, label="📝 Độ dài tối đa"),
42
- gr.Slider(0.1, 1.0, value=0.8, step=0.05, label="🎨 Mức sáng tạo (temperature)")
43
- ],
44
- outputs=gr.Textbox(label="✅ Đoạn bio gợi ý", lines=5),
45
- title="✨ AI Viết Bio Thương Hiệu Cá Nhân (Tiếng Việt)",
46
- description="Nhập mô tả bản thân, AI sẽ gợi ý đoạn bio phù hợp cho mạng xã hội, trang cá nhân hoặc phần giới thiệu nghề nghiệp.",
47
- theme="default"
48
- ).launch()
49
-
50
-
51
-
52
 
53
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  def generate_bio(prompt, max_length, temperature):
 
2
  prompt = prompt.strip()
3
  if not prompt:
4
  return "❗️Vui lòng nhập thông tin mô tả bản thân để tạo bio."
5
+
6
+ full_prompt = f"Viết một đoạn bio ngắn, giới thiệu bản thân với nội dung:\n{prompt}\n\nBio:"
7
+
 
8
  try:
9
  outputs = text_generator(
10
  full_prompt,
11
+ max_length=min(max_length, 80), # Giới hạn cứng tránh vượt quá
12
  temperature=temperature,
13
  do_sample=True,
14
  top_k=50,
15
  top_p=0.95,
16
+ num_return_sequences=1,
17
+ eos_token_id=text_generator.tokenizer.eos_token_id # Dừng đúng chỗ
18
  )
19
+ # Cắt kết quả đúng phần sinh ra
20
  result = outputs[0]["generated_text"].replace(full_prompt, "").strip()
21
+ # Giới hạn độ dài đầu ra
22
+ if len(result) > max_length:
23
+ result = result[:max_length].rsplit('.', 1)[0] + '.'
24
  return result if result else "⚠️ Không tạo được bio phù hợp. Hãy thử lại với mô tả khác."
25
  except Exception as e:
26
  return f"🚫 Lỗi xảy ra khi sinh văn bản: {str(e)}"
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29