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

Persona, CREATE và Prompt Canvas

Hai buổi trước ta đã biết giao việc rõ ràng và buộc mô hình suy luận từng bước. Những kỹ thuật đó đủ cho yêu cầu lẻ. Nhưng khi bạn muốn một prompt dùng đi dùng lại, cho kết quả ổn định, và sau này đóng gói thành công cụ chia sẻ, thì prompt cần được thiết kế chứ không chỉ viết ra. Buổi này là bước chuyển từ viết câu lệnh sang thiết kế một bản đặc tả công việc.

Hãy hình dung một tình huống quen thuộc. Bạn nhờ AI viết giúp phần mở đầu báo cáo đồ án. Kết quả trôi chảy, đúng ngữ pháp, nhưng đọc xong bạn thấy nó có thể gắn vào báo cáo của bất kỳ ai. Bạn thêm vài chữ, chạy lại, kết quả vẫn na ná, và sau năm lần bạn bỏ cuộc tự viết. Vấn đề không nằm ở mô hình: câu lệnh của bạn không hề nói nó đóng vai ai, viết cho ai đọc, dài bao nhiêu, thế nào thì coi là đạt. Hỏi chung chung thì chỉ nhận về câu trả lời chung chung.

Ba công cụ của buổi này (persona, khung CREATE, Prompt Canvas) cắt đứt vòng lặp sửa mò đó: chúng buộc bạn nói trước mọi ràng buộc, thay vì hy vọng mô hình đoán trúng.

Thử ngay: ráp một prompt bằng Prompt Canvas

Prompt Canvas là khung sáu ô để dựng một prompt hoàn chỉnh: mục tiêu, vai trò, nhiệm vụ, ví dụ mẫu, định dạng đầu ra, tiêu chí đạt. Cả buổi này giải thích từng ô, còn bây giờ cứ ráp thử đã. Điền sáu ô bên dưới; phần "Prompt ráp được" sẽ tự cập nhật khi bạn gõ, bỏ qua những ô để trống. Gợi ý: thử dựng một "trợ lý ôn thi cuối kỳ" tái dùng cho mọi môn, chỉ cần thay phần dán đề cương.

Prompt Canvas6 khối
Prompt ráp được
## Mục tiêu & bối cảnh
Tôi là sinh viên sắp thi cuối kỳ môn [TEN MON]. Tôi có [SO NGAY] ngày ôn và hiểu khoảng [MUC DO] nội dung. Cần kế hoạch ôn tập và bộ câu hỏi tự kiểm.

## Vai trò & chuyên môn
Đóng vai gia sư môn [TEN MON], chuyên ôn thi cho sinh viên, biết ưu tiên phần trọng tâm và phát hiện lỗ hổng kiến thức.

## Nhiệm vụ & ràng buộc
Từ đề cương tôi dán ở dưới, chọn 5 chủ đề trọng tâm nhất; mỗi chủ đề kèm 1 câu tóm tắt, 1 ý chính, 2 câu hỏi tự kiểm (1 dễ, 1 khó). Không bịa chủ đề ngoài đề cương.

## Ví dụ mẫu
Chủ đề: Độ phức tạp thuật toán. Tóm tắt: đo độ tăng chi phí khi dữ liệu lớn dần. Ý chính: O(1) < O(log n) < O(n). Hỏi dễ và hỏi khó kèm theo.

## Định dạng đầu ra
Trả về một bảng markdown: cột Chủ đề, Tóm tắt, Ý chính; theo sau là danh sách câu hỏi tự kiểm đánh số.

## Tiêu chí đánh giá
Tự kiểm xem 5 chủ đề đã phủ các phần quan trọng nhất của đề cương chưa; nếu còn phần quan trọng trong đề cương chưa được phủ thì liệt kê ra để tôi kiểm lại.

Prompt này gom hết những gì sẽ học trong buổi: ô 2 là persona chuyên môn, ô 3 ràng buộc nhiệm vụ và cấm bịa, ô 4 là một ví dụ few-shot để định khuôn, ô 5 ép định dạng bảng markdown, và ô 6 cài bước tự kiểm bằng tiêu chí quan sát được (đã phủ đủ phần quan trọng chưa). Bạn chỉ cần điền ba ô [TEN MON], [SO NGAY], [MUC DO] và dán đề cương là dùng được cho mọi môn. Một prompt được thiết kế tốt giống một biểu mẫu tái dùng, đây cũng chính là tiền đề để buổi sau ta đóng gói nó thành một skill.

Persona: gán vai trò chuyên môn

Mô hình ngôn ngữ học từ vô số văn bản của nhiều kiểu người viết: sinh viên, giáo sư, lập trình viên, nhà báo. Khi bạn không nói rõ ai đang trả lời, mô hình chọn một giọng trung bình, an toàn và thường nông. Khi bạn gán một vai trò cụ thể, bạn thu hẹp vùng văn bản mà mô hình mô phỏng, kéo câu trả lời về phía vốn từ, chuẩn mực và độ sâu của chính vai trò đó.

Mẫu persona chuyên môn viết theo dạng act as [role] with expertise in [domain]. Ba phần cần nêu rõ:

  • Vai trò: ai đang nói. Ví dụ giảng viên thuật toán, kỹ sư kiểm thử.
  • Lĩnh vực: chuyên môn hẹp. Ví dụ con trỏ trong C, kiểm thử đơn vị Java.
  • Đối tượng và phong cách: nói cho ai, giọng ra sao. Ví dụ cho sinh viên năm nhất, ngắn gọn.

Vai trò càng cụ thể thì hiệu quả càng rõ. Câu "hãy đóng vai chuyên gia" gần như vô dụng vì quá rộng. Câu "hãy đóng vai giảng viên cấu trúc dữ liệu, chuyên dạy con trỏ và cấp phát động trong C cho sinh viên năm nhất" mới thực sự định hình câu trả lời. Hãy chọn vai trò khớp với việc bạn cần, không phải vai trò nghe oai nhất.

Prompt yếu và prompt mạnh cho cùng một nhu cầu

Đặt hai prompt cạnh nhau cho cùng một việc là thấy ngay.

Giải thích cho tôi về con trỏ trong C.

Prompt này nhường hết quyết định cho mô hình: độ sâu, trình độ người đọc, có ví dụ hay không. Kết quả thường là bài bách khoa dài, đúng mà không dùng được, vì nó không biết bạn đang mắc ở chỗ nào.

Bạn là giảng viên lập trình C, chuyên dạy con trỏ và cấp phát
động cho sinh viên năm nhất chưa từng học ngôn ngữ nào khác.
Tôi hay lẫn giữa con trỏ và giá trị nó trỏ tới, nên viết nhầm
giữa *p và &x.

Giải thích bằng một hình dung đời thường, rồi cho ba đoạn mã
ngắn: một đoạn đúng, một đoạn viết nhầm *p, một đoạn viết nhầm
&x. Với mỗi đoạn sai, chỉ ra chương trình hỏng ở đâu và vì sao.

Prompt thứ hai dài hơn thật, nhưng vài dòng thêm vào đã khoá được bốn thứ: vai trò, trình độ người đọc, lỗi cụ thể đang mắc, và hình thức câu trả lời. Đó là ý nghĩa của việc thu hẹp không gian trả lời: bạn không làm mô hình thông minh hơn, bạn chỉ chặn bớt những hướng mà bạn đã biết là vô ích.

Persona không tạo ra kiến thức

Vai trò chỉ định hình giọng và độ sâu, không tạo ra kiến thức mô hình không có. Gán vai giáo sư không biến thông tin sai thành đúng. Persona giúp câu trả lời hợp ngữ cảnh hơn, nhưng bạn vẫn phải kiểm chứng nội dung.

Khi nào persona đổi kết quả, khi nào chỉ là trang trí

Không phải cứ gắn một vai trò là câu trả lời khác đi. Persona chỉ thật sự đổi kết quả khi vai trò kéo theo một vốn từ, một chuẩn mực hay một độ sâu mà mặc định mô hình không tự chọn. Bảo mô hình "đóng vai kỹ sư kiểm thử rồi rà đoạn mã này" đổi kết quả thật, vì một kỹ sư kiểm thử soi những thứ người viết code hay bỏ qua: ca biên, rò rỉ tài nguyên, đầu vào rỗng. Ngược lại, dán thêm "bạn là trợ lý thông minh và tận tâm" vào đầu một câu hỏi tra cứu thì gần như không đổi gì, vì cụm đó không thu hẹp vùng văn bản nào cả. Nó chỉ là trang trí, làm prompt dài thêm mà không định hình câu trả lời.

Có ba dấu hiệu nhận ra một persona đang là trang trí. Một, nó không gắn với lĩnh vực hẹp nào ("chuyên gia hàng đầu", "trợ lý vạn năng"). Hai, bỏ nó đi mà câu trả lời gần như y hệt. Ba, vai trò không kéo theo hành vi nào khác với mặc định. Cách thử rẻ nhất vẫn là bỏ persona ra rồi chạy lại cùng câu hỏi: nếu kết quả không đổi, persona đó không nuôi việc, và bạn nên thay bằng một vai trò hẹp hơn đúng chỗ bạn cần chiều sâu, hoặc bỏ hẳn cho prompt gọn lại.

Persona có thể thổi phồng vẻ tự tin

Gán một vai trò uy tín làm giọng văn chắc nịch hơn, nhưng chắc giọng không phải chắc đúng. Một mô hình "đóng vai giáo sư" sẽ nói dứt khoát hơn cả khi nó đang sai, và vẻ tự tin đó dễ khiến bạn bỏ qua bước kiểm chứng. Hãy tách hai thứ: dùng persona để lấy đúng độ sâu và vốn từ, nhưng vẫn soi nội dung như thể nó do một người lạ nói ra.

Công thức CREATE

Persona là một viên gạch. CREATE là cách xếp đủ các viên gạch của một prompt nghiêm túc. Tên gọi là chữ cái đầu của sáu việc cần làm.

  • C, Contextualize: nêu bối cảnh và vai trò, đặt mô hình vào đúng tình huống.
  • R, Reason: yêu cầu suy luận, nói rõ cách nghĩ trước khi kết luận.
  • E, Elaborate: bổ sung chi tiết, ràng buộc, ví dụ mẫu để thu hẹp đầu ra.
  • A, Adapt: điều chỉnh theo đối tượng và mục đích (cho ai, dùng làm gì).
  • T, Test: yêu cầu mô hình tự kiểm tra, đối chiếu kết quả với điều kiện đặt ra.
  • E, Evaluate: yêu cầu chỉ ra điểm yếu, giả định đã dùng và chỗ mình không chắc, để bạn biết cần kiểm lại đâu.

Mỗi chữ chặn một kiểu hỏng riêng. C chặn hỏng lạc đề, khi mô hình không biết bạn đang đứng ở tình huống nào. R chặn hỏng kết luận vội. E đầu chặn hỏng lan man, bằng cách siết phạm vi và độ dài. A chặn hỏng đúng mà không dùng được, chẳng hạn câu trả lời quá hàn lâm cho người mới học. T chặn hỏng sai mà không ai biết. E cuối chặn kiểu hỏng nguy hiểm nhất: nói chắc nịch về điều nó không chắc. Hai chữ cuối hay bị bỏ nhất mà lại đáng giá nhất, vì một dòng "phần này tôi không chắc" tiết kiệm cho bạn hàng giờ kiểm chứng.

Để thấy CREATE hoạt động, hãy xét một nhu cầu quen thuộc: nhờ AI rà lại một đoạn mã Java trước khi nộp đồ án. Sáu nhãn trong ngoặc vuông dưới đây chỉ để bạn thấy mỗi câu phục vụ thành phần nào; khi dùng thật bạn bỏ nhãn đi.

[C] Bạn là kỹ sư kiểm thử phần mềm, rành Java và các lỗi thường
gặp của sinh viên (rò rỉ tài nguyên, NullPointerException, đặt
tên kém). Tôi là sinh viên năm hai, đang nộp đồ án nhập môn.

[R] Trước khi liệt kê lỗi, hãy đọc toàn bộ đoạn mã và nói ngắn
gọn nó định làm gì, để chắc bạn hiểu đúng ý định.

[E] Sau đó liệt kê tối đa năm vấn đề, mỗi vấn đề gồm: dòng số,
mức nghiêm trọng (cao/vừa/thấp), lý do, và cách sửa gợi ý.

[A] Tôi mới học, hãy giải thích bằng từ ngữ đơn giản, tránh
thuật ngữ nâng cao không cần thiết.

[T] Cuối cùng, tự kiểm: trong các lỗi bạn nêu, lỗi nào có thể
là báo nhầm nếu thiếu ngữ cảnh phần còn lại của chương trình?

[E] Cuối cùng, nêu giả định lớn nhất mà bản rà soát dựa vào,
và một loại lỗi có thể còn sót, thay vì tự chấm là đã bắt hết.

Mã cần rà:
[DÁN ĐOẠN MÃ JAVA VÀO ĐÂY]

Điều quan trọng là prompt này không chỉ ra lệnh tìm lỗi, nó dựng cả một quy trình có suy luận đầu vào, ràng buộc đầu ra, tự kiểm và tự đánh giá.

Prompt Canvas: khung dựng sáu ô

CREATE cho bạn sáu việc cần làm. Prompt Canvas sắp chúng thành một khung sáu ô để bạn điền lần lượt, giống tờ khai có sẵn các mục. Khung này đặc biệt hữu ích khi xây một prompt sẽ dùng nhiều lần.

ÔTênHỏi gì
1Mục tiêu và bối cảnhViệc cần đạt là gì? Dùng kết quả làm gì?
2Vai trò và chuyên mônMô hình đóng vai ai? Chuyên sâu lĩnh vực hẹp nào?
3Nhiệm vụ và ràng buộcLàm gì cụ thể? Giới hạn độ dài, phạm vi, điều cấm?
4Ví dụ mẫuMột, hai cặp vào và ra để định khuôn (few-shot).
5Định dạng đầu raBảng, JSON, markdown, đề mục cố định?
6Tiêu chí đánh giáThế nào là đạt (kiểm được từ bên ngoài)? Tự kiểm ra sao?

Sáu ô của Canvas ánh xạ gần như một một với CREATE và bổ sung hai ô mà CREATE để ngầm: ô ví dụ mẫu (few-shot từ buổi 2) và ô định dạng đầu ra. Bạn không cần điền dài; mỗi ô vài câu đắt giá là đủ. Lợi ích lớn nhất của Canvas là nó nhắc bạn không bỏ sót: rất nhiều prompt yếu chỉ vì quên ô số 5 (định dạng) hoặc ô số 6 (tiêu chí đạt).

Canvas là danh sách kiểm

CREATE và Canvas là cùng một danh sách kiểm, không phải hai thứ khác nhau. Khi dựng prompt, hãy lướt sáu ô của Canvas và tự hỏi: ô nào đang để trống mà lẽ ra nên điền?

Không phải mọi prompt đều cần đủ sáu ô. Với một yêu cầu nhanh, đơn giản, bạn vẫn có thể chỉ viết một câu. Canvas dành cho prompt sẽ dùng lại nhiều lần hoặc prompt cho việc quan trọng, nơi bỏ sót một ô khiến kết quả lệch hẳn.

Quy tắc thực dụng: chi phí dựng khung phải nhỏ hơn chi phí sai. Dựng đủ sáu ô khi prompt sẽ chạy lại nhiều lần (công dựng khung chia đều cho mọi lần sau), khi sai thì tốn kém (một câu mở đầu tin nhắn lệch thì sửa mất ba giây, một bảng số liệu lệch thì bạn nộp cả báo cáo sai), hoặc khi đầu ra sẽ được máy đọc tiếp (định dạng lúc đó không còn là sở thích mà là hợp đồng). Ngược lại, một câu ngắn là đủ khi bạn đang dò tìm, khi hội thoại đã sẵn ngữ cảnh, hoặc khi bạn sẽ đọc kết quả bằng mắt và tự lọc. Dựng sáu ô cho một câu hỏi tra cứu là lãng phí, và tệ hơn, nó tập cho bạn thói quen viết dài mà rỗng.

Kiểm soát định dạng đầu ra

Một prompt chuyên nghiệp gần như luôn nói rõ hình thức của câu trả lời, không chỉ nội dung. Lý do không phải thẩm mỹ. Khi đầu ra có cấu trúc cố định, bạn hoặc một chương trình có thể đọc và xử lý tự động mà không phải bóc tách văn bản tự do.

  • Bảng: tốt khi cần so sánh nhiều mục theo cùng các tiêu chí (ưu nhược điểm, các phương án).
  • Markdown có đề mục cố định: tốt khi câu trả lời dài, cần đọc bằng mắt và có cấu trúc rõ.
  • JSON: tốt khi kết quả sẽ được một chương trình khác đọc tiếp, ví dụ nạp vào ứng dụng hoặc lưu vào cơ sở dữ liệu.

Ví dụ buộc đầu ra JSON để máy đọc được. Hãy nói rõ chỉ trả về JSON và đưa kèm lược đồ các trường, nếu không mô hình hay gói JSON trong đoạn giải thích, làm chương trình đọc tự động bị lỗi.

Phân loại mức độ khó của câu hỏi ôn thi dưới đây. Chỉ trả về
đúng một đối tượng JSON, không thêm lời dẫn, theo schema:

{
"do_kho": "de" | "vua" | "kho",
"chu_de": string,
"ly_do": string
}

Câu hỏi: [DÁN CÂU HỎI VÀO ĐÂY]

Vì câu trả lời luôn theo cùng một khuôn, bạn có thể chạy prompt này trên hàng trăm câu hỏi rồi gom kết quả thành một bảng thống kê. Đó là cây cầu đầu tiên nối prompt với tự động hoá, ý tưởng ta sẽ khai thác sâu ở buổi xây skill và agent.

Ba lỗi thường gặp khi dùng khung
  • Điền cho đủ ô. Một câu vô nghĩa nhét vào ô ví dụ mẫu chỉ để ô khỏi trống còn tệ hơn bỏ trống, vì nó thêm nhiễu. Ô nào không cần thì bỏ hẳn.
  • Persona kêu mà rỗng. Câu "bạn là chuyên gia hàng đầu thế giới" không thu hẹp được gì. Vai trò phải hẹp tới mức bạn hình dung được một người thật đang làm nghề đó.
  • Ràng buộc mâu thuẫn. Vừa đòi giải thích thật kỹ vừa đòi tối đa ba câu thì mô hình buộc phải bỏ một trong hai, và bạn không kiểm soát được nó bỏ cái nào.

Bài tập

Bài 1. Vá một prompt yếu

Đề. Prompt sau đang cho kết quả lan man và không dùng được. Hãy chỉ ra nó thiếu những ô nào của Prompt Canvas, rồi viết lại.

Tóm tắt giúp tôi bài báo này.

Lời giải. Prompt thiếu ô 1 (tóm tắt để làm gì), ô 2 (vai trò), ô 3 (dài bao nhiêu, có được suy diễn ngoài bài không), ô 5 (định dạng) và ô 6 (thế nào là đạt). Một bản viết lại:

Bạn là nghiên cứu sinh quen đọc bài báo học máy. Tôi cần quyết
định có nên đọc kỹ bài này không, nên hãy làm nổi đóng góp và
giới hạn, bỏ qua chi tiết công thức.

Xuất đúng bốn mục: bài toán (2 câu), cách làm (3 câu), kết quả
chính kèm con số nếu bài có nêu, giới hạn mà chính tác giả thừa
nhận. Kết bằng một dòng: nên đọc kỹ hay không.

Chỉ dùng thông tin có trong bài. Mục nào không tìm thấy thì ghi
"không nêu" thay vì suy đoán.

Bài báo: [DÁN NỘI DUNG VÀO ĐÂY]

Câu đắt nhất là dòng bắt ghi "không nêu" thay vì suy đoán: nó chặn đúng kiểu hỏng nguy hiểm nhất khi tóm tắt, tức là mô hình lấp chỗ trống bằng nội dung nghe hợp lý mà bài gốc không hề có.

Bài 2. Dựng khung hay không dựng khung

Đề. Việc nào chỉ cần một câu, việc nào cần đủ sáu ô Canvas? (a) Hỏi nhanh khác nhau giữa char*char[]. (b) Chấm nháp 40 bài tập theo cùng một thang điểm. (c) Sinh câu hỏi trắc nghiệm dạng JSON để nạp vào ứng dụng ôn tập.

Lời giải. Việc (a) chỉ cần một câu: đây là tra cứu, hiểu sai thì hỏi lại mất vài giây. Việc (b) cần đủ khung, vì prompt chạy 40 lần và chỉ khi mọi bài đi qua đúng một thang điểm thì kết quả mới so sánh được với nhau; ô 6 chính là thang điểm đó. Việc (c) cần đủ khung, và ô 5 là ô sống còn: đầu ra do chương trình đọc, nên phải nêu rõ lược đồ JSON và cấm mô hình bọc khối JSON trong lời dẫn.

Bài 3. Persona nuôi việc hay trang trí

Đề. Với mỗi persona sau, cho biết nó đổi kết quả hay chỉ là trang trí, và sửa lại nếu cần. (a) "Bạn là trợ lý AI thông minh nhất, hãy giải thích vòng lặp for trong C." (b) "Bạn là giảng viên hệ điều hành, chuyên dạy quản lý tiến trình cho sinh viên năm ba, hãy so sánh tiến trình và luồng."

Lời giải. (a) Trang trí: "thông minh nhất" không gắn lĩnh vực hẹp nào, bỏ đi câu trả lời gần như không đổi. Sửa thành vai trò hẹp khớp việc, ví dụ "giảng viên nhập môn C dạy người mới, giải thích bằng ví dụ ngắn". (b) Nuôi việc: vai trò hẹp (hệ điều hành, quản lý tiến trình) và đối tượng rõ (năm ba) kéo câu trả lời về đúng độ sâu và vốn từ, không cần sửa.

Câu hỏi tự kiểm

Kiểm tra nhanh: persona, CREATE và Canvas0/4 đúngchưa trả lời
  1. 1Khi nào một persona chỉ là "trang trí" chứ không nuôi việc?
  2. 2Trong CREATE, chữ E cuối (Evaluate) yêu cầu mô hình làm gì?
  3. 3Khi ép đầu ra JSON để một chương trình khác đọc, prompt nên nhấn mạnh điều gì?
  4. 4Nguyên tắc thực dụng khi quyết định có dựng đủ sáu ô Prompt Canvas hay không là gì?

Tóm tắt

Persona thu hẹp vùng văn bản mà mô hình mô phỏng: chọn vai trò hẹp và khớp việc, đừng chọn vai trò nghe oai. CREATE liệt kê sáu việc của một prompt nghiêm túc, mỗi việc chặn một kiểu hỏng riêng. Prompt Canvas biến sáu việc đó thành sáu ô để rà soát. Nhưng khung không phải luật: dùng nó khi prompt sẽ tái dùng hoặc khi sai thì tốn kém, còn lại một câu ngắn vẫn là lựa chọn đúng.

Ghi nhớ

Persona kéo câu trả lời về đúng vốn từ và độ sâu. CREATE là sáu việc của một prompt nghiêm túc: Contextualize, Reason, Elaborate, Adapt, Test, Evaluate. Prompt Canvas sắp sáu việc đó thành khung sáu ô để bạn không bỏ sót, và luôn nói rõ định dạng đầu ra để mở đường tự động hoá.