Bỏ qua tới nội dung
Bài 5/12 · Prompt engineering từ cơ bản đến trung cấp (DAIR.AI)

Ví dụ về prompt

Ví dụ prompt cho tóm tắt, trích xuất thông tin, hỏi đáp, phân loại văn bản, hội thoại, sinh code và suy luận.

Cơ bản@shine190412 phút đọc

Bài trước đã giới thiệu ví dụ cơ bản về cách prompt cho LLM. Bài này đưa thêm ví dụ về cách dùng prompt để làm các tác vụ khác nhau và giới thiệu các khái niệm chính trong quá trình đó. Thường thì cách tốt nhất để học khái niệm là đi qua ví dụ. Các ví dụ dưới đây minh hoạ cách dùng prompt được viết tốt để thực hiện nhiều loại tác vụ.

Chủ đề:

  • Tóm tắt văn bản
  • Trích xuất thông tin
  • Hỏi đáp
  • Phân loại văn bản
  • Hội thoại
  • Sinh code
  • Suy luận

Video kèm bài: Examples of Prompts trên YouTube.

Tóm tắt văn bản

Một trong những tác vụ chuẩn trong sinh ngôn ngữ tự nhiên là tóm tắt văn bản. Tóm tắt văn bản có nhiều dạng và lĩnh vực khác nhau. Thực tế, một trong những ứng dụng hứa hẹn nhất của model ngôn ngữ là khả năng tóm tắt bài viết và khái niệm thành bản tóm tắt nhanh, dễ đọc. Chúng ta hãy thử một tác vụ tóm tắt cơ bản bằng prompt.

Giả sử bạn muốn tìm hiểu về kháng sinh, bạn có thể thử prompt như sau:

Prompt:

code
Explain antibiotics

A:

Đầu ra:

code
Antibiotics are a type of medication used to treat bacterial infections. They work by either killing the bacteria or preventing them from reproducing, allowing the body’s immune system to fight off the infection. Antibiotics are usually taken orally in the form of pills, capsules, or liquid solutions, or sometimes administered intravenously. They are not effective against viral infections, and using them inappropriately can lead to antibiotic resistance.

"A:" là một định dạng prompt tường minh dùng trong hỏi đáp. Ở đây bạn dùng nó để báo cho model biết phía sau cần có một câu trả lời. Trong ví dụ này, chưa rõ dùng nó có ích gì hơn so với không dùng, nhưng chúng ta sẽ để dành cho các ví dụ sau. Giả sử thông tin trên quá nhiều và bạn muốn tóm tắt thêm. Thực tế, bạn có thể chỉ dẫn model tóm tắt thành một câu như sau:

Prompt:

code
Antibiotics are a type of medication used to treat bacterial infections. They work by either killing the bacteria or preventing them from reproducing, allowing the body’s immune system to fight off the infection. Antibiotics are usually taken orally in the form of pills, capsules, or liquid solutions, or sometimes administered intravenously. They are not effective against viral infections, and using them inappropriately can lead to antibiotic resistance.

Explain the above in one sentence:

Đầu ra:

code
Antibiotics are medications used to treat bacterial infections by either killing the bacteria or stopping them from reproducing, but they are not effective against viruses and overuse can lead to antibiotic resistance.

Tạm chưa bàn nhiều về độ chính xác của đầu ra trên (sẽ được đề cập ở một bài sau), model đã cố tóm tắt đoạn văn thành một câu. Bạn có thể viết chỉ dẫn khéo hơn nhưng chúng ta sẽ để dành cho chương sau. Bạn cứ dừng lại ở đây và thử nghiệm xem có kết quả tốt hơn không.

Trích xuất thông tin

Dù model ngôn ngữ được huấn luyện để sinh ngôn ngữ tự nhiên và các tác vụ liên quan, chúng cũng rất có khả năng làm phân loại và nhiều tác vụ xử lý ngôn ngữ tự nhiên (NLP) khác.

Đây là ví dụ một prompt trích xuất thông tin từ một đoạn văn cho trước.

Prompt:

code
Author-contribution statements and acknowledgements in research papers should state clearly and specifically whether, and to what extent, the authors used AI technologies such as ChatGPT in the preparation of their manuscript and analysis. They should also indicate which LLMs were used. This will alert editors and reviewers to scrutinize manuscripts more carefully for potential biases, inaccuracies and improper source crediting. Likewise, scientific journals should be transparent about their use of LLMs, for example when selecting submitted manuscripts.

Mention the large language model based product mentioned in the paragraph above:

Đầu ra:

code
The large language model based product mentioned in the paragraph above is ChatGPT.

Có nhiều cách cải thiện kết quả trên, nhưng như vậy đã rất hữu ích.

Đến đây hẳn bạn đã thấy rõ có thể yêu cầu model làm các tác vụ khác nhau chỉ bằng cách chỉ dẫn nó cần làm gì. Đó là một khả năng mạnh mẽ mà các nhà phát triển sản phẩm AI đang dùng để xây những sản phẩm và trải nghiệm ấn tượng.

Nguồn đoạn văn: ChatGPT: five priorities for research.

Hỏi đáp

Một trong những cách tốt nhất để model trả lời cụ thể là cải thiện định dạng prompt. Như đã nói, một prompt có thể kết hợp chỉ dẫn, ngữ cảnh, đầu vào và chỉ báo đầu ra để có kết quả tốt hơn. Dù các thành phần này không bắt buộc, dùng chúng là thực hành tốt, vì chỉ dẫn càng cụ thể thì kết quả càng tốt. Dưới đây là ví dụ một prompt có cấu trúc hơn.

Prompt:

code
Answer the question based on the context below. Keep the answer short and concise. Respond "Unsure about answer" if not sure about the answer.

Context: Teplizumab traces its roots to a New Jersey drug company called Ortho Pharmaceutical. There, scientists generated an early version of the antibody, dubbed OKT3. Originally sourced from mice, the molecule was able to bind to the surface of T cells and limit their cell-killing potential. In 1986, it was approved to help prevent organ rejection after kidney transplants, making it the first therapeutic antibody allowed for human use.

Question: What was OKT3 originally sourced from?

Answer:

Đầu ra:

code
Mice.

Ngữ cảnh lấy từ Nature.

Phân loại văn bản

Đến giờ, bạn đã dùng chỉ dẫn đơn giản để làm tác vụ. Là người làm prompt engineering, bạn cần giỏi hơn trong việc đưa chỉ dẫn tốt hơn. Nhưng chưa hết! Bạn cũng sẽ thấy với các trường hợp khó hơn, chỉ đưa chỉ dẫn là không đủ. Đây là lúc bạn cần nghĩ nhiều hơn về ngữ cảnh và các thành phần khác có thể dùng trong prompt. Các thành phần khác bạn có thể cung cấp là input data (dữ liệu đầu vào) hoặc examples (ví dụ).

Chúng ta hãy minh hoạ bằng một ví dụ phân loại văn bản.

Prompt:

code
Classify the text into neutral, negative or positive. 

Text: I think the food was okay. 
Sentiment:

Đầu ra:

code
Neutral

Bạn đưa chỉ dẫn phân loại văn bản và model trả lời 'Neutral', là đúng. Không có gì sai, nhưng giả sử điều bạn thật sự cần là model trả nhãn đúng định dạng bạn muốn. Thay vì Neutral, bạn muốn nó trả neutral. Làm sao để được như vậy? Có nhiều cách. Ở đây bạn quan tâm tới tính cụ thể, nên càng cung cấp nhiều thông tin trong prompt thì kết quả càng tốt. Bạn có thể thử đưa ví dụ để chỉ rõ hành vi đúng. Thử lại nhé:

Prompt:

code
Classify the text into neutral, negative or positive. 

Text: I think the vacation is okay.
Sentiment: neutral 

Text: I think the food was okay. 
Sentiment:

Đầu ra:

code
neutral

Hoàn hảo! Lần này model trả về neutral, đúng nhãn cụ thể bạn muốn. Có vẻ ví dụ trong prompt đã giúp model cụ thể hơn ở đầu ra.

Để thấy vì sao đôi khi tính cụ thể là quan trọng, hãy xem ví dụ dưới và tìm ra vấn đề:

Prompt:

code
Classify the text into nutral, negative or positive. 

Text: I think the vacation is okay.
Sentiment:

Đầu ra:

code
Neutral

Vấn đề ở đây là gì? Gợi ý: nhãn bịa ra nutral bị model bỏ qua hoàn toàn. Thay vào đó, model xuất Neutral vì nó có thiên hướng với nhãn đó. Nhưng giả sử điều bạn thật sự muốn là nutral. Bạn sẽ sửa thế nào? Có thể thử thêm mô tả cho các nhãn, hoặc thêm ví dụ vào prompt? Nếu chưa chắc, chúng ta sẽ bàn vài ý tưởng ở các bài sau.

Hội thoại

Có lẽ một trong những điều thú vị hơn bạn làm được với prompt engineering là chỉ dẫn hệ thống LLM cách hành xử, ý định và danh tính của nó. Điều này đặc biệt hữu ích khi bạn xây hệ thống hội thoại như chatbot chăm sóc khách hàng.

Ví dụ, hãy tạo một hệ thống hội thoại có thể trả lời câu hỏi theo hướng kỹ thuật và khoa học hơn. Để ý cách bạn nói rõ cho nó cách hành xử qua chỉ dẫn. Cách này đôi khi được gọi là role prompting (prompt theo vai trò).

Prompt:

code
The following is a conversation with an AI research assistant. The assistant tone is technical and scientific.

Human: Hello, who are you?
AI: Greeting! I am an AI research assistant. How can I help you today?
Human: Can you tell me about the creation of blackholes?
AI:

Đầu ra:

code
Sure! Black holes are regions of spacetime where the gravitational force is so strong that nothing, not even light, can escape from it. They are created when a very massive star dies and its core collapses in on itself, forming a singularity of infinite density. The intense gravity of the singularity pulls in all the matter and radiation around it, creating the black hole.

Trợ lý nghiên cứu AI của chúng ta nghe hơi quá kỹ thuật phải không? Được rồi, hãy đổi hành vi này và chỉ dẫn hệ thống đưa câu trả lời dễ hiểu hơn.

Prompt:

code
The following is a conversation with an AI research assistant. The assistant answers should be easy to understand even by primary school students.

Human: Hello, who are you?
AI: Greeting! I am an AI research assistant. How can I help you today?
Human: Can you tell me about the creation of black holes?
AI: 

Đầu ra:

code
Sure! Black holes are created when a very massive star runs out of fuel and collapses in on itself. The gravity of the star is so strong that nothing, not even light, can escape its pull. This creates a point in space-time with an intense gravitational force called a black hole.

Bạn đã tiến bộ một chút. Bạn có thể tiếp tục cải thiện. Nếu thêm nhiều ví dụ hơn, có thể bạn sẽ có kết quả còn tốt hơn.

Sinh code

Một ứng dụng mà LLM khá hiệu quả là sinh code. Copilot là ví dụ tuyệt vời. Có rất nhiều tác vụ sinh code bạn có thể làm với prompt khéo léo. Chúng ta hãy xem vài ví dụ.

Trước hết, thử một chương trình đơn giản chào người dùng.

Prompt:

code
/*
Ask the user for their name and say "Hello"
*/

Đầu ra:

code
let name = prompt("What is your name?");
console.log(`Hello, ${name}!`);

Để ý rằng bạn thậm chí không cần nói rõ ngôn ngữ lập trình.

Chúng ta hãy nâng cấp độ một chút. Ví dụ dưới cho thấy LLM mạnh đến mức nào khi bạn bỏ thêm chút công thiết kế prompt.

Prompt:

code
"""
Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
Create a MySQL query for all students in the Computer Science Department
"""

Đầu ra:

code
SELECT StudentId, StudentName 
FROM students 
WHERE DepartmentId IN (SELECT DepartmentId FROM departments WHERE DepartmentName = 'Computer Science');

Rất ấn tượng. Trong trường hợp này, bạn đã cung cấp dữ liệu về schema cơ sở dữ liệu và yêu cầu model sinh một truy vấn MySQL hợp lệ.

Suy luận

Có lẽ một trong những tác vụ khó nhất với LLM hiện nay là tác vụ cần một dạng suy luận nào đó. Suy luận là một trong những lĩnh vực thú vị nhất vì các loại ứng dụng phức tạp có thể xuất hiện từ LLM.

Đã có vài cải thiện ở các tác vụ liên quan tới khả năng toán học. Tuy vậy, cần lưu ý LLM hiện nay vẫn gặp khó với tác vụ suy luận, nên cần các kỹ thuật prompt engineering nâng cao hơn nữa. Chúng ta sẽ đề cập các kỹ thuật nâng cao này ở phần sau. Hiện tại, chúng ta xem vài ví dụ cơ bản về khả năng số học.

Prompt:

code
What is 9,000 * 9,000?

Đầu ra:

code
81,000,000

Thử một bài khó hơn.

Prompt:

code
The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 

A: 

Đầu ra

code
No, the odd numbers in this group add up to an odd number: 119.

Sai rồi! Chúng ta hãy thử cải thiện bằng cách cải thiện prompt.

Prompt:

code
The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 

Solve by breaking the problem into steps. First, identify the odd numbers, add them, and indicate whether the result is odd or even. 

Đầu ra:

code
Odd numbers: 15, 5, 13, 7, 1
Sum: 41 
41 is an odd number.

Tốt hơn nhiều phải không? Nhân tiện, nhóm tác giả đã thử tác vụ này vài lần và model đôi khi vẫn sai. Nếu bạn đưa chỉ dẫn tốt hơn kết hợp với ví dụ, có thể sẽ được kết quả chính xác hơn.

Ở phần tiếp theo, chúng ta sẽ đề cập những khái niệm và kỹ thuật prompt engineering nâng cao hơn để cải thiện hiệu năng trên các tác vụ này và các tác vụ khó hơn.

Notebook

Nếu muốn thực hành các prompt trên bằng Python, nhóm tác giả đã chuẩn bị một notebook để thử một số prompt với các model của OpenAI: Getting Started with Prompt Engineering.

Nguồn