Upload 5 files
Browse files
main.py
CHANGED
|
@@ -329,7 +329,9 @@ def fallback_infer(prompt):
|
|
| 329 |
if llm is None:
|
| 330 |
return "Xin lỗi, hệ thống đang bị lỗi tải mô hình GGUF."
|
| 331 |
|
| 332 |
-
system_prompt = "Bạn là trợ lý AI tiếng Việt tên là EvoNet. Hãy trả lời ngắn gọn, trực tiếp và chính xác.
|
|
|
|
|
|
|
| 333 |
formatted_prompt = f"<|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"
|
| 334 |
|
| 335 |
res = llm.create_completion(
|
|
@@ -340,14 +342,26 @@ def fallback_infer(prompt):
|
|
| 340 |
)
|
| 341 |
text = res["choices"][0]["text"].strip()
|
| 342 |
|
| 343 |
-
#
|
| 344 |
text = re.sub(r'<think>.*?</think>', '', text, flags=re.DOTALL)
|
| 345 |
-
# Loại bỏ nếu bị đứt đoạn <think> mà không có đóng
|
| 346 |
text = re.sub(r'<think>.*', '', text, flags=re.DOTALL)
|
| 347 |
|
| 348 |
text = text.strip()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 349 |
if not text:
|
| 350 |
-
return "Xin lỗi,
|
| 351 |
|
| 352 |
return text
|
| 353 |
|
|
|
|
| 329 |
if llm is None:
|
| 330 |
return "Xin lỗi, hệ thống đang bị lỗi tải mô hình GGUF."
|
| 331 |
|
| 332 |
+
system_prompt = "Bạn là trợ lý AI tiếng Việt tên là EvoNet. Hãy trả lời ngắn gọn, trực tiếp và chính xác."
|
| 333 |
+
|
| 334 |
+
# Assistant Prefill: Ép model bắt đầu bằng một từ tiếng Việt để chặn nó sinh thẻ <think> tiếng Anh
|
| 335 |
formatted_prompt = f"<|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n"
|
| 336 |
|
| 337 |
res = llm.create_completion(
|
|
|
|
| 342 |
)
|
| 343 |
text = res["choices"][0]["text"].strip()
|
| 344 |
|
| 345 |
+
# Lọc rác (nếu có)
|
| 346 |
text = re.sub(r'<think>.*?</think>', '', text, flags=re.DOTALL)
|
|
|
|
| 347 |
text = re.sub(r'<think>.*', '', text, flags=re.DOTALL)
|
| 348 |
|
| 349 |
text = text.strip()
|
| 350 |
+
|
| 351 |
+
# Nếu text vẫn rỗng, thử gọi lại 1 lần nữa với prefill mạnh hơn
|
| 352 |
+
if not text:
|
| 353 |
+
formatted_prompt_retry = f"<|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\nTôi"
|
| 354 |
+
res_retry = llm.create_completion(
|
| 355 |
+
formatted_prompt_retry,
|
| 356 |
+
max_tokens=512,
|
| 357 |
+
stop=["<|im_end|>", "<|im_start|>"],
|
| 358 |
+
temperature=0.8
|
| 359 |
+
)
|
| 360 |
+
text = "Tôi" + res_retry["choices"][0]["text"]
|
| 361 |
+
text = re.sub(r'<think>.*?</think>', '', text, flags=re.DOTALL).strip()
|
| 362 |
+
|
| 363 |
if not text:
|
| 364 |
+
return "Xin lỗi, hiện tại tôi không thể trả lời câu hỏi này."
|
| 365 |
|
| 366 |
return text
|
| 367 |
|