Menu

Prompt mẫu: ví dụ và cách tự tạo template

Prompt mẫu (prompt template) là một prompt bạn đã thử nghiệm, có chỗ trống cho những phần thay đổi mỗi lần dùng. Sao chép các mẫu dựng sẵn có ô để điền, rồi biến prompt tốt nhất của bạn thành mẫu trong năm bước.

Mọi prompt bên dưới đều có thể chỉnh sửa: thay đổi nó, rồi mở trong ChatGPT, Claude hoặc ứng dụng AI khác.

Prompt mẫu là một prompt có chỗ trống. Phần văn bản cố định chứa mọi điều bạn đã học được về cách nhận câu trả lời tốt cho một loại tác vụ: vai trò, định dạng, giới hạn. Các chỗ trống chứa những gì thay đổi mỗi lần: chủ đề, ngôn ngữ lập trình, văn bản cần xử lý. Điền ba chỗ trống nhanh hơn viết cả một prompt, và cho bạn những câu trả lời có chất lượng và hình thức nhất quán.

Mẫu dưới đây giải thích bất kỳ khái niệm lập trình nào theo đúng trình độ của bạn. Gõ giá trị của bạn vào các ô, tắt một phần để xem nó đóng góp gì, rồi sao chép hoặc mở trong một ứng dụng chat.

Giải thích một khái niệm đúng trình độ của tôi
Fill in
Parts
Bạn là một gia sư kiên nhẫn dành cho những người tự học lập trình.
Giải thích closure trong JavaScript.
Tôi đã biết biến, hàm và mảng. Tôi học tốt nhất từ một ví dụ nhỏ mà tôi có thể tự chạy.
Trả lời thành ba phần có nhãn in đậm: ý chính trong một câu, một ví dụ code ngắn có chú thích ở dòng quan trọng, và một lỗi thường gặp.
Dưới 150 chữ. Nếu cần dùng một thuật ngữ mà tôi chưa liệt kê là đã biết, hãy giải thích nó trong vài chữ.
Try it
Example replyReplies vary between models and runs.

Ý chính: Closure là một hàm ghi nhớ các biến ở nơi nó được tạo ra, kể cả sau khi hàm bên ngoài đã chạy xong.

Ví dụ:

function makeCounter() {
  let count = 0;
  return function () {
    count += 1; // still sees count from makeCounter
    return count;
  };
}

const next = makeCounter();
console.log(next()); // 1
console.log(next()); // 2

Lỗi thường gặp: nghĩ rằng hai bộ đếm dùng chung một tổng. Mỗi lần gọi makeCounter() lại tạo ra một count mới, nên mỗi bộ đếm giữ giá trị riêng.

Thế nào là một prompt mẫu tốt

Một mẫu chỉ tốt bằng prompt gốc của nó, nên phần văn bản cố định phải là một prompt bạn đã chạy và thấy ưng ý. Ba lựa chọn phân biệt một mẫu hữu ích với một biểu mẫu chỉ giúp tạo ra câu trả lời tầm thường nhanh hơn.

Chỉ để trống những gì thay đổi. Nếu bạn luôn muốn câu trả lời dưới 150 chữ, hãy viết 150 vào phần cố định. Mỗi chỗ trống là một quyết định bạn phải đưa ra lại ở mỗi lần dùng, và một mẫu có mười chỗ trống còn điền lâu hơn viết prompt mới.

Đặt cho mỗi chỗ trống một cái tên rõ ràng và một giá trị mặc định hợp lý. {{đã biết}} cho bạn biết cần gõ gì; {{x}} thì không. Giá trị mặc định cho thấy loại giá trị được mong đợi và cho phép bạn chạy mẫu một lần mà không cần gõ gì.

Mỗi mẫu một việc. Một mẫu vừa giải thích khái niệm, vừa review code, vừa viết câu hỏi trắc nghiệm tùy theo một chỗ trống sẽ làm cả ba việc kém hơn ba mẫu riêng biệt. Phần cố định càng cụ thể thì càng nói được nhiều về định dạng và tiêu chuẩn.

Sáu phần trong cách viết prompt là một checklist tốt cho phần văn bản cố định: vai trò, tác vụ, ngữ cảnh, đầu vào, định dạng, ràng buộc. Các chỗ trống thường nằm ở tác vụ, ngữ cảnh và đầu vào.

Ví dụ prompt mẫu

Ba mẫu này dành cho những việc thường ngày. Mỗi mẫu có các ô được đặt tên để điền. Để xem bộ sưu tập prompt dựng sẵn lớn hơn, hãy xem ví dụ prompt.

Tóm tắt cho một người đọc cụ thể
Fill in
Tóm tắt văn bản trong thẻ <text> cho một quản lý chỉ có hai phút. Dùng tối đa 3 gạch đầu dòng. Mở đầu bằng bất kỳ quyết định hay hành động nào người đọc cần thực hiện, và bỏ đi phần bối cảnh họ không cần. <text> Dán văn bản vào đây </text>
Try it
Viết một hàm nhỏ
Fill in
Viết một hàm Python nhận một danh sách số và trả về trung vị. Dùng type hint nếu ngôn ngữ có hỗ trợ. Nếu đầu vào rỗng, raise ValueError. Sau hàm, thêm ba ví dụ gọi hàm kèm kết quả mong đợi dưới dạng chú thích. Chỉ trả về code.
Try it
Example replyReplies vary between models and runs.
def median(numbers: list[float]) -> float:
    if not numbers:
        raise ValueError("median() needs at least one number")
    ordered = sorted(numbers)
    middle = len(ordered) // 2
    if len(ordered) % 2 == 1:
        return ordered[middle]
    return (ordered[middle - 1] + ordered[middle]) / 2


# median([3, 1, 2])     returns 2
# median([4, 1, 3, 2])  returns 2.5
# median([])            raises ValueError
Trả lời một tin nhắn
Fill in
Viết câu trả lời cho tin nhắn trong thẻ <message>. Mục tiêu: từ chối lịch sự và đề xuất một ngày trong tháng sau. Giọng văn: thân thiện và ngắn gọn. Dưới 80 chữ và không thêm thông tin không có trong tin nhắn hoặc trong mục tiêu. <message> Chào bạn! Bạn có thể trình bày ngắn về dự án của mình tại buổi meetup ngày 14 của bọn mình không? </message>
Try it
Example replyReplies vary between models and runs.

Chào bạn, cảm ơn lời mời, mình rất vui vì bạn đã nghĩ đến mình! Tiếc là mình không tham gia được ngày 14. Một ngày trong tháng sau có được không? Khi đó mình sẵn lòng chia sẻ về dự án.

Thân, [tên của bạn]

Các thẻ quanh văn bản được dán vào có lý do của nó. Văn bản được điền vào có thể chứa những câu trông như chỉ dẫn, và dấu phân cách giúp model không nhầm chỉ dẫn trong mẫu của bạn với tài liệu nó cần xử lý.

Cách tự tạo prompt mẫu

  1. Bắt đầu từ một prompt đã hiệu quả. Lấy một cuộc trò chuyện mà câu trả lời ra đúng ý, và gom lại phiên bản cuối cùng của prompt, kể cả những chỉnh sửa bạn phải thêm trong các tin nhắn sau. Những chỉnh sửa đó là phần giá trị nhất, vì chúng sửa những gì phiên bản đầu làm sai.
  2. Đánh dấu những gì sẽ thay đổi lần sau. Đọc prompt và gạch dưới mọi từ bạn sẽ sửa cho lần dùng sau. Thường là từ hai đến bốn thứ: một chủ đề, một người đọc, một độ dài, một đầu vào được dán vào.
  3. Thay mỗi thứ bằng một chỗ trống có tên. Viết chỗ trống theo cách công cụ của bạn yêu cầu, chẳng hạn [audience] cho prompt bạn dán bằng tay hoặc {audience} cho code.
  4. Thử với ba cách điền khác nhau. Dùng một trường hợp điển hình, một đầu vào rất ngắn hoặc rất dài, và một trường hợp bất thường. Nếu một trong số đó thất bại, phần cố định vẫn đang giả định điều gì đó về lần dùng đầu tiên. Thay đổi từng câu một, như mô tả trong lặp lại để cải thiện prompt.
  5. Lưu ở nơi bạn sẽ tìm thấy. Một tệp ghi chú, một text expander hay một trình quản lý snippet đều được. Một mẫu mà bạn phải đi tìm là mẫu bạn sẽ thôi không dùng nữa.

Prompt mẫu trong code

Trong một chương trình, mẫu là một chuỗi có các trường được đặt tên. str.format() của Python điền chúng vào:

SUMMARY_TEMPLATE = """Summarize the text inside the <text> tags for {audience}.
Use at most {bullets} bullet points and lead with any action the reader must take.

<text>
{text}
</text>"""

with open("notes.txt", encoding="utf-8") as f:
    meeting_notes = f.read()

prompt = SUMMARY_TEMPLATE.format(
    audience="a manager who has two minutes",
    bullets=3,
    text=meeting_notes,
)

Với str.format(), mọi dấu ngoặc nhọn thật trong mẫu phải được viết đôi ({{ và }}), điều này quan trọng khi mẫu có chứa ví dụ JSON. Dấu ngoặc nhọn trong các giá trị bạn truyền vào, như code trong meeting_notes, không cần escape. Một số thư viện xây dựng ứng dụng AI có lớp template riêng, nhưng chúng làm cùng một việc như một chuỗi định dạng, chỉ thêm vài tính năng xung quanh.

Khi các giá trị đến từ người dùng, hãy nhớ rằng mẫu sẽ gửi văn bản của họ tới model. Giữ nó trong dấu phân cách, và đừng cho model những công cụ hay dữ liệu mà một đầu vào độc hại có thể lợi dụng.

Prompt mẫu hay system prompt

Prompt mẫu và system prompt giải quyết những vấn đề khác nhau. System prompt chứa các quy tắc áp dụng cho mọi tin nhắn trong một cuộc trò chuyện hoặc một ứng dụng: tính cách, giọng văn, những điều trợ lý không bao giờ được làm. Prompt mẫu chứa một tác vụ có chỗ trống. Trong một ứng dụng, bạn thường dùng cả hai: một system prompt cố định đặt ra quy tắc nền tảng, và một mẫu dựng nên từng tin nhắn của người dùng.

Câu hỏi thường gặp

Prompt mẫu là gì?

Prompt mẫu là một prompt dùng lại được, có placeholder như [topic] hoặc {language} cho những phần thay đổi giữa các lần dùng. Phần văn bản cố định chứa những chỉ dẫn bạn đã thử nghiệm; mỗi lần dùng, bạn chỉ điền vào chỗ trống thay vì viết prompt từ đầu.

Làm sao để tự tạo prompt mẫu?

Bắt đầu từ một prompt đã cho bạn câu trả lời tốt. Đánh dấu những từ bạn sẽ thay đổi cho lần dùng sau, thay mỗi từ bằng một chỗ trống có tên, rồi thử mẫu với ba cách điền khác nhau, trong đó có một trường hợp bất thường. Giữ nguyên những chỉ dẫn đã làm nên câu trả lời tốt ban đầu.

Nên lưu prompt mẫu ở đâu?

Ở bất cứ đâu bạn có thể sao chép nhanh: một tệp ghi chú, một công cụ mở rộng văn bản (text expander) hoặc một trình quản lý snippet. Ứng dụng chat cũng có chỗ để lưu văn bản dùng lại, như custom instructions và chỉ dẫn cho dự án, hợp với những quy tắc áp dụng cho mọi tin nhắn hơn là các tác vụ một lần có chỗ trống.

Làm sao dùng prompt mẫu trong Python?

Lưu mẫu dưới dạng chuỗi có các trường được đặt tên rồi điền bằng str.format() hoặc f-string. Với str.format(), mọi dấu ngoặc nhọn thật trong mẫu phải viết hai lần ({{ và }}), ví dụ khi mẫu có chứa một ví dụ JSON. Đặt văn bản do người dùng cung cấp trong dấu phân cách để nó tách bạch với phần chỉ dẫn.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu