TanTran123 commited on
Commit
350881d
·
verified ·
1 Parent(s): 1b801b9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -35
app.py CHANGED
@@ -1,50 +1,53 @@
1
  import gradio as gr
2
- from transformers import pipeline, set_seed
3
 
4
- # Load model
5
- text_generator = pipeline("text-generation", model="NlpHUST/gpt2-vietnamese", tokenizer="NlpHUST/gpt2-vietnamese")
6
- set_seed(42)
 
 
7
 
8
  # Hàm sinh bio
9
  def generate_bio(prompt, max_length, temperature):
10
- prompt = prompt.strip()
11
- if not prompt:
12
- return "❗️Vui lòng nhập thông tin tả bản thân để tạo bio."
13
-
14
- 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:"
15
-
16
- try:
17
- outputs = text_generator(
18
- full_prompt,
19
- max_length=min(max_length, 80),
20
- temperature=temperature,
21
- do_sample=True,
22
- top_k=50,
23
- top_p=0.95,
24
- num_return_sequences=1,
25
- eos_token_id=text_generator.tokenizer.eos_token_id
26
- )
27
- result = outputs[0]["generated_text"].replace(full_prompt, "").strip()
28
- if len(result) > max_length:
29
- result = result[:max_length].rsplit('.', 1)[0] + '.'
30
- 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."
31
- except Exception as e:
32
- return f"🚫 Lỗi xảy ra khi sinh văn bản: {str(e)}"
33
 
34
- # Tạo Gradio app
35
- with gr.Blocks() as app:
36
  gr.Markdown("✨ **AI Viết Bio Thương Hiệu Cá Nhân (Tiếng Việt)**")
37
 
38
  with gr.Row():
39
  with gr.Column():
40
- input_text = gr.Textbox(label="🧠 Mô tả bản thân / điểm mạnh")
41
- max_len = gr.Slider(20, 300, value=60, label="📏 Độ dài tối đa")
42
- temp = gr.Slider(0.1, 1.0, value=0.8, label="🌡️ Mức sáng tạo (temperature)")
43
  submit_btn = gr.Button("Submit")
 
 
44
  with gr.Column():
45
- output = gr.Textbox(label=" Đoạn bio gợi ý", lines=6)
46
 
47
- submit_btn.click(fn=generate_bio, inputs=[input_text, max_len, temp], outputs=output)
 
 
48
 
49
- # 🚀 Quan trọng: Lệnh launch app
50
  app.launch()
 
1
  import gradio as gr
2
+ from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
3
 
4
+ # Tải model và tokenizer
5
+ model_name = "NlpHUST/gpt2-vietnamese"
6
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
7
+ model = AutoModelForCausalLM.from_pretrained(model_name)
8
+ text_generator = pipeline("text-generation", model=model, tokenizer=tokenizer)
9
 
10
  # Hàm sinh bio
11
  def generate_bio(prompt, max_length, temperature):
12
+ # Prompt cứng để định hướng model
13
+ full_prompt = (
14
+ f"Viết một đoạn bio 1-2 câu, ngắn gọn, vui nhộn, dùng trên mạng xã hội.\n"
15
+ f"Chủ đề: {prompt.strip()}\nBio:"
16
+ )
17
+
18
+ outputs = text_generator(
19
+ full_prompt,
20
+ max_length=max_length,
21
+ do_sample=True,
22
+ temperature=temperature,
23
+ pad_token_id=tokenizer.eos_token_id,
24
+ num_return_sequences=1,
25
+ top_k=50,
26
+ top_p=0.95
27
+ )
28
+
29
+ # Xử lý đầu ra, loại bỏ phần prompt ban đầu
30
+ generated = outputs[0]["generated_text"]
31
+ generated_bio = generated.replace(full_prompt, "").strip()
32
+ return generated_bio
 
 
33
 
34
+ # Tạo giao diện
35
+ with gr.Blocks(title="AI Viết Bio Thương Hiệu Cá Nhân (Tiếng Việt)") as app:
36
  gr.Markdown("✨ **AI Viết Bio Thương Hiệu Cá Nhân (Tiếng Việt)**")
37
 
38
  with gr.Row():
39
  with gr.Column():
40
+ prompt_input = gr.Textbox(label="🧠 Mô tả bản thân / điểm mạnh", placeholder="VD: Tôi là người chơi cầu lông hài hước")
41
+ max_length = gr.Slider(label="✏️ Độ dài tối đa", minimum=20, maximum=300, value=60, step=5)
42
+ temperature = gr.Slider(label="🧪 Mức sáng tạo (temperature)", minimum=0.1, maximum=1.0, value=0.8, step=0.1)
43
  submit_btn = gr.Button("Submit")
44
+ clear_btn = gr.Button("Clear")
45
+
46
  with gr.Column():
47
+ output_box = gr.Textbox(label="📋 Đoạn bio gợi ý", lines=5)
48
 
49
+ # Xử nút
50
+ submit_btn.click(fn=generate_bio, inputs=[prompt_input, max_length, temperature], outputs=output_box)
51
+ clear_btn.click(fn=lambda: "", inputs=None, outputs=output_box)
52
 
 
53
  app.launch()