Role prompting nghĩa là nói cho mô hình biết nó cần đóng vai ai trước khi bạn nói nó cần làm gì: "Bạn là một gia sư toán kiên nhẫn", "Hãy đóng vai quản lý tuyển dụng cho vị trí lập trình viên junior". Vai thay đổi việc câu trả lời viết cho ai, dùng từ ngữ nào, đi sâu đến đâu và chú ý vào điều gì. Nó không cho mô hình kiến thức mà nó chưa có: vai là một cách để định hướng câu trả lời, không phải cách để thêm thông tin.
Vai thay đổi được gì
Vai là một cách gọn gàng để thiết lập nhiều thứ cùng lúc:
- Đối tượng và cách dùng từ. Một gia sư cho người mới bắt đầu sẽ định nghĩa thuật ngữ và dùng phép so sánh; một kỹ sư senior viết cho đồng nghiệp thì bỏ qua cả hai.
- Tiêu chuẩn. Một biên tập viên khó tính sẽ đánh dấu một câu mà người đọc dễ tính cho qua. Vai quyết định điều gì được tính là vấn đề.
- Trọng tâm. Người review bảo mật và người review hiệu năng đọc cùng một hàm nhưng nhận ra những điều khác nhau.
- Hành vi. Người phỏng vấn đặt câu hỏi rồi chờ; một gia sư có thể được yêu cầu đưa gợi ý thay vì đáp án.
Chuyển qua ba tab bên dưới. Nhiệm vụ ở mỗi tab giống hệt nhau; chỉ có vai thay đổi.
API (Application Programming Interface, giao diện lập trình ứng dụng) là một bộ quy tắc cho phép phần mềm này giao tiếp với phần mềm khác. Nó xác định bạn có thể gửi những yêu cầu nào, gửi ra sao và sẽ nhận lại gì. Ví dụ, một ứng dụng thời tiết dùng API của dịch vụ thời tiết để lấy dự báo. API giúp lập trình viên dùng tính năng và dữ liệu của hệ thống khác mà không cần biết bên trong chúng hoạt động thế nào.
"Bạn là một chuyên gia" gần như không làm câu trả lời thay đổi: nó giữ nguyên khuôn chung chung và thêm thuật ngữ chuyên môn, vì "chuyên gia" không nói gì về người đọc. Vai cụ thể đã thay đổi cách dùng từ, ví dụ và điểm tham chiếu, vì nó nêu rõ đối tượng và một điều đối tượng đó đã biết.
Vai không thay đổi được gì
Vai không thể thêm kiến thức. "Bạn là luật sư thuế hàng đầu thế giới" không cho mô hình biết quy định thuế năm nay nếu nó chưa từng học, và một vai đầy tự tin có thể khiến câu trả lời sai nghe càng có vẻ uy tín. Đừng trông chờ nhãn chuyên gia sẽ cải thiện độ chính xác. Nếu tính đúng đắn quan trọng, hãy đưa cho mô hình các thông tin hoặc tài liệu nó cần và yêu cầu nó nói rõ khi không chắc chắn; AI hallucination giới thiệu các prompt giúp ích cho việc này.
Điều tương tự cũng đúng với người thật. "Trả lời như một lập trình viên nổi tiếng" chỉ cho bạn một bản bắt chước phong cách công khai của người đó. Mô hình không biết quan điểm riêng của họ, nên mọi điều nó nói bằng giọng họ về một câu hỏi mới đều là bịa ra.
Viết vai thật cụ thể
Một vai hữu ích thường nêu bốn điều: công việc, đối tượng, mục tiêu và tiêu chuẩn. So sánh:
- "Bạn là người viết nội dung" trở thành "Bạn là biên tập viên của một blog công nghệ, cắt bỏ mọi câu không giúp người mới bắt đầu làm theo các bước."
- "Bạn là lập trình viên" trở thành "Bạn là lập trình viên Python senior đang review pull request của một đồng nghiệp junior. Chỉ ra bug trước, sau đó đến tính dễ đọc, và giải thích từng điểm để họ học được." Xem prompt để review code để có các prompt review đầy đủ.
- "Hãy đóng vai giáo viên" trở thành "Hãy đóng vai giáo viên hóa học đang giúp một học sinh 15 tuổi ôn thi. Đặt câu hỏi cho mình thay vì đưa đáp án, và cho gợi ý khi mình trả lời sai."
Vai là một phần của prompt, không phải toàn bộ prompt. Nó phối hợp với một nhiệm vụ rõ ràng, phần ngữ cảnh mô hình không thể đoán và hình thức câu trả lời bạn muốn; hướng dẫn viết prompt đề cập các phần còn lại. Nếu vai và nhiệm vụ kéo về hai hướng khác nhau, chẳng hạn "một người review khó tính" được yêu cầu "trấn an tác giả", câu trả lời sẽ cố làm cả hai và thường không làm tốt việc nào.
Prompt "act as" để luyện tập
Dạng "act as" trở nên phổ biến nhờ các bộ sưu tập prompt được chia sẻ, trong đó mô hình đóng vai người phỏng vấn xin việc, bạn luyện ngoại ngữ hay thậm chí một terminal Linux. Nhập vai rất hữu ích cho bất cứ điều gì bạn muốn tập dượt: phỏng vấn, một cuộc nói chuyện khó, một bài thuyết trình, một ngôn ngữ mới.
Khác biệt giữa một buổi nhập vai hiệu quả và một buổi đổ vỡ nằm ở các quy tắc. Hãy nói cho vai biết cần làm gì ở mỗi lượt, khi nào chờ bạn và khi nào dừng. Thiếu các quy tắc đó, mô hình có thể chạy hết cả buổi trong một câu trả lời: năm câu hỏi cùng lúc, hoặc một câu hỏi kèm luôn câu trả lời mẫu.
Tuyệt, mình bắt đầu nhé. Câu đầu tiên là một câu hỏi về kiến thức nền tảng.
Câu hỏi 1: Trong JavaScript, let, const và var khác nhau như thế nào?
Bạn cứ từ từ và trả lời như trong một buổi phỏng vấn thật.
Đổi vị trí và chủ đề để tập dượt cho buổi phỏng vấn của chính bạn. Dòng "chờ mình trả lời" là thứ giữ mô hình chỉ hỏi một câu mỗi lượt, còn "sau năm câu hỏi, dừng lại" cho buổi tập một điểm kết thúc và một phần tổng kết.
Đặt vai ở đâu
Vai bạn muốn có trong mọi câu trả lời nên nằm trong system prompt: trường system trong API, hoặc chỉ dẫn tùy chỉnh và chỉ dẫn dự án trong các ứng dụng chat. Ở đó, nó áp dụng cho cả cuộc trò chuyện mà không cần nhắc lại. Với một yêu cầu dùng một lần, hãy đặt vai ở câu đầu tiên của tin nhắn, trước nhiệm vụ.
import anthropic
client = anthropic.Anthropic()
MODEL = "your-model-id" # e.g. from your provider's model list
message = client.messages.create(
model=MODEL,
max_tokens=500,
system="You are a patient programming tutor for adults in their first month of coding. Give hints before full solutions.",
messages=[{"role": "user", "content": "Why does my loop print the last item twice?"}],
)
print(message.content[0].text)
Vai cũng hoạt động giữa cuộc trò chuyện. Sau khi mô hình viết xong bản nháp, yêu cầu nó "giờ hãy đóng vai một người review hoài nghi đối với bản nháp ở trên và liệt kê ba điểm yếu nhất" thường làm lộ ra những vấn đề mà lần đầu đã bỏ qua, vì vai mới thay đổi thứ mô hình đang tìm kiếm.
Câu hỏi thường gặp
Role prompting là gì?
Role prompting là nói cho mô hình biết nó cần đóng vai ai trước khi nói nó cần làm gì, ví dụ "Bạn là một gia sư toán kiên nhẫn dạy học sinh 12 tuổi" hoặc "Hãy đóng vai người phỏng vấn cho vị trí lập trình viên junior." Vai định hình đối tượng người đọc, cách dùng từ, độ sâu và trọng tâm của câu trả lời, và trong một cuộc trò chuyện nó có thể thay đổi cách mô hình hành xử, chẳng hạn đặt câu hỏi thay vì trả lời.
Bảo AI rằng nó là chuyên gia có làm nó chính xác hơn không?
Đừng trông chờ vào điều đó. Một nhãn như "Bạn là chuyên gia hàng đầu thế giới" không cho mô hình kiến thức mà nó không có, và có thể khiến một câu trả lời sai nghe tự tin hơn. Để cải thiện độ chính xác, hãy đưa cho mô hình các thông tin hoặc nguồn nó cần, yêu cầu nó nói rõ khi không chắc chắn, và kiểm tra kết quả.
Nên đặt vai ở đâu?
Với vai cần giữ suốt cuộc trò chuyện, hãy đặt nó trong system prompt: trường system trong API, hoặc chỉ dẫn tùy chỉnh và chỉ dẫn dự án trong các ứng dụng chat. Với một yêu cầu dùng một lần, hãy đặt vai ở câu đầu tiên của tin nhắn, trước nhiệm vụ.
Prompt "act as" là gì?
Đó là các prompt bắt đầu bằng "Act as" (hãy đóng vai) và giao cho mô hình một vai: người phỏng vấn, bạn luyện ngoại ngữ, một terminal Linux, hướng dẫn viên du lịch. Các bộ sưu tập prompt được chia sẻ rộng rãi đã làm mẫu này trở nên phổ biến. Chúng hiệu quả nhất khi nói rõ vai đó cần làm gì ở mỗi lượt và khi nào thì dừng.
Thế nào là một role prompt tốt?
Cụ thể. Nêu tên công việc, đối tượng, mục tiêu và tiêu chuẩn: "một lập trình viên Python senior đang review pull request của đồng nghiệp junior, ưu tiên bug trước, rồi đến tính dễ đọc" cho mô hình nhiều thông tin hơn hẳn so với "một chuyên gia." Sau đó viết phần còn lại của prompt như bình thường: nhiệm vụ, ngữ cảnh và định dạng.