Chuyển tới nội dung chính

Khung CRAC và cách viết prompt

Cùng một mô hình AI, nhưng cách bạn đặt câu hỏi quyết định phần lớn chất lượng câu trả lời. Lý do nằm ở cách mô hình ngôn ngữ lớn làm việc: nó dự đoán từng mảnh chữ (token) kế tiếp dựa trên những gì bạn đưa vào. Bạn đưa vào càng rõ, mô hình càng đặt xác suất cao vào đúng nội dung bạn cần. Prompt mơ hồ kéo câu trả lời về kiểu chung chung, an toàn và thường nông.

Để khỏi phải nhớ rời rạc, ta dùng một khung dễ thuộc tên là CRAC, gồm bốn thành phần.

  • Context (bối cảnh): tình huống là gì, dữ liệu nền nào cần đưa vào, ai sẽ đọc kết quả.
  • Role (vai trò): bạn muốn mô hình đóng vai gì, ví dụ giảng viên, biên tập viên, gia sư. Vai trò định hình giọng và độ sâu.
  • Action (hành động): động từ chính, nêu rõ việc cần làm như tóm tắt, giải thích, lập dàn ý.
  • Criteria (tiêu chí): ràng buộc đầu ra như độ dài, định dạng, giọng văn, ngôn ngữ trả lời.

Một prompt tốt thường có đủ bốn thành phần này. Bạn không bắt buộc tách thành bốn dòng riêng như ví dụ dưới đây; cách trình bày tách dòng chỉ để thấy rõ từng thành phần. Khi quen rồi bạn có thể viết liền mạch mà vẫn đủ CRAC.

So sánh prompt yếu và prompt tốt

Cùng một việc, nhờ AI giúp chuẩn bị nội dung thuyết trình về điện toán đám mây. Bấm vào từng nhãn thành phần để xem nó nằm ở đâu trong prompt tốt và nó thêm được gì.

Prompt yếu
Viết về điện toán đám mây giúp tôi.
Quá mơ hồ: không bối cảnh, không vai trò, không nêu rõ việc cần làm, không tiêu chí. Kết quả thường chung chung và phải sửa nhiều.
Prompt mạnh
Bối cảnh: Tôi là sinh viên năm nhất ngành công nghệ thông tin, chuẩn bị một bài thuyết trình 5 phút về điện toán đám mây cho các bạn cùng lớp chưa biết về chủ đề này.

Vai trò: Hãy đóng vai một giảng viên giải thích dễ hiểu.

Hành động: Lập dàn ý bài thuyết trình gồm phần mở đầu, ba ý chính và phần kết, kèm một ví dụ thực tế quen thuộc cho mỗi ý chính.

Tiêu chí: Trình bày dưới dạng gạch đầu dòng, ngôn ngữ tiếng Việt, tránh thuật ngữ khó, độ dài khoảng 250 từ.
Thành phần:
So hai bản viết bằng số: đếm, khoảng cách sửa, độ trùng từ vựng
khoảng cách 96 phép
1 · Đếm hai bản, và chênh lệch
Đại lượngBản trướcBản sauChênh tuyệt đốiChênh phần trăm
Ký tựtính theo điểm mã, sau khi gộp khoảng trắng34 447 +413+1.215%
Từtách theo khoảng trắng, tiếng Việt thì mỗi âm tiết là một từ8 101 +93+1.163%
Câucắt tại dấu . ! ? … hoặc chỗ xuống dòng1 4 +3+300%
Từ riêng biệtcỡ tập từ mà độ trùng bên dưới dùng8 85 +77+963%
Token (ước lượng)ceil(số ký tự / 3)12 149 +137+1.142%
Cột chênh phần trăm lấy bản trước làm gốc: (sau - trước) / trước. Khi bản trước bằng 0 thì phép chia không có kết quả, nên sim ghi không xác định chứ không in số 0. Dòng token là ước lượng theo quy tắc công khai ceil(ký tự / hệ số), không phải bộ tách token thật: mỗi mô hình tách khác nhau, nên hệ số là một núm sửa được ở thanh công cụ, và đổi hệ số làm hai con số token đổi theo.
2 · Khoảng cách chỉnh sửa ở mức từ
Số phép sửa ít nhất96thay 3, chèn 93, xoá 0, giữ nguyên 5
Chia cho bản dài hơn (101 từ)0,95096 / 101, bằng 0 khi và chỉ khi hai bản trùng khít
Hai bản có trùng khítkhôngso trên văn bản đã chuẩn hoá, nên bật công tắc chuẩn hoá có thể biến hai bản khác nhau thành trùng khít
Dãy phép biến đổi (101 bước, đọc từ trái sang phải)giữ nguyên 5thay 3chèn 93xoá 0
+ bối+ cảnh+ tôi+ + sinh+ viên+ năm+ nhất+ ngành+ công+ nghệ+ thông+ tin+ chuẩn+ bị+ một+ bài+ thuyết+ trình+ 5viếtphútvềđiệntoánđámmây+ cho+ các+ bạn+ cùng+ lớp+ chưa+ biết+ về+ chủ+ đề+ này+ vai+ trò+ hãy+ đóng+ vai+ một+ giảng+ viên+ giải+ thích+ dễ+ hiểu+ hành+ động+ lập+ dàn+ ý+ bài+ thuyết+ trình+ gồm+ phần+ mở+ đầu+ ba+ ý+ chính+ + phần+ kết+ kèm+ một+ + dụ+ thực+ tế+ quen+ thuộc+ cho+ mỗi+ ý+ chính+ tiêu+ chí+ trình+ bày+ dưới+ dạng+ gạch+ đầu+ dòng+ ngôn+ ngữ+ tiếng+ việt+ tránh+ thuật+ ngữ+ khó+ độ+ dài+ khoảnggiúp250tôitừ
Bảng quy hoạch động (9 × 102 = 918 ô). Hàng là bản trước, cột là bản sau.
εbốicảnhtôisinhviênnămnhấtngànhcôngnghệthôngtinchuẩnbịmộtbàithuyếttrình5phútvềđiệntoánđámmâychocácbạncùnglớpchưabiếtvềchủđềnàyvaitròhãyđóngvaimộtgiảngviêngiảithíchdễhiểuhànhđộnglậpdànýbàithuyếttrìnhgồmphầnmởđầubaýchínhphầnkếtkèmmộtdụthựctếquenthuộcchomỗiýchínhtiêuchítrìnhbàydướidạnggạchđầudòngngônngữtiếngviệttránhthuậtngữkhóđộdàikhoảng250từ
ε0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
viết1123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
về222345678910111213141516171819202121222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
điện33334567891011121314151617181920212221222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
toán44444567891011121314151617181920212222212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
đám55555567891011121314151617181920212223222122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
mây66666667891011121314151617181920212223232221222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
giúp77777777891011121314151617181920212223242322222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
tôi88878888891011121314151617181920212223242423232324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
Ô (8, 101) = 96 · so tôi của bản trước với từ của bản sau
  • Thay (đường chéo): ô (7, 100) + 1 = 96
  • Chèn (từ bên trái): ô (8, 100) + 1 = 96
  • Xoá (từ bên trên): ô (7, 101) + 1 = 97
Khi hai ứng viên bằng nhau, sim ưu tiên đường chéo, rồi xoá, rồi chèn. Quy ước phá hoà đổi dãy phép sửa được kể lại, không đổi khoảng cách.
3 · Độ trùng từ vựng kiểu Jaccard
Trên tập từ đơn
số từ có ở cả hai bản, chia cho số từ xuất hiện ở ít nhất một bản
0,069 (6,9%)
giao 6 trên hợp 87, tức 6 / 87
chỉ ở bản trước 2 giúpviết
chỉ ở bản sau 79 2505babiếtbàibàybạnbịbốichochuẩnchíchínhchưachủcáccôngcùngcảnhdàidàndòngdướidạngcòn 55 nữa
Trên tập cặp từ liền nhau
mỗi phần tử là hai từ đứng cạnh nhau, nên trật tự từ có ảnh hưởng
0,040 (4,0%)
giao 4 trên hợp 100, tức 4 / 100
chỉ ở bản trước 3 giúp tôimây giúpviết về
chỉ ở bản sau 93 250 từ5 phútba ýbiết vềbài thuyếtbày dướibạn cùngbị mộtbối cảnhcho cáccho mỗichuẩn bịchí trìnhchính tiêuchính vàchưa biếtchủ đềcác bạncông nghệcùng lớpcảnh tôidài khoảngdàn ýdòng ngôncòn 69 nữa
Hai con số này thường lệch nhau, và chỗ lệch mới là bài học. Cùng một tập từ nhưng xếp lại trật tự thì độ trùng từ đơn không đổi trong khi độ trùng cặp từ tụt: bấm cặp mẫu Đổi trật tự từ để thấy 1 đứng cạnh 9/11. Chiều ngược lại cũng xảy ra thật: cặp mẫu Ca ngược trực giác cho 6/7 ở từ đơn nhưng 8/9 ở cặp từ, vì từ lặp làm tập từ đơn co lại nhiều hơn tập cặp từ. Vì vậy sim không khẳng định con nào luôn nhỏ hơn con nào. Cả hai đều là phép đếm trên tập hợp, nên một từ xuất hiện năm lần cũng chỉ tính một lần.
4 · Văn bản sau chuẩn hoá, tức đúng thứ mọi con số trên đang đếm
Công tắc đang bật. Bật thì sim hạ chữ hoa thành chữ thường và bỏ dấu câu, tắt thì giữ nguyên. Cả hai chế độ đều gộp mọi khoảng trắng liền nhau thành một dấu cách và đều chuẩn hoá Unicode về dạng NFC, nên chữ có dấu gõ kiểu tổ hợp và kiểu dựng sẵn được đếm như nhau. Sim không bao giờ bỏ dấu thanh của tiếng Việt: chuẩn hoá vẫn giữ nguyên chữ tôi thành tôi, không biến nó thành toi, vì bỏ dấu thanh sẽ trộn lẫn những từ khác nghĩa hẳn.
Bản trước · 34 ký tự · 8 từviết về điện toán đám mây giúp tôi
Bản sau · 447 ký tự · 101 từbối cảnh tôi là sinh viên năm nhất ngành công nghệ thông tin chuẩn bị một bài thuyết trình 5 phút về điện toán đám mây cho các bạn cùng lớp chưa biết về chủ đề này vai trò hãy đóng vai một giảng viên giải thích dễ hiểu hành động lập dàn ý bài thuyết trình gồm phần mở đầu ba ý chính và phần kết kèm một ví dụ thực tế quen thuộc cho mỗi ý chính tiêu chí trình bày dưới dạng gạch đầu dòng ngôn ngữ tiếng việt tránh thuật ngữ khó độ dài khoảng 250 từ
Sáu cặp trên là văn bản minh hoạ do người soạn bài viết ra để chốt từng mốc số học, không phải ngữ liệu công bố hay số liệu đo từ mô hình thật.

Khối tính ngay dưới khung so sánh đo khác biệt giữa hai bản bằng số. Nó không chấm bản nào hay hơn, vì đó là nhận định chứ không phải phép tính. Ở trạng thái mở bài, với công tắc chuẩn hoá đang bật, sim đếm được bản trước 34 ký tự và 8 từ, bản sau 447 ký tự và 101 từ; cột chênh phần trăm ghi số từ tăng +1.163%. Khoảng cách chỉnh sửa theo từ là 96 phép, gồm 93 phép chèn, 3 phép thay và 0 phép xoá, nên prompt tốt gần như chỉ thêm chữ chứ không xoá chữ nào của prompt yếu. Độ trùng từ đơn 6/87, còn độ trùng cặp từ 4/100: hai con số lệch nhau vì cặp từ tính cả trật tự. Bạn sửa được cả hai ô văn bản rồi xem từng con số tính lại.

Nhờ đủ bốn thành phần, không gian trả lời của mô hình bị thu hẹp đúng vào thứ ta cần, giảm hẳn việc phải hỏi lại nhiều lần. Khi gõ prompt tiếng Việt cho công cụ thật, cứ viết có dấu bình thường; các mô hình hiểu tốt tiếng Việt có dấu.

Zero-shot và few-shot

Hai khái niệm này giúp bạn chủ động hơn khi cần kết quả theo khuôn dạng riêng.

  • Zero-shot là cách đặt prompt mà không kèm ví dụ mẫu nào, chỉ mô tả yêu cầu rồi để mô hình tự làm. Phần lớn tác vụ học tập hằng ngày dùng zero-shot là đủ, ví dụ nhờ giải thích một khái niệm hay tóm tắt một đoạn văn.
  • Few-shot là cách kèm theo một vài ví dụ về cặp đầu vào và đầu ra mong muốn, để mô hình bắt chước đúng khuôn. Hợp khi cần kết quả theo một khuôn rất cụ thể mà khó mô tả bằng lời.

Ví dụ few-shot phân loại cảm xúc: đưa trước vài câu kèm nhãn mẫu như Quán phục vụ rất nhanh -> tích cực, Món ăn bình thường -> trung tính, Chờ quá lâu, thất vọng -> tiêu cực, rồi mới đưa câu cần phân loại. Mô hình nhìn vào ví dụ và làm theo đúng khuôn đó.

Luôn kiểm chứng

Prompt tốt không bảo đảm nội dung đúng. Mô hình tạo sinh có thể nói trôi chảy nhưng sai sự thật, gọi là ảo giác. Hãy tự kiểm tra mọi số liệu, trích dẫn, tên tài liệu quan trọng bằng nguồn đáng tin trước khi dùng, và không nộp nguyên văn kết quả AI làm bài của mình.

Tự kiểm CRAC và zero-shot, few-shot0/6 đúngchưa trả lời
  1. 1Bốn thành phần của khung CRAC theo đúng thứ tự là gì?
  2. 2Thành phần nào của CRAC quy định độ dài, định dạng và giọng văn của câu trả lời?
  3. 3Vì sao gán vai trò (Role) cho mô hình lại hữu ích?
  4. 4Zero-shot là gì?
  5. 5Tình huống nào nên dùng few-shot thay vì zero-shot?
  6. 6Prompt tốt theo CRAC có bảo đảm câu trả lời luôn đúng sự thật không?