Phỏng vấn series AI 12: Làm thế nào để tối ưu Prompt?
Tối ưu Prompt (Prompt Engineering / Optimization) là kỹ năng quan trọng để khiến mô hình ngôn ngữ lớn “nghe lời”, đặc biệt trong hệ thống RAG, nó quyết định trực tiếp liệu mô hình có trung thành dựa vào nội dung truy xuất, tránh ảo giác, và tuân thủ định dạng đầu ra hay không.
I. Nguyên tắc cốt lõi của tối ưu Prompt
- Rõ ràng > Phức tạp: Các hướng dẫn trực tiếp đơn giản thường hiệu quả hơn các chuỗi suy luận cầu kỳ.
- Đưa đủ ràng buộc: Nói rõ cho mô hình “có thể làm gì, không thể làm gì”.
- Cung cấp ví dụ: Few-shot ổn định hơn Zero-shot.
- Có thể kiểm chứng: Yêu cầu mô hình xuất ra trích dẫn hoặc mức độ tin cậy để dễ dàng đánh giá ở hạ nguồn.
- Tối ưu lặp: Bắt đầu từ baseline, mỗi lần chỉ thay đổi một biến, so sánh hiệu quả.
II. Các kỹ thuật tối ưu cụ thể (từ dễ đến khó)
1. Thiết lập vai trò (System Prompt)
Bạn là trợ lý chăm sóc khách hàng chuyên nghiệp. Bạn chỉ được trả lời câu hỏi dựa trên 【Tài liệu tham khảo】 được cung cấp bên dưới.
Nếu bạn không biết câu trả lời, hãy trực tiếp nói “Không có thông tin liên quan trong tài liệu”, đừng tự bịa đặt.
- Tác dụng: Thiết lập ranh giới và giọng điệu.
- Điểm tối ưu: Giọng điệu (chuyên nghiệp/thân thiện), mức độ ràng buộc (nghiêm ngặt/lỏng lẻo).
2. Hướng dẫn rõ ràng
❌ Tệ: “Trả lời câu hỏi của người dùng.”
✅ Tốt: “Chỉ dựa vào 【Tài liệu tham khảo】 bên dưới để trả lời. Nếu tài liệu tham khảo không chứa câu trả lời, hãy trả lời ‘Tôi không thể trả lời câu hỏi này’.”
3. Kiểm soát định dạng đầu ra
Hãy xuất ra theo định dạng JSON sau:
{
"answer": "Câu trả lời của bạn",
"confidence": "Cao/Trung bình/Thấp",
"sources": [1, 3]
}
- Mục đích: Dễ dàng phân tích, trích dẫn, gỡ lỗi ở hạ nguồn.
4. Ví dụ Few-shot (rất hiệu quả)
Ví dụ 1:
Câu hỏi: Nghỉ phép năm có bao nhiêu ngày?
Tài liệu tham khảo: Quy tắc nghỉ phép năm: đủ 1 năm được 5 ngày, đủ 10 năm được 10 ngày.
Câu trả lời: Đủ 1 năm được 5 ngày, đủ 10 năm được 10 ngày.
Ví dụ 2:
Câu hỏi: Tiền làm thêm giờ tính thế nào?
Tài liệu tham khảo: Làm thêm ngày thường gấp 1.5 lần, cuối tuần gấp 2 lần.
Câu trả lời: Ngày thường gấp 1.5 lần, cuối tuần gấp 2 lần.
Bây giờ hãy trả lời:
Câu hỏi: {Câu hỏi của người dùng}
Tài liệu tham khảo: {Nội dung truy xuất}
Câu trả lời:
- Mẹo: Ví dụ nên bao phủ các độ khó khác nhau, tốt nhất bao gồm một ví dụ “không thể trả lời”.
5. Bắt buộc trích dẫn
Ở cuối câu trả lời, đánh dấu số nguồn bằng [citation:X]. Ví dụ: “Nghỉ phép năm là 5 ngày[citation:1].”
Nếu tổng hợp nhiều tài liệu, đánh dấu riêng từng cái.
6. Thiết lập ngưỡng từ chối trả lời
- Ràng buộc cứng: “Nếu tài liệu tham khảo hoàn toàn không liên quan đến câu hỏi, hãy trả lời ‘Tài liệu không liên quan’.”
- Ràng buộc mềm: Kết hợp với điểm số tin cậy truy xuất, khi dưới ngưỡng thì tự động đi theo nhánh từ chối trả lời.
7. Chuỗi suy luận (Chain-of-Thought) cho suy luận đa bước
Câu hỏi: Sếp của Trương Tam là ai?
Các bước: 1. Tìm phòng ban của Trương Tam. 2. Tìm người phụ trách phòng ban đó. 3. Đưa ra câu trả lời cuối cùng.
Hãy suy nghĩ theo từng bước rồi xuất ra.
8. Hướng dẫn phủ định (Negative Prompting)
Đừng bịa đặt câu trả lời. Đừng dùng các từ mơ hồ như “có thể”, “có lẽ”. Đừng xuất ra bất kỳ con số nào ngoài tài liệu tham khảo.
III. Làm thế nào để đánh giá Prompt tốt hay xấu?
| Chỉ số | Ý nghĩa | Cách đo |
|---|---|---|
| Độ trung thành | Câu trả lời có hoàn toàn dựa trên tài liệu tham khảo không | Thủ công hoặc Faithfulness của RAGAS |
| Độ chính xác từ chối trả lời | Có từ chối khi đáng lẽ phải từ chối không | Tính toán trên tập kiểm tra không có câu trả lời |
| Tỷ lệ tuân thủ định dạng | Có xuất ra JSON / trích dẫn theo yêu cầu không | So khớp biểu thức chính quy |
| Sự hài lòng của người dùng | Câu trả lời có hữu ích không | Phản hồi trực tuyến / A/B test |
Khuyến nghị: Chuẩn bị một tập kiểm tra nhỏ (20-50 trường hợp cạnh), mỗi lần thay đổi prompt thì chạy lại và ghi lại sự thay đổi.
IV. Cạm bẫy thường gặp và hướng tối ưu
| Biểu hiện vấn đề | Nguyên nhân có thể | Phương pháp tối ưu |
|---|---|---|
| Mô hình bỏ qua tài liệu tham khảo, tự trả lời | Hướng dẫn chưa đủ mạnh | Đổi thành “Chỉ dựa vào tài liệu dưới đây”, và dùng few-shot thể hiện từ chối trả lời |
| Mô hình luôn nói “không biết” | Ngưỡng từ chối quá cao | Giảm ngưỡng hoặc kiểm tra chất lượng truy xuất |
| Định dạng đầu ra lộn xộn, không theo JSON | Hướng dẫn không rõ ràng | Thêm ví dụ định dạng chặt chẽ, hoặc dùng function calling |
| Câu trả lời quá dài/quá ngắn | Không chỉ định độ dài | “Trả lời trong không quá 3 câu” |
| Suy luận đa bước sai | Khả năng suy luận của mô hình chưa đủ | Yêu cầu thể hiện suy luận từng bước, hoặc đổi sang mô hình mạnh hơn |
| Xuất hiện số/ngày tháng ảo giác | Mô hình dựa vào kiến thức riêng | Nhấn mạnh “Không sử dụng bất kỳ số nào bạn nhớ, chỉ nhìn vào tài liệu” |
评论
暂无已展示的评论。
发表评论(匿名)