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

fix: strengthen stock check prompt - enforce check_is_stock for 'con size' queries

parent deac59b1
......@@ -1141,14 +1141,29 @@ price_max = 400000
---
### 5.5.5. 📏 PHÂN BIỆT "CÓ SIZE GÌ" vs "CÒN SIZE GÌ" (QUAN TRỌNG!)
### 5.5.5. 📏 PHÂN BIỆT "CÓ SIZE GÌ" vs "CÒN SIZE GÌ" (CỰC KỲ QUAN TRỌNG!)
**2 câu hỏi này KHÁC NHAU HOÀN TOÀN — bot PHẢI phân biệt:**
**⚠️ 2 câu hỏi này KHÁC NHAU HOÀN TOÀN — bot PHẢI phân biệt CHÍNH XÁC:**
| Câu hỏi | Ý nghĩa | Hành động |
|----------|---------|-----------|
| "Có size gì?" / "Size nào?" | SP được sản xuất những size nào? | **Liệt kê từ `size_scale`** trong data tool đã trả về |
| "Còn size gì?" / "Size M còn không?" / "Hết size chưa?" | Size nào CÒN HÀNG? | **GỌI `check_is_stock`** để check tồn kho thật |
| "**Còn** size gì?" / "**Còn** những size nào?" / "Size M **còn** không?" / "**Hết** size chưa?" / "**Còn hàng** không?" | Size nào CÒN HÀNG? | **BẮT BUỘC GỌI `check_is_stock`** |
**⛔ CẤM TUYỆT ĐỐI:** Khi khách hỏi có chữ "CÒN" hoặc "HẾT", KHÔNG ĐƯỢC trả lời từ `size_scale`. PHẢI gọi `check_is_stock` trước!
**VÍ DỤ QUAN TRỌNG:**
```
Khách: "Mẫu này còn những size nào?" ← CÓ CHỮ "CÒN" → BẮT BUỘC GỌI check_is_stock!
❌ SAI: "Có size S, M, L, XL, XXL nhé!" (trả từ size_scale, KHÔNG check tồn kho thật)
✅ ĐÚNG: Gọi check_is_stock → "Dạ hiện size S, M, L vẫn còn hàng. Size XL và XXL tạm hết ạ!"
Khách: "Mẫu này có size gì?" ← KHÔNG có chữ "CÒN" → Liệt kê từ size_scale
✅ ĐÚNG: "Có size S, M, L, XL, XXL nhé!"
```
**TRIGGER WORDS BẮT BUỘC GỌI `check_is_stock`:**
"còn hàng", "hết hàng", "còn size", "còn những size", "size nào còn", "còn bán", "hết chưa", "còn không", "check tồn", "kiểm tra tồn", "còn màu", "hết màu"
---
......@@ -1176,18 +1191,23 @@ price_max = 400000
**BẮT BUỘC gọi `check_is_stock` với SKU + size cụ thể:**
**TRIGGER WORDS:** "còn hàng", "hết hàng", "còn size", "size M còn không", "check tồn kho", "còn bán không"
**TRIGGER WORDS:** "còn hàng", "hết hàng", "còn size", "còn những size nào", "size M còn không", "check tồn kho", "còn bán không", "hết chưa"
```
Khách: "Mã [6IT25W010] còn size M không?"
→ Bot GỌI check_is_stock(sku="6IT25W010", size="M")
→ Trả lời theo kết quả: "Dạ size M vẫn còn hàng ạ!" hoặc "Dạ size M hết rồi, còn L và XL thôi ạ!"
Khách: "Mẫu này còn những size nào?"
→ Bot GỌI check_is_stock(sku=SKU_từ_context)
→ Trả lời: "Dạ hiện còn size S, M, L ạ! Size XL tạm hết."
Khách: "Cái áo vừa xem còn hàng không?"
→ Bot đọc SUMMARY_HISTORY → biết SKU → GỌI check_is_stock
→ Trả lời chính xác
```
---
#### 💡 VÍ DỤ THỰC TẾ:
......
"""Check Hoàng Mai in store table"""
import asyncio, sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from common.starrocks_connection import get_db_connection
"""Push updated system prompt to Langfuse"""
import os
from dotenv import load_dotenv
load_dotenv(os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), ".env"))
from langfuse import Langfuse
async def main():
sr = get_db_connection()
rows = await sr.execute_query_async("""
SELECT store_name, address, city, state, phone_number, schedule_name
FROM shared_source.chatbot_rsa_store_schedule_with_text_embedding
WHERE LOWER(city) LIKE '%hoàng mai%'
OR LOWER(address) LIKE '%hoàng mai%'
OR LOWER(store_name) LIKE '%hoàng mai%'
""")
print(f"Found: {len(rows)}")
for r in rows:
print(r)
prompt_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
"agent", "system_prompt.txt")
with open(prompt_path, "r", encoding="utf-8") as f:
content = f.read()
# Also check Phúc Yên
print("\n=== PHÚC YÊN ===")
rows2 = await sr.execute_query_async("""
SELECT store_name, address, city, state
FROM shared_source.chatbot_rsa_store_schedule_with_text_embedding
WHERE LOWER(city) LIKE '%phúc yên%' OR LOWER(state) LIKE '%vĩnh phúc%'
""")
print(f"Found: {len(rows2)}")
for r in rows2:
print(r)
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
try:
loop.run_until_complete(main())
finally:
loop.close()
lf = Langfuse()
lf.create_prompt(
name="canifa-stylist-system-prompt",
prompt=content,
labels=["production"],
tags=["canifa", "system-prompt"],
type="text",
)
print("✅ System prompt pushed to Langfuse!")
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