Commit 10069b44 authored by Vũ Hoàng Anh's avatar Vũ Hoàng Anh

feat(agent): add 6 few-shot examples to Classifier prompt for combo,...

feat(agent): add 6 few-shot examples to Classifier prompt for combo, correction, recall, and early exit scenarios
parent 5dd70aff
...@@ -75,15 +75,24 @@ Args cho Lane 2 (`inferred`): ...@@ -75,15 +75,24 @@ Args cho Lane 2 (`inferred`):
- **TRƯỜNG HỢP CỰC KỲ MƠ HỒ (CRITICAL):** Nếu khách chỉ nói "tìm áo", "có gì mặc đẹp không", "tư vấn đồ cho mình", "có gì mới không" mà KHÔNG HỀ có thông tin giới tính, độ tuổi hay dịp mặc -> **BẮT BUỘC KHÔNG GỌI TOOL**. Hãy Early Exit để hỏi lại: "Dạ, bạn đang tìm đồ cho nam, nữ hay bé và cho dịp gì để mình tư vấn chuẩn nhất ạ?". - **TRƯỜNG HỢP CỰC KỲ MƠ HỒ (CRITICAL):** Nếu khách chỉ nói "tìm áo", "có gì mặc đẹp không", "tư vấn đồ cho mình", "có gì mới không" mà KHÔNG HỀ có thông tin giới tính, độ tuổi hay dịp mặc -> **BẮT BUỘC KHÔNG GỌI TOOL**. Hãy Early Exit để hỏi lại: "Dạ, bạn đang tìm đồ cho nam, nữ hay bé và cho dịp gì để mình tư vấn chuẩn nhất ạ?".
- TUYỆT ĐỐI KHÔNG tự giả định mùa hay giới tính nếu không có manh mối. - TUYỆT ĐỐI KHÔNG tự giả định mùa hay giới tính nếu không có manh mối.
### QUY TẮC GENDER & AGE (KẾ THỪA TỪ INSIGHT): ### QUY TẮC KẾ THỪA INSIGHT (CỰC KỲ QUAN TRỌNG):
- ⚠️ BẮT BUỘC ĐỌC CUSTOMER INSIGHT:
+ Nếu Insight ghi `Target: Bé trai` -> BẮT BUỘC ĐIỀN `age_by_product="kid"` và `gender_by_product="boy"`. **TRƯỜNG CỨNG (BẮT BUỘC kế thừa từ Insight nếu có):**
+ Nếu Insight ghi `Target: Bé gái` -> BẮT BUỘC ĐIỀN `age_by_product="kid"` và `gender_by_product="girl"`. - `gender_by_product`: Kế thừa từ Insight.TARGET hoặc Insight.USER.
+ Nếu Insight ghi `Target: Nam` -> BẮT BUỘC ĐIỀN `gender_by_product="men"`. + Insight ghi `Target: Bé trai` -> `age_by_product="kid"`, `gender_by_product="boy"`.
+ Nếu Insight ghi `Target: Nữ` -> BẮT BUỘC ĐIỀN `gender_by_product="women"`. + Insight ghi `Target: Bé gái` -> `age_by_product="kid"`, `gender_by_product="girl"`.
+ Insight ghi `Target: Nam` -> `gender_by_product="men"`.
+ Insight ghi `Target: Nữ` -> `gender_by_product="women"`.
- `age_by_product`: Kế thừa adult/kid từ Insight.
- "váy", "đầm", "chân váy" -> BẮT BUỘC gender_by_product="women" (nếu không nói cho bé). - "váy", "đầm", "chân váy" -> BẮT BUỘC gender_by_product="women" (nếu không nói cho bé).
- Nếu khách ĐỔI đối tượng (VD: đang tìm đồ bé trai, bỗng nói "tìm cho mẹ") thì mới cập nhật lại. - Nếu khách ĐỔI đối tượng (VD: đang tìm đồ bé trai, bỗng nói "tìm cho mẹ") thì mới cập nhật lại.
**TRƯỜNG MỀM (TUYỆT ĐỐI KHÔNG kế thừa — PHẢI suy luận tươi từ câu hỏi hiện tại):**
- `product_line_vn`: LUÔN suy luận từ câu hỏi hiện tại. KHÔNG BAO GIỜ copy từ Insight.TARGET.
+ VD: Insight ghi `TARGET: Sịp nữ` nhưng khách hỏi "combo đi biển" -> product_line_vn PHẢI là ["Áo phông", "Quần soóc", "Váy liền"...], KHÔNG được là ["Quần lót"].
- `tags`, `keywords`: LUÔN suy luận tươi từ câu hỏi hiện tại.
- `literal.raw_text`: LUÔN trích từ câu hỏi hiện tại.
### 🔁 RECALL & ĐÍNH CHÍNH (QUAN TRỌNG): ### 🔁 RECALL & ĐÍNH CHÍNH (QUAN TRỌNG):
- NẾU khách CHỈ tham chiếu SP đã có mặt trong list: "cái đầu tiên", "cái đó", "cái áo ban nãy", "lấy cái kia": - NẾU khách CHỈ tham chiếu SP đã có mặt trong list: "cái đầu tiên", "cái đó", "cái áo ban nãy", "lấy cái kia":
→ **ĐỌC NGAY phần "SP ĐÃ GIỚI THIỆU" trong context** để biết SP nào đã show. → **ĐỌC NGAY phần "SP ĐÃ GIỚI THIỆU" trong context** để biết SP nào đã show.
...@@ -97,6 +106,67 @@ Args cho Lane 2 (`inferred`): ...@@ -97,6 +106,67 @@ Args cho Lane 2 (`inferred`):
- NẾU khách chỉ nói "hi", "xin chào", "tôi muốn hỏi", "oke", "dạ", hoặc các câu giao tiếp xã giao: - NẾU khách chỉ nói "hi", "xin chào", "tôi muốn hỏi", "oke", "dạ", hoặc các câu giao tiếp xã giao:
→ để `tool_name` = null và điền câu chào/đáp trả vào `ai_response`. → để `tool_name` = null và điền câu chào/đáp trả vào `ai_response`.
- ⚠️ CHỈ để `tool_name` = null khi query thực sự KHÔNG có mục tiêu tìm kiếm (VD: "alo", "tư vấn đi"). Nếu có "mặc Tết", "đi chơi" -> PHẢI gọi tool. - ⚠️ CHỈ để `tool_name` = null khi query thực sự KHÔNG có mục tiêu tìm kiếm (VD: "alo", "tư vấn đi"). Nếu có "mặc Tết", "đi chơi" -> PHẢI gọi tool.
---
### 📝 VÍ DỤ MINH HỌA (Few-Shot Examples):
**VD1 — Khách hỏi "combo đi biển" (Insight cũ: TARGET=Sịp nữ):**
```
Insight: {"TARGET": "Sịp nữ", "GOAL": "Tìm quần lót"}
Query: "tìm combo đi biển sầm sơn"
→ tool_name: "lead_search_tool"
→ literal.raw_text: "combo đi biển"
→ inferred.product_line_vn: ["Áo phông", "Quần soóc", "Váy liền", "Áo ba lỗ"] ← RESET, KHÔNG copy "Quần lót" từ Insight!
→ inferred.gender_by_product: "women" ← Kế thừa giới tính từ Insight
→ inferred.tags: ["occ:di_bien", "wthr:mua_he"]
→ inferred.keywords: ["thoáng mát", "đi biển"]
```
**VD2 — Khách đính chính giới tính ("cho nữ cơ mà"):**
```
Insight: {"TARGET": "Đồ lót cho nam"}
Query: "sịp cho nữ cơ mà"
→ tool_name: "lead_search_tool" ← BẮT BUỘC gọi tool mới, KHÔNG early exit!
→ literal.raw_text: "sịp nữ"
→ inferred.product_line_vn: ["Quần lót", "Quần lót đùi", "Quần lót tam giác"]
→ inferred.gender_by_product: "women" ← Đính chính từ nam → nữ
```
**VD3 — Khách hỏi chung "đồ mùa hè" (Insight cũ: TARGET=Áo khoác):**
```
Insight: {"TARGET": "Áo khoác gió"}
Query: "có đồ mùa hè gì đẹp cho nữ không"
→ tool_name: "lead_search_tool"
→ literal.raw_text: "đồ mùa hè"
→ inferred.product_line_vn: ["Áo phông", "Áo ba lỗ", "Quần soóc", "Váy liền"] ← RESET theo ngữ cảnh mùa hè, KHÔNG copy "Áo khoác"!
→ inferred.gender_by_product: "women"
→ inferred.tags: ["wthr:mua_he", "func:thoang_mat"]
```
**VD4 — Khách chào hỏi (Early Exit):**
```
Query: "xin chào"
→ tool_name: null
→ ai_response: "Chào bạn! Mình là stylist Canifa. Bạn đang tìm đồ cho ai và dịp gì để mình tư vấn nhé?"
```
**VD5 — Khách hỏi cực kỳ mơ hồ, không có insight giới tính:**
```
Insight: {"TARGET": "Chưa rõ"}
Query: "có gì đẹp không"
→ tool_name: null ← Quá mơ hồ, KHÔNG gọi tool
→ ai_response: "Dạ, bạn đang tìm đồ cho nam, nữ hay bé và cho dịp gì để mình tư vấn chuẩn nhất ạ?"
```
**VD6 — Khách tham chiếu SP cũ (Recall):**
```
Insight: {"LATEST_PRODUCT_INTEREST": "Quần lót Hipster Nữ (6US25A004)"}
Query: "lấy cái đầu tiên đi"
→ tool_name: null ← Không search mới, tham chiếu SP đã show
→ ai_response: "Dạ, bạn chọn Quần lót Hipster Nữ Pack 3 Oekotek (6US25A004) nhé! Bạn cho mình xin size..."
→ product_ids: ["6US25A004"]
```
""" """
# ═══════════════════════════════════════════════ # ═══════════════════════════════════════════════
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment