Spaces:
Sleeping
Sleeping
Update prompt analyze
Browse files- rag/analyze_and_expand.py +50 -20
rag/analyze_and_expand.py
CHANGED
|
@@ -23,13 +23,12 @@ def analyze_and_expand_query(question: str) -> Dict[str, Any]:
|
|
| 23 |
|
| 24 |
from core.ai_provider import api_manager
|
| 25 |
|
| 26 |
-
# Prompt được tối ưu để ép AI trả về JSON chuẩn
|
| 27 |
prompt = f"""
|
| 28 |
Bạn là bộ tìm kiếm thông tin thông minh cho hệ thống hỏi đáp về "Quy chế đào tạo của Trường Đại học Thủy Lợi".
|
| 29 |
Nhiệm vụ: Phân tích câu hỏi "{question}" và trả về JSON.
|
| 30 |
|
| 31 |
-
|
| 32 |
-
QUY TẮC PHÂN LOẠI CỰC KỲ NGHIÊM NGẶT:
|
| 33 |
BẠN CHỈ CẦN ĐƯA RA CÂU HỎI TƯƠNG TỰ CHỨ KHÔNG CẦN TRẢ LỜI CÂU HỎI
|
| 34 |
1. **CHỐNG ẢO GIÁC (ANTI-HALLUCINATION) - ƯU TIÊN SỐ 1:**
|
| 35 |
- ĐỌC KỸ CÂU HỎI, NẾU phát hiện nhắc đến các trường đại học KHÁC:
|
|
@@ -40,26 +39,32 @@ def analyze_and_expand_query(question: str) -> Dict[str, Any]:
|
|
| 40 |
DANH SÁCH TRƯỜNG KHÁC (KHÔNG PHẢI THỦY LỢI):
|
| 41 |
- "bách khoa", "bach khoa", "hust"
|
| 42 |
- "neu", "kinh tế"
|
| 43 |
-
- "ngoại thương",
|
| 44 |
-
- "sư phạm",
|
| 45 |
-
- "nông lâm",
|
| 46 |
-
- "công nghệ
|
| 47 |
-
- "huflit", "rmit", "fpt", "văn hiến",
|
| 48 |
2. Loại "outlier" (Ngoài lề):
|
| 49 |
-
- DÀNH CHO: Câu hỏi
|
| 50 |
-
-
|
| 51 |
-
- HÀNH ĐỘNG: Trả về câu trả lời từ chối lịch sự, KHÔNG ĐƯỢC phép trả lời theo kiểu "Tôi không biết" hoặc "Tôi không thể trả lời". PHẢI TRẢ LỜI CỤ THỂ rằng bạn chỉ hỗ trợ về quy chế đào tạo của Thủy Lợi.
|
| 52 |
- Expanded queries: Rỗng [].
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
-
|
|
|
|
|
|
|
| 56 |
- Expanded queries: Rỗng [].
|
| 57 |
|
| 58 |
-
4. LOẠI "simple" / "comparative" / "sequential" / "temporal" / "verification" / "exception"
|
| 59 |
-
- Dành cho TẤT CẢ các câu hỏi
|
| 60 |
-
-
|
| 61 |
-
-
|
| 62 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
5. KỸ NĂNG MỞ RỘNG TỪ KHÓA TỔNG QUÁT (BẮT BUỘC):
|
| 64 |
- Trả về danh sách CHÍNH XÁC 3 CÂU bao gồm: 1 câu gốc đã tối ưu + 2 biến thể theo từ khóa học vụ. KHÔNG ĐƯỢC sinh quá 3 câu.
|
| 65 |
- Bạn phải đóng vai một chuyên viên phòng Đào tạo. Nhiệm vụ của bạn là "dịch" ngôn ngữ đời thường/viết tắt của sinh viên sang các THUẬT NGỮ HÀNH CHÍNH, PHÁP LÝ chính thức thường xuất hiện trong các văn bản quy phạm.
|
|
@@ -67,7 +72,32 @@ def analyze_and_expand_query(question: str) -> Dict[str, Any]:
|
|
| 67 |
+ Hướng 1 (Hành chính hóa): Chuyển đổi các động từ/danh từ thông tục sang từ ngữ học vụ trang trọng. (Ví dụ: "đuổi học" -> "buộc thôi học"; "trượt môn" -> "học lại, điểm F"; "xin nghỉ" -> "tạm ngừng học tập").
|
| 68 |
+ Hướng 2 (Từ khóa bao trùm): Tìm chủ đề lớn chứa vấn đề đó. (Ví dụ: Hỏi về "điểm rèn luyện" -> Thêm từ khóa "Đánh giá kết quả rèn luyện").
|
| 69 |
+ Hướng 3 (Định nghĩa): Thêm các tiền tố để tìm chính xác định nghĩa. (Ví dụ: "Học bổng là gì", "Các loại học bổng", "Quy định về...").
|
| 70 |
-
- Trả về danh sách
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
|
| 72 |
OUTPUT JSON FORMAT:
|
| 73 |
{{
|
|
|
|
| 23 |
|
| 24 |
from core.ai_provider import api_manager
|
| 25 |
|
| 26 |
+
# Prompt được tối ưu để ép AI trả về JSON chuẩn và xử lý nhiễu giao tiếp
|
| 27 |
prompt = f"""
|
| 28 |
Bạn là bộ tìm kiếm thông tin thông minh cho hệ thống hỏi đáp về "Quy chế đào tạo của Trường Đại học Thủy Lợi".
|
| 29 |
Nhiệm vụ: Phân tích câu hỏi "{question}" và trả về JSON.
|
| 30 |
|
| 31 |
+
QUY TẮC PHÂN LOẠI CỰC KỲ NGHIÊM NGẶT:
|
|
|
|
| 32 |
BẠN CHỈ CẦN ĐƯA RA CÂU HỎI TƯƠNG TỰ CHỨ KHÔNG CẦN TRẢ LỜI CÂU HỎI
|
| 33 |
1. **CHỐNG ẢO GIÁC (ANTI-HALLUCINATION) - ƯU TIÊN SỐ 1:**
|
| 34 |
- ĐỌC KỸ CÂU HỎI, NẾU phát hiện nhắc đến các trường đại học KHÁC:
|
|
|
|
| 39 |
DANH SÁCH TRƯỜNG KHÁC (KHÔNG PHẢI THỦY LỢI):
|
| 40 |
- "bách khoa", "bach khoa", "hust"
|
| 41 |
- "neu", "kinh tế"
|
| 42 |
+
- "ngoại thương", "ftu"
|
| 43 |
+
- "sư phạm", "hpu"
|
| 44 |
+
- "nông lâm",
|
| 45 |
+
- "công nghệ", "uit"
|
| 46 |
+
- "huflit", "rmit", "fpt", "văn hiến", "mở"
|
| 47 |
2. Loại "outlier" (Ngoài lề):
|
| 48 |
+
- DÀNH CHO: Câu hỏi nhắc đến tên trường đại học khác, chủ đề không liên quan môi trường đại học, câu hỏi cá nhân.
|
| 49 |
+
- HÀNH ĐỘNG: Trả về câu trả lời từ chối lịch sự trong trường "answer".
|
|
|
|
| 50 |
- Expanded queries: Rỗng [].
|
| 51 |
+
|
| 52 |
+
3. Loại "normal" (Giao tiếp thuần túy):
|
| 53 |
+
- CHỈ DÀNH CHO: "Xin chào", "Cảm ơn", "Tạm biệt", "Bạn tên là gì?", "Bạn ai tạo ra".
|
| 54 |
+
- LƯU Ý KHI LỌC NHIỄU: NẾU câu vừa có chào hỏi vừa có câu hỏi học vụ (VD: "Chào bạn, cho mình hỏi về học bổng") -> KHÔNG được xếp vào "normal". Phải xếp vào loại tìm kiếm phía dưới và cắt bỏ phần chào hỏi.
|
| 55 |
+
- HÀNH ĐỘNG: Trả về câu trả lời ngắn gọn, thân thiện trong "answer".
|
| 56 |
- Expanded queries: Rỗng [].
|
| 57 |
|
| 58 |
+
4. CÁC LOẠI TÌM KIẾM TÀI LIỆU ("simple" / "comparative" / "sequential" / "temporal" / "verification" / "exception"):
|
| 59 |
+
- Dành cho TẤT CẢ các câu có ý định hỏi về quy chế, bất kể CÓ HAY KHÔNG kèm lời chào/cảm ơn.
|
| 60 |
+
- "simple": Câu hỏi đơn giản, hỏi về 1 khái niệm/quy định.
|
| 61 |
+
- "comparative": Cần so sánh giữa 2 hay nhiều thứ.
|
| 62 |
+
- "sequential": Câu hỏi về quy trình, các bước, thủ tục.
|
| 63 |
+
- "temporal": Câu hỏi về thời gian, thời hạn.
|
| 64 |
+
- "verification": Câu hỏi đúng/sai, xác minh thông tin "Có được không?".
|
| 65 |
+
- "exception": Câu hỏi về ngoại lệ, trường hợp đặc biệt.
|
| 66 |
+
- BẮT BUỘC đặt "answer": null.
|
| 67 |
+
|
| 68 |
5. KỸ NĂNG MỞ RỘNG TỪ KHÓA TỔNG QUÁT (BẮT BUỘC):
|
| 69 |
- Trả về danh sách CHÍNH XÁC 3 CÂU bao gồm: 1 câu gốc đã tối ưu + 2 biến thể theo từ khóa học vụ. KHÔNG ĐƯỢC sinh quá 3 câu.
|
| 70 |
- Bạn phải đóng vai một chuyên viên phòng Đào tạo. Nhiệm vụ của bạn là "dịch" ngôn ngữ đời thường/viết tắt của sinh viên sang các THUẬT NGỮ HÀNH CHÍNH, PHÁP LÝ chính thức thường xuất hiện trong các văn bản quy phạm.
|
|
|
|
| 72 |
+ Hướng 1 (Hành chính hóa): Chuyển đổi các động từ/danh từ thông tục sang từ ngữ học vụ trang trọng. (Ví dụ: "đuổi học" -> "buộc thôi học"; "trượt môn" -> "học lại, điểm F"; "xin nghỉ" -> "tạm ngừng học tập").
|
| 73 |
+ Hướng 2 (Từ khóa bao trùm): Tìm chủ đề lớn chứa vấn đề đó. (Ví dụ: Hỏi về "điểm rèn luyện" -> Thêm từ khóa "Đánh giá kết quả rèn luyện").
|
| 74 |
+ Hướng 3 (Định nghĩa): Thêm các tiền tố để tìm chính xác định nghĩa. (Ví dụ: "Học bổng là gì", "Các loại học bổng", "Quy định về...").
|
| 75 |
+
- Trả về danh sách chính xác 3 câu tìm kiếm đã được tối ưu hóa. Câu gốc phải nằm trong danh sách nếu nó phù hợp, nếu không hãy tạo biến thể gần nhất theo hướng hành chính hóa.
|
| 76 |
+
|
| 77 |
+
[VÍ DỤ MẪU - FEW SHOT EXAMPLES]
|
| 78 |
+
Input: "Chào bot nhé bạn ăn cơm chưa"
|
| 79 |
+
Output: {{"question_type": "normal", "answer": "Chào bạn 👋 Mình là trợ lý hỏi đáp quy chế đào tạo, bạn cần hỗ trợ gì ạ?", "expanded_queries": []}}
|
| 80 |
+
|
| 81 |
+
Input: "Dạ cho em hỏi Bách khoa xét học bổng thế nào ạ?"
|
| 82 |
+
Output: {{"question_type": "outlier", "answer": "Xin lỗi, tôi chỉ hỗ trợ thông tin liên quan đến Trường Đại học Thủy Lợi, không thể trả lời về Bách Khoa.", "expanded_queries": []}}
|
| 83 |
+
|
| 84 |
+
Input: "Chào bạn, cho mình hỏi kỳ này sinh viên đăng ký rút học phần muộn nhất là khi nào vậy, cảm ơn bạn."
|
| 85 |
+
Output: {{"question_type": "temporal", "answer": null, "expanded_queries": ["Thời hạn đăng ký rút học phần mùa muộn nhất", "Quy định thời gian hủy học phần đăng ký", "Lịch trình xin rút bớt môn học"]}}
|
| 86 |
+
|
| 87 |
+
Input: "Bị điểm F thì có bị đuổi học không"
|
| 88 |
+
Output: {{"question_type": "verification", "answer": null, "expanded_queries": ["Điểm F học phần có bị buộc thôi học không", "Quy định xử lý sinh viên nhận điểm F", "Điều kiện buộc thôi học kết quả học tập"]}}
|
| 89 |
+
|
| 90 |
+
Input: "Học bổng khá với giỏi khác nhau nhiều không ạ"
|
| 91 |
+
Output: {{"question_type": "comparative", "answer": null, "expanded_queries": ["So sánh học bổng khuyến khích học tập loại khá và giỏi", "Tiêu chuẩn xét học bổng khá và giỏi", "Mức tiền học bổng khá giỏi"]}}
|
| 92 |
+
|
| 93 |
+
Input: "Em bị cảnh báo học vụ lần 1 thì phải làm giấy tờ gì không"
|
| 94 |
+
Output: {{"question_type": "sequential", "answer": null, "expanded_queries": ["Quy trình thủ tục xử lý sinh viên cảnh báo học vụ lần 1", "Xử lý kết quả học tập cảnh báo học vụ", "Sinh viên cần làm gì khi bị cảnh báo kết quả học tập"]}}
|
| 95 |
+
|
| 96 |
+
Input: "Đang bảo lưu mà có giấy gọi nhập ngũ thì sao?"
|
| 97 |
+
Output: {{"question_type": "exception", "answer": null, "expanded_queries": ["Ngoại lệ gọi nhập ngũ khi đang tạm ngừng học tập", "Quy định bảo lưu kết quả học tập đi nghĩa vụ quân sự", "Trường hợp đặc biệt tạm ngừng học tập"]}}
|
| 98 |
+
|
| 99 |
+
Input: "Mất thẻ sinh viên"
|
| 100 |
+
Output: {{"question_type": "simple", "answer": null, "expanded_queries": ["Quy định cấp lại thẻ sinh viên bị mất", "Thủ tục xin cấp lại thẻ sinh viên", "Xử lý trường hợp làm mất thẻ sinh viên"]}}
|
| 101 |
|
| 102 |
OUTPUT JSON FORMAT:
|
| 103 |
{{
|