Pyefuri commited on
Commit
3de552f
·
verified ·
1 Parent(s): 321de1f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -23
app.py CHANGED
@@ -17,23 +17,34 @@ model = AutoModelForCausalLM.from_pretrained(
17
  device_map="auto"
18
  )
19
 
20
- # Fungsi interseptor untuk mendeteksi sapaan awal dalam Bahasa Indonesia
 
 
21
  def cek_sapaan_otomatis(message):
 
22
  teks_bersih = re.sub(r'[^\w\s]', '', message.strip().lower())
23
- kata_sapaan = ["halo", "selamat malam", "selamat pagi", "selamat siang", "selamat sore", "hai", "helo", "hi", "assalamualaikum"]
24
 
25
- if teks_bersih in kata_sapaan:
26
- if "malam" in teks_bersih:
27
- return "Halo, selamat malam juga! Ada yang bisa saya bantu untuk diterjemahkan ke Bahasa Biak?"
28
- elif "pagi" in teks_bersih:
29
- return "Halo, selamat pagi juga! Ada yang bisa saya bantu hari ini?"
30
- elif "siang" in teks_bersih:
31
- return "Halo, selamat siang juga! Ada yang bisa saya bantu?"
32
- elif "sore" in teks_bersih:
33
- return "Halo, selamat sore juga! Ada yang bisa saya bantu?"
34
- else:
35
- return "Halo! Ada yang bisa saya bantu untuk diterjemahkan ke Bahasa Biak?"
36
-
 
 
 
 
 
 
 
 
 
37
  return None
38
 
39
  # Fungsi utama penerjemah dan chat di GPU
@@ -48,10 +59,10 @@ def prediksi_terjemahan(message, history):
48
  {
49
  "role": "system",
50
  "content": (
51
- "Kamu adalah asisten AI yang ramah dan ahli dalam Bahasa Indonesia dan Bahasa Biak. "
52
- "Jawablah sapaan dan pertanyaan umum pengguna dengan luwes menggunakan Bahasa Indonesia. "
53
- "Jika pengguna meminta terjemahan atau memasukkan kalimat Bahasa Indonesia untuk diartikan, "
54
- "berikan hasil terjemahan ke Bahasa Biak yang akurat dan alami."
55
  )
56
  }
57
  ]
@@ -82,13 +93,16 @@ def prediksi_terjemahan(message, history):
82
  inputs = tokenizer([input_text], return_tensors="pt").to(model.device)
83
  streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
84
 
 
 
 
85
  generation_kwargs = dict(
86
  **inputs,
87
  streamer=streamer,
88
  max_new_tokens=256,
89
- temperature=0.4,
90
- top_p=0.85,
91
- repetition_penalty=1.2,
92
  do_sample=True,
93
  eos_token_id=tokenizer.eos_token_id,
94
  pad_token_id=tokenizer.pad_token_id if tokenizer.pad_token_id is not None else tokenizer.eos_token_id
@@ -118,13 +132,11 @@ desain_kustom_css = """
118
  }
119
  """
120
 
121
- # Perbaikan Gradio 6.0: Parameter css dipindahkan dari gr.Blocks ke demo.launch
122
  with gr.Blocks() as demo:
123
  with gr.Column(elem_id="wadah-lebar-chat"):
124
  gr.Markdown("# 🤖 AI Bahasa Indonesia-Biak", elem_classes="judul-pusat")
125
  gr.ChatInterface(
126
  fn=prediksi_terjemahan
127
- # Perbaikan Gradio 6.0: Menghapus argumen type="messages"
128
  )
129
 
130
  if __name__ == "__main__":
 
17
  device_map="auto"
18
  )
19
 
20
+ # =====================================================================
21
+ # MODIFIKASI 1: Fungsi interseptor sapaan yang lebih fleksibel (Regex)
22
+ # =====================================================================
23
  def cek_sapaan_otomatis(message):
24
+ # Menghapus tanda baca dan mengubah ke huruf kecil
25
  teks_bersih = re.sub(r'[^\w\s]', '', message.strip().lower())
 
26
 
27
+ # Deteksi variasi sapaan dasar secara parsial (termasuk salah ketik seperti hala/helo)
28
+ apakah_menyapa = any(kata in teks_bersih for kata in ["halo", "hala", "hai", "helo", "hi", "p "])
29
+
30
+ # Deteksi waktu
31
+ apakah_malam = "malam" in teks_bersih
32
+ apakah_pagi = "pagi" in teks_bersih
33
+ apakah_siang = "siang" in teks_bersih
34
+ apakah_sore = "sore" in teks_bersih
35
+
36
+ # Logika penentu respon instan Bahasa Indonesia
37
+ if apakah_malam or (apakah_menyapa and apakah_malam):
38
+ return "Halo, selamat malam juga! Ada yang bisa saya bantu untuk diterjemahkan ke Bahasa Biak?"
39
+ elif apakah_pagi or (apakah_menyapa and apakah_pagi):
40
+ return "Halo, selamat pagi juga! Ada yang bisa saya bantu hari ini?"
41
+ elif apakah_siang or (apakah_menyapa and apakah_siang):
42
+ return "Halo, selamat siang juga! Ada yang bisa saya bantu?"
43
+ elif apakah_sore or (apakah_menyapa and apakah_sore):
44
+ return "Halo, selamat sore juga! Ada yang bisa saya bantu?"
45
+ elif apakah_menyapa or teks_bersih == "p":
46
+ return "Halo! Ada yang bisa saya bantu untuk diterjemahkan ke Bahasa Biak?"
47
+
48
  return None
49
 
50
  # Fungsi utama penerjemah dan chat di GPU
 
59
  {
60
  "role": "system",
61
  "content": (
62
+ "Kamu adalah asisten AI yang ramah. Kamu menguasai Bahasa Indonesia dan Bahasa Biak. "
63
+ "Aturan interaksi:\n"
64
+ "1. Jika pengguna menyapa (seperti 'halo', 'selamat malam') atau bertanya umum, balaslah dengan ramah menggunakan Bahasa Indonesia.\n"
65
+ "2. Jika pengguna meminta terjemahan atau memasukkan kalimat untuk diartikan ke Bahasa Biak, berikan hasil terjemahan yang akurat."
66
  )
67
  }
68
  ]
 
93
  inputs = tokenizer([input_text], return_tensors="pt").to(model.device)
94
  streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
95
 
96
+ # =====================================================================
97
+ # MODIFIKASI 2: Penyesuaian hyperparameter agar Qwen lebih luwes chitchat
98
+ # =====================================================================
99
  generation_kwargs = dict(
100
  **inputs,
101
  streamer=streamer,
102
  max_new_tokens=256,
103
+ temperature=0.6, # Diubah ke 0.6 agar tidak terlalu kaku saat mengobrol biasa
104
+ top_p=0.9, # Diubah ke 0.9 untuk memberikan variasi kosakata dasar yang lebih natural
105
+ repetition_penalty=1.1, # Diturunkan ke 1.1 agar kalimat mengalir lebih baik
106
  do_sample=True,
107
  eos_token_id=tokenizer.eos_token_id,
108
  pad_token_id=tokenizer.pad_token_id if tokenizer.pad_token_id is not None else tokenizer.eos_token_id
 
132
  }
133
  """
134
 
 
135
  with gr.Blocks() as demo:
136
  with gr.Column(elem_id="wadah-lebar-chat"):
137
  gr.Markdown("# 🤖 AI Bahasa Indonesia-Biak", elem_classes="judul-pusat")
138
  gr.ChatInterface(
139
  fn=prediksi_terjemahan
 
140
  )
141
 
142
  if __name__ == "__main__":