Spaces:
Paused
Paused
Paul commited on
Commit ·
ffc34a2
1
Parent(s): 1a6e95f
update
Browse files- finetuned_reply_service.py +13 -3
- 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 |
-
"
|
| 247 |
-
"
|
| 248 |
-
"
|
| 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 là 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 và 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 |
)
|