Bài giảng về cách sử dụng prompt engineering hiệu quả với ChatGPT. Sau khi học xong bài giảng, người dùng hiểu về cấu trúc cơ bản của prompt, biết cách thiết kế prompt một cách hiệu quả, tiết kiệm
2. 2
Nội dung trình bày
❏ Bước chuẩn bị
❏ Kiến thức cơ bản
❏ Mô hình ngôn ngữ và mô hình ngôn ngữ lớn
❏ Token là gì? Cách OpenAI tính chi phí gọi API theo token
❏ Các tham số khi sử dụng LLM
❏ Prompt là gì?
❏ Prompt Engineering là gì?
❏ Chiến lược viết prompt hiệu quả
❏ Function Calling
❏ Tài liệu tham khảo
3. 3
Nhu cầu về nghề Prompt Engineer
Source:
https://www.ziprecruiter.com/Salaries/Prompt-Engineering-
Salary
4. 4
Bước chuẩn bị
❏ Vào Playground của OpenAI tại địa chỉ:
https://platform.openai.com/playground
❏ Cài đặt thư viện Python của OpenAI
pip install --upgrade openai
❏ Chuẩn bị API Key của OpenAI
❏ Xem các ví dụ trên trang OpenAI: https://platform.openai.com/examples
6. 6
Ví dụ 1: viết thư chúc mừng năm mới cô giáo
Tình huống thực tế
❏ Muốn viết thư cho cô giáo cũ đang sống bên Nhật. Cô tên là Matsubara
❏ Trong thư tôi gửi lời chúc mừng năm mới tới cô giáo và hỏi thăm tình hình
hiện tại của cô
❏ Mời cô giáo tới chơi ở Việt Nam khi cô có thời gian
❏ Giọng điệu: Vì viết thư cho cô giáo nên trong thư tôi muốn dùng kính ngữ.
Không gọi cô giáo bằng あなた
7. 7
Viết thư chúc mừng năm mới cô giáo
System Prompt: 手紙では敬語を使用し、先生を「あなた」と呼ことは避けてください。
User Prompt: 私の先生に手紙を書いてください。 彼女の名前は松原です。日本に住ん
でいます。 手紙では先生とご家族のことを聞き、新年の願いを書いてください。 手紙の
中で、時間があったらベトナムに行くよう彼女に誘ってください。
Mẹo: viết prompt bằng tiếng Việt, sau đó dịch ra tiếng Nhật (dùng Google
Translate hoặc các công cụ tương đương)
※ Có thể viết prompt bằng tiếng Anh (hoặc tiếng Việt), thêm yêu cầu: “hãy viết thư
bằng tiếng Nhật”
8. 8
Ví dụ 2: Giải toán đố
I have 5 apple today and ate 3 apples last week, how many apples left today?
Với setting mặc định
❏ GPT-3.5 trả lời sai: còn 2 quả táo
❏ GPT-4 trả lời đúng: vẫn còn 5 quả
9. 9
Ví dụ 3: Calendar Events
Bạn được yêu cầu sử dụng ChatGPT để trích xuất tự động các thông tin về events
để đưa vào Calendar
“Dinner with Alice next Tuesday at Taco Bell”
“CorpConf on 11/4”
“1:1 with Bob tomorrow at 10 AM”
10. 10
Mô hình ngôn ngữ
❏ Mô hình dự đoán các từ kế tiếp cùng với xác suất tương ứng
❏ Mô hình ngôn ngữ lớn (LLM): mô hình dựa trên kiến trúc Transformers, có kích
thước lớn và được huấn luyện trên lượng dữ liệu lớn
11. 11
Vì sao LLM có thể thực hiện nhiều tác vụ khác?
"instruction": "What are the three primary colors?",
"input": "",
"output": "The three primary colors are red, blue, and yellow. These colors are called primary because they
cannot be created by mixing other colors and all other colors can be made by combining them in various
proportions. In the additive color system, used for light, the primary colors are red, green, and blue (RGB)."
Theo Yoav Goldberg trong bài viết “Some remarks on Large Language Models”
❏ Instruction Tuning: bằng việc huấn luyện trên dữ liệu instruction, chúng ta giúp
cho LLM hiểu và nhớ các tri thức về các mệnh lệnh như “tóm tắt”, “dịch”, “phân
loại”,...
❏ Dữ liệu code
❏ RLHF (Reinforcement Learning with Human Feedback)
12. 12
ChatGPT API: completion và chat completion
Completion API hoạt động
theo nguyên lý của mô hình
ngôn ngữ truyền thống
Chat completion API
14. 14
Số lượng token khi đầu vào là tiếng Nhật
1 token ~ chưa
đến 1 kí tự
tiếng Nhật
15. 15
Chi phí gọi API của OpenAI
Prompt (input) và output càng dài thì phí càng đắt
16. 16
Thiết lập tham số của mô hình
❏ Temperature:
❏ Càng nhỏ thì kết quả sinh ra càng tất định
❏ Set giá trị nhỏ trong các tác vụ cần chính xác như phân loại, hỏi đáp
❏ Set giá trị lớn khi cần sự sáng tạo (sáng tác thơ, truyện)
❏ Top P
❏ Cũng để điều khiển sự tất định của mô hình
❏ Thay đổi hoặc temperature hoặc Top P khi cần chứ không nên thay
đổi cả 2
❏ Frequency Penalty
❏ Phạt các token xuất hiện nhiều. Nếu giá trị này lớn thì khả năng word
xuất hiện lại càng nhỏ
❏ Presence Penalty
❏ Khác với Frequency Penalty, Presence Penalty này phạt các word
không phụ thuộc vào frequency
17. 17
Prompt là gì?
❏ Là điều kiện, ngữ cảnh hoặc hướng dẫn, đóng vai trò là đầu vào của mô hình,
để từ đó mô hình ngôn ngữ sinh tiếp nội dung
❏ Đầu ra của mô hình phụ thuộc lớn vào prompt được đưa vào
18. 18
Prompt là gì?
❏ Chuyện gì xảy ra nếu không đưa prompt vào mô hình ngôn ngữ?
19. 19
System Prompt
❏ Có trong Chat Completion API
❏ Dùng để thiết lập hành vi chung cho assistant trong đoạn hội thoại
❏ Dùng System Prompt với GPT-4 hiệu quả hơn so với GPT-3.5
Ví dụ: http://tinyurl.com/3rnra5jj
import openai
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are an AI research assistant. You use a
tone that is technical and scientific."},
{"role": "user", "content": "Hello, who are you?"},
{"role": "assistant", "content": "Greeting! I am an AI research assistant.
How can I help you today?"},
{"role": "user", "content": "Can you tell me about the creation of black
holes?"}
]
20. 20
Prompt Engineering là gì?
❏ Quá trình thiết kế và cấu trúc câu prompt một cách cẩn thận và có hệ thống
để thu được đầu ra hiệu quả nhất hoặc theo như mong muốn
❏ Gần với nghệ thuật (art) hơn là engineering
❏ Vì sao cần prompt engineering?
❏ Cách hoạt động của LLM chưa được hiểu một cách rõ ràng nên cần thử sai
❏ Dữ liệu huấn luyện, kiến trúc mô hình, thuật toán huấn luyện của các mô hình khác nhau nên
với mỗi mô hình, cần tìm ra prompt nào phù hợp
❏ Chọn prompt tốt còn có thể tiết kiệm được chi phí (thời gian thực thi, chi phí gọi API)
21. 21
Thành phần của Prompt
❏ Câu lệnh (instruction)
❏ Ngữ cảnh (context)
❏ Dữ liệu đầu vào (input data): dữ liệu input hoặc câu hỏi
❏ Dấu hiệu chỉ định cho đầu ra (output indicator)
Ví dụ:
Classify the text into neutral, negative, or positive
Text: I think the food was okay.
Sentiment:
22. 22
Mẹo viết prompt nói chung (1)
Bắt đầu đơn giản (start simple) Bắt đầu đơn giản, thêm dần các thành phần
Bắt đầu câu ra lệnh (instruction)
bằng động từ
"Write", "Classify", "Summarize", "Translate", "Order"
Viết câu ra lệnh ở vị trí đầu của
prompt. Có thể dùng các ký tự
đặc biệt để đánh vị trí của dấu
câu ra lệnh
### Instruction ###
Translate the text below to Spanish:
Text: "hello!"
Viết câu prompt chi tiết Extract the name of places in the following text.
Desired format:
Place: <comma_separated_list_of_company_names>
Input: "Although these developments are encouraging to researchers, much is
still a mystery. “We often have a black box between the brain and the effect we
see in the periphery,” says Henrique Veiga-Fernandes, a neuroimmunologist at
the Champalimaud Centre for the Unknown in Lisbon. “If we want to use it in
the therapeutic context, we actually need to understand the mechanism.""
23. 23
Mẹo viết prompt nói chung (2)
Tránh sự không chính xác 👎 Explain the concept prompt engineering. Keep the explanation
short, only a few sentences, and don't be too descriptive.
👍 Use 2-3 sentences to explain the concept of prompt engineering to
a high school student.
Nên viết câu khẳng định (to-do) thay vì
phủ định (not to do)
👎 The following is an agent that recommends movies to a customer.
DO NOT ASK FOR INTERESTS. DO NOT ASK FOR PERSONAL
INFORMATION.
Customer: Please recommend a movie based on my interests.
Agent:
👍 The following is an agent that recommends movies to a customer.
The agent is responsible to recommend a movie from the top global
trending movies. It should refrain from asking users for their
preferences and avoid asking for personal information. If the agent
doesn't have a movie to recommend, it should respond "Sorry, couldn't
find a movie to recommend today.".
Customer: Please recommend a movie based on my interests.
Agent:
28. 28
Các chiến lược viết prompt hiệu quả
1. Viết hướng dẫn rõ ràng
2. Cung cấp nội dung tham chiếu
3. Chia nhỏ nhiệm vụ phức tạp
4. Cho mô hình thời gian suy nghĩ
5. Sử dụng các công cụ bên ngoài
6. Đánh giá (các prompt) một cách có hệ thống
Tham khảo: Open AI Prompt Engineering Guide
Mind Map: Prompt Engineering Guide.pdf
29. 29
Thêm các chi tiết vào prompt
Worse Better
How do I add numbers in Excel? How do I add up a row of dollar amounts in Excel? I want to do this
automatically for a whole sheet of rows with all the totals ending up
on the right in a column called "Total".
Who’s president? Who was the president of Mexico in 2021, and how frequently are
elections held?
Write code to calculate the
Fibonacci sequence.
Write a TypeScript function to efficiently calculate the Fibonacci
sequence. Comment the code liberally to explain what each piece
does and why it's written that way.
Summarize the meeting notes. Summarize the meeting notes in a single paragraph. Then write a
markdown list of the speakers and each of their key points. Finally,
list the next steps or action items suggested by the speakers, if
any.
30. 30
Chia để trị
❏ Với ví dụ Calendar Event: giải quyết từng vấn đề
❏ Trích xuất ngày tháng từ câu hội thoại: CorpConf on 11/4 → 11/4
❏ Trích xuất người tham gia
❏ Trích xuất tên sự kiện: CorpConf on 11/4 → CorpConf
❏ Tóm tắt cuốn sách dài bằng cách tóm tắt từng phần
31. 31
Cho mô hình thời gian suy nghĩ
1. Hướng dẫn để mô hình tự giải từng bước thay vì đưa ra luôn câu trả lời
2. Sử dụng chuỗi query
3. Hỏi model xem có có quên gì trong các bước trước đó không
https://platform.openai.com/docs/guides/prompt-engineering/strategy-give-mod
els-time-to-think
32. 32
Trả lời dựa vào reference text
Tham khảo:
https://platform.openai.com/docs/guides/prompt-engineerin
g/strategy-provide-reference-text
33. 33
Trả lời dựa vào reference text
Sử dụng RAG (Retrieval Augmented Regeneration) trong trường hợp nội dung văn
bản rất dài
Image source:
https://python.langchain.com/docs/use_cases/question_answering/
35. 35
Đánh giá một cách có hệ thống
❏ Chuẩn bị tập test bao gồm các input và kết quả mong muốn: đối với các vấn
đề mà kết quả mong muốn thường là câu trả lời duy nhất (như trích xuất
thông tin)
❏ Với các vấn đề mà câu trả lời không duy nhất: đưa ra tiêu chí cho câu trả lời
với mỗi câu hỏi
❏ Bộ data Elyza-tasks-100 sử dụng cách này
❏ Sử dụng framework evals của OpenAI
36. 36
Principled Instructions Are All You Need
Bsharat, S. M., Myrzakhan, A., & Shen, Z. (2023). Principled Instructions Are All You
Need for Questioning LLaMA-1/2, GPT-3.5/4. arXiv preprint arXiv:2312.16171.
https://arxiv.org/abs/2312.16171
Bảng 26 nguyên lý viết prompt (lấy từ paper): 26 prompt principles.png
37. 37
Phát triển ứng dụng với LLM
Có nhiều framework cho phép lập trình, phát triển ứng dụng với LLM
❏ LangChain: https://github.com/langchain-ai/langchain
❏ LlamaIndex: https://www.llamaindex.ai
❏ Stanford DSPy: https://github.com/stanfordnlp/dspy
38. 38
Function Calling
❏ Why: Khi cần tạo ứng dụng cần lấy thông tin chính xác từ API bên ngoài
❏ Ứng dụng thông tin thời tiết: “Thời tiết Tokyo ngày hôm nay thế nào?”
❏ Lấy thông tin trong database: “Tháng có doanh thu cao nhất trong năm?”
❏ Flow
① Call the model with the user query and a set of functions defined in the functions parameter.
② The model can choose to call one or more functions; if so, the content will be a stringified
JSON object adhering to your custom schema (note: the model may hallucinate parameters).
③ Parse the string into JSON in your code, and call your function with the provided arguments
if they exist.
④ Call the model again by appending the function response as a new message, and let the
model summarize the results back to the user.