Paul commited on
Commit
ffc34a2
·
1 Parent(s): 1a6e95f
Files changed (2) hide show
  1. finetuned_reply_service.py +13 -3
  2. reply_service.py +2 -1
finetuned_reply_service.py CHANGED
@@ -201,6 +201,7 @@ class FinetunedReplyService:
201
 
202
  generated_text = self.tokenizer.decode(outputs[0], skip_special_tokens=True)
203
 
 
204
  if self.model_arch == "encoder_decoder":
205
  response = generated_text.strip()
206
  elif "Next appropriate response for Female:" in generated_text:
@@ -208,8 +209,17 @@ class FinetunedReplyService:
208
  else:
209
  response = generated_text[len(prompt):].strip()
210
 
 
211
  response = response.split("\n")[0].strip()
212
 
 
 
 
 
 
 
 
 
213
  words = response.split()
214
  if len(words) > 25:
215
  response = " ".join(words[:25]).rstrip(",.;!?") + "."
@@ -243,9 +253,9 @@ class FinetunedReplyService:
243
  persona_text = custom_prompt
244
  else:
245
  persona_text = (
246
- "You are a charming Vietnamese wingman crafting irresistible yet respectful replies for Male. "
247
- "Keep replies concise (<35 words), confident, playful, and always from Male's perspective using 'anh' for self and 'em' for partner. "
248
- "Embed subtle compliments/flirtation while honoring the identified move."
249
  )
250
  base_prompt.append(persona_text)
251
  else:
 
201
 
202
  generated_text = self.tokenizer.decode(outputs[0], skip_special_tokens=True)
203
 
204
+ # Extract continuation relative to prompt / markers
205
  if self.model_arch == "encoder_decoder":
206
  response = generated_text.strip()
207
  elif "Next appropriate response for Female:" in generated_text:
 
209
  else:
210
  response = generated_text[len(prompt):].strip()
211
 
212
+ # Chỉ lấy dòng đầu tiên
213
  response = response.split("\n")[0].strip()
214
 
215
+ # Loại bỏ các artifact hội thoại
216
+ if "|||" in response:
217
+ response = response.split("|||")[0].strip()
218
+ for prefix in ["Male:", "Nam:", "Female:", "Nữ:"]:
219
+ if response.lower().startswith(prefix.lower()):
220
+ response = response[len(prefix):].strip()
221
+
222
+ # Giới hạn 25 từ
223
  words = response.split()
224
  if len(words) > 25:
225
  response = " ".join(words[:25]).rstrip(",.;!?") + "."
 
253
  persona_text = custom_prompt
254
  else:
255
  persona_text = (
256
+ "Bạn wingman AI tiếng Việt, chuyên giúp Nam soạn đúng một câu trả lời duyên dáng bằng tiếng Việt có dấu. "
257
+ "Luôn xưng 'anh' với 'em', phản hồi dựa trên hội thoại, Trigger Move đã cho. "
258
+ "Câu trả lời phải tự nhiên, tinh tế, không dùng tiếng Anh, không lặp lại nguyên văn câu của đối phương."
259
  )
260
  base_prompt.append(persona_text)
261
  else:
reply_service.py CHANGED
@@ -29,11 +29,12 @@ MODEL_OPTIONS = [
29
  MODEL_ID = MODEL_OPTIONS[0] # Start with vinaLlama
30
 
31
  SYSTEM_MSG = (
32
- "Bạn là một wingman AI tinh tế, chuyên giúp **Nam** soạn 1 tin nhắn trả lời duy nhất trong hội thoại hẹn hò tiếng Việt. "
33
  "Bạn luôn nhìn từ góc nhìn của Nam, xưng 'anh' và gọi đối phương là 'em'. "
34
  "Bạn được cung cấp hội thoại gần nhất giữa Male/Female cùng với Trigger (intent) và Move (chiến lược). "
35
  "Nhiệm vụ của bạn: dựa trên hội thoại + Trigger + Move, hãy chọn một hướng phản hồi tự nhiên, duyên dáng, đúng chiến lược (không quá đẩy hay quá lùi so với Move). "
36
  "Quy tắc cứng: chỉ trả về đúng **1 câu**, ≤25 từ, lịch sự, không giải thích meta, không lặp lại nguyên văn câu của đối phương, không thêm thông tin fact mới. "
 
37
  "Nếu ngữ cảnh chưa rõ (Trigger/Move mâu thuẫn với hội thoại), hãy ưu tiên sự an toàn và mềm mại, có thể hỏi lại nhẹ nhàng nhưng vẫn giữ frame chủ động của Nam. "
38
  "Phong cách: ấm áp, tự tin nhưng không tự cao; dùng từ đệm tự nhiên (nha/nhé/ạ/dạ) phù hợp; phản chiếu cảm xúc, không phán xét; giữ mạch trò chuyện mở để còn đất tăng tương tác về sau."
39
  )
 
29
  MODEL_ID = MODEL_OPTIONS[0] # Start with vinaLlama
30
 
31
  SYSTEM_MSG = (
32
+ "Bạn là một wingman AI tinh tế, chuyên giúp **Nam** soạn 1 tin nhắn trả lời duy nhất trong hội thoại hẹn hò **bằng tiếng Việt có dấu**. "
33
  "Bạn luôn nhìn từ góc nhìn của Nam, xưng 'anh' và gọi đối phương là 'em'. "
34
  "Bạn được cung cấp hội thoại gần nhất giữa Male/Female cùng với Trigger (intent) và Move (chiến lược). "
35
  "Nhiệm vụ của bạn: dựa trên hội thoại + Trigger + Move, hãy chọn một hướng phản hồi tự nhiên, duyên dáng, đúng chiến lược (không quá đẩy hay quá lùi so với Move). "
36
  "Quy tắc cứng: chỉ trả về đúng **1 câu**, ≤25 từ, lịch sự, không giải thích meta, không lặp lại nguyên văn câu của đối phương, không thêm thông tin fact mới. "
37
+ "Tuyệt đối **không dùng tiếng Anh**, chỉ dùng tiếng Việt có dấu. "
38
  "Nếu ngữ cảnh chưa rõ (Trigger/Move mâu thuẫn với hội thoại), hãy ưu tiên sự an toàn và mềm mại, có thể hỏi lại nhẹ nhàng nhưng vẫn giữ frame chủ động của Nam. "
39
  "Phong cách: ấm áp, tự tin nhưng không tự cao; dùng từ đệm tự nhiên (nha/nhé/ạ/dạ) phù hợp; phản chiếu cảm xúc, không phán xét; giữ mạch trò chuyện mở để còn đất tăng tương tác về sau."
40
  )