Prompt là một bản giao việc. Mô hình chỉ đọc những gì bạn viết, nên mọi sự thật nó cần và mọi mong muốn của bạn đều phải có trên trang. Khi câu trả lời trả về chung chung, nguyên nhân gần như luôn là điều gì đó prompt đã bỏ sót, chứ không phải điều gì đó prompt diễn đạt kém.
Phần lớn các prompt hữu ích được xây dựng từ cùng sáu thành phần. Khối bên dưới có đủ cả sáu. Hãy tắt từng phần để xem prompt khi thiếu chúng, điền ngôn ngữ của bạn, rồi mở kết quả trong ChatGPT hoặc Claude và so sánh.
age = 30
print("Age: " + age)Lỗi:TypeError: can only concatenate str (not "int") to strÝ nghĩa: + có thể nối hai chuỗi, hoặc cộng hai số, nhưng không thể nối một chuỗi với một số. Python không đoán bạn muốn cái nào, nên nó dừng lại.
Vì sao code của bạn gây ra lỗi: "Age: " là một chuỗi, còn age chứa số 30. Dòng code yêu cầu Python ghép chúng lại bằng +.
Code đã sửa: chuyển số thành văn bản trước bằng str():
age = 30
print("Age: " + str(age))
Code này in ra Age: 30.
Sáu thành phần
Vai trò cho mô hình biết nên dùng giọng nói và góc nhìn của ai. "Một gia sư kiên nhẫn cho người mới bắt đầu" và "một kỹ sư senior đang review code production" sẽ cho những câu trả lời rất khác nhau cho cùng một câu hỏi. Vai trò hữu ích nhất khi nó ngầm chỉ ra đối tượng người đọc và một tiêu chuẩn; xem role prompting để biết khi nào nó có ích và khi nào không.
Nhiệm vụ là một câu nói rõ cần làm gì. Hãy mở đầu bằng một động từ: giải thích, viết lại, so sánh, liệt kê, sửa, tóm tắt. Nếu bạn không viết được nhiệm vụ trong một câu, có lẽ prompt đang chứa hai nhiệm vụ, và một trong số đó thường nhận được câu trả lời sơ sài hơn.
Bối cảnh là mọi thứ mô hình không thể đoán: bạn là ai, bạn đã biết gì, kết quả dùng để làm gì, và bạn đã thử những gì. Trong ví dụ, câu "Tôi chưa học lớp hay ngoại lệ" là dòng ngăn mô hình trả lời bằng try và except.
Đầu vào là nội dung cần xử lý: code, email, bảng, thông báo lỗi. Hãy dán đầy đủ. Một bản tóm tắt code của bạn chỉ là mô tả những gì bạn nghĩ code làm, và bug thường nằm ở khoảng cách giữa hai thứ đó.
Định dạng nói câu trả lời nên trông thế nào: một danh sách, một bảng, ba phần có nhãn, JSON, một dòng duy nhất. Không có nó, mô hình sẽ tự chọn hình thức cho bạn, và mô hình chat thường chọn hình thức dài. Bài đầu ra có cấu trúc đi sâu hơn khi một chương trình cần đọc câu trả lời.
Ràng buộc là các giới hạn: độ dài, từ vựng, những điều cần tránh, những thứ phải giữ nguyên. Một con số ("dưới 120 từ") hiệu quả hơn một tính từ ("ngắn"), vì "ngắn" có nghĩa khác nhau với những người đọc khác nhau, và mô hình là một trong số đó.
Mơ hồ và cụ thể
Đây là cùng một yêu cầu được viết theo hai cách. Chuyển qua lại giữa các tab và so sánh câu trả lời.
Đây là một hàm sắp xếp đơn giản trong Python:
def sort_list(items):
return sorted(items)
Bạn có thể gọi nó như sort_list([3, 1, 2]), hàm sẽ trả về [1, 2, 3].
Prompt mơ hồ nhận được câu trả lời đúng cho một câu hỏi không ai hỏi. Nó phải đoán ngôn ngữ, dữ liệu, thứ tự sắp xếp và việc sửa đổi đầu vào có chấp nhận được không, và lần nào nó cũng đoán theo trường hợp phổ biến nhất. Prompt cụ thể đã trả lời trước cả bốn điều đó, nên không còn gì để đoán.
Những thói quen giúp prompt tốt hơn
- Nêu nhiệm vụ sớm, và nhắc lại sau phần nội dung dài. Trong một prompt ngắn, hãy mở đầu bằng nhiệm vụ để phần bối cảnh theo sau được đọc với mục đích rõ ràng. Khi bạn dán một tài liệu dài, hãy đặt tài liệu lên trước và câu hỏi ở cuối, nhắc lại các ràng buộc chính ở đó, để chỉ dẫn nằm ngay cạnh chỗ mô hình bắt đầu viết.
- Nói cần làm gì, không chỉ điều cần tránh. "Viết bằng ngôn ngữ đơn giản cho một bạn 12 tuổi" cho mô hình một mục tiêu. "Đừng quá kỹ thuật" chỉ loại bỏ một hướng và để ngỏ mọi hướng còn lại.
- Tách chỉ dẫn khỏi nội dung. Khi bạn dán một email hay một tệp, hãy đánh dấu nơi nó bắt đầu và kết thúc để mô hình không nhầm một câu bên trong đó là chỉ dẫn. Bài dấu phân cách và thẻ XML trình bày các lựa chọn.
- Cho xem một ví dụ đầu ra khi định dạng khác thường. Một ví dụ cho thấy hình thức nhanh hơn một đoạn văn mô tả nó. Đây là few-shot prompting.
- Cải tiến prompt, đừng cải tiến trong cuộc chat. Nếu câu trả lời đầu tiên sai, hãy tìm bối cảnh hoặc ràng buộc còn thiếu, sửa prompt rồi chạy lại. Một chuỗi dài các lần sửa trong chat vẫn hiệu quả, nhưng để lại cho bạn một kết quả mà không có prompt nào dùng lại được.
Danh sách kiểm tra trước khi gửi
- Tôi có nêu được nhiệm vụ trong một câu bắt đầu bằng động từ không?
- Một người lạ có biết câu trả lời dành cho ai và tôi đã biết những gì không?
- Tôi đã dán nội dung thật, chứ không phải mô tả về nó chưa?
- Tôi đã nói câu trả lời nên dài bao nhiêu và có hình thức thế nào chưa?
- Có điều gì câu trả lời không được thay đổi hoặc không được dùng không?
Năm câu trả lời "có" không đảm bảo một câu trả lời hoàn hảo, nhưng một câu "không" là lý do khả dĩ nhất dẫn đến một câu trả lời tệ.
Câu hỏi thường gặp
Thế nào là một prompt AI tốt?
Một prompt tốt nêu nhiệm vụ trong một câu rõ ràng, cung cấp bối cảnh mà mô hình không thể đoán (bạn là ai, bạn đã biết gì, kết quả dùng để làm gì), có kèm nội dung cần xử lý, và nói rõ câu trả lời nên trông thế nào: độ dài, cấu trúc và giọng điệu. Phần lớn prompt yếu thất bại ở bối cảnh và định dạng, không phải ở câu chữ.
Prompt nên dài bao nhiêu?
Dài vừa đủ cho công việc và không hơn. Một câu hỏi một dòng là ổn cho một câu trả lời một dòng. Một nhiệm vụ có đối tượng người đọc, đầu vào và hình thức đầu ra cụ thể thường cần từ bốn đến tám câu. Viết dài để nhắc lại cùng một chỉ dẫn ba lần thì không giúp gì; viết dài để bổ sung bối cảnh còn thiếu thì có.
Có nên lịch sự với ChatGPT hay Claude không?
Những từ lịch sự không giúp ích cũng không gây hại nhiều. Điều làm thay đổi câu trả lời là thông tin: mục tiêu, đối tượng người đọc, các ràng buộc và một ví dụ về đầu ra bạn muốn. Hãy viết như khi bạn giao việc cho một đồng nghiệp giỏi chưa từng thấy dự án của bạn.
Có mẫu nào để viết prompt không?
Một thứ tự đáng tin cậy là vai trò, nhiệm vụ, bối cảnh, đầu vào, định dạng, ràng buộc. Không phải prompt nào cũng cần đủ sáu phần. Hãy bắt đầu bằng nhiệm vụ, thêm bối cảnh mà mô hình không thể đoán, rồi thêm định dạng và ràng buộc khi câu trả lời đầu tiên quá dài, quá chung chung hoặc sai hình thức. Xem prompt template để có các phiên bản dùng lại được với chỗ trống để điền.
Vì sao cùng một prompt lại cho câu trả lời khác nhau mỗi lần?
Mô hình chat chọn từng từ tiếp theo bằng cách lấy mẫu từ một phân phối xác suất, nên hai lần chạy có thể khác nhau. Một prompt cụ thể hơn thu hẹp không gian của các câu trả lời tốt, khiến các lần chạy giống nhau hơn. Tham số temperature điều chỉnh mức độ ngẫu nhiên khi lấy mẫu.