SlideShare a Scribd company logo
1 of 43
Prompt Engineering Tutorial
2024/01/03
1
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
Nhu cầu về nghề Prompt Engineer
Source:
https://www.ziprecruiter.com/Salaries/Prompt-Engineering-
Salary
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
5
OpenAI Playground
https://platform.openai.com/playground
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
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
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
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
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
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
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
13
Token là gì?
https://platform.openai.com/tokenizer
Đơn vị nguyên
tử của của mô
hình ngôn ngữ
1 token ~ 4 kí
tự
100 tokens ~
75 words (in
English)
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
Chi phí gọi API của OpenAI
Prompt (input) và output càng dài thì phí càng đắt
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
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
Prompt là gì?
❏ Chuyện gì xảy ra nếu không đưa prompt vào mô hình ngôn ngữ?
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
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
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
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
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:
24
Các kỹ thuật viết prompt
❏ Zero-shot prompting
❏ Few-shot prompting
❏ Chain-of-thought prompting
❏ Tree-of-thought prompting
❏ Self-consistency
❏ …
25
Zero-shot prompting và Few-shot prompting
26
Chain-of-Thought (CoT) Prompting
27
Zero-shot CoT Prompting
Image Source: Kojima et al. (2022)
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
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
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
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
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
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/
34
Vector Databases
❏ AnalyticDB
❏ Cassandra/Astra DB
❏ AzureSearch
❏ Chroma
❏ Elasticsearch
❏ Hologres
❏ …
https://cookbook.openai.com/examples/vector_databases/readme
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
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
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
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.
39
Function Calling (cont.)
Execute internal function
Task: Extract Blocks from PDF file
40
Function Calling (cont.)
41
Function Calling (cont.)
42
Function Calling (cont.)
output
More: OpenAI Example
Notebook
43
Tài liệu tham khảo
1. Prompt Engineering Guide: https://www.promptingguide.ai
2. Pro Prompter: https://chat.openai.com/g/g-uSEqrEWdX-pro-prompter
3. OpenAI Prompt engineering
4. Prompt Engineering Guide by Learn Prompting
5. Prompt examples, OpenAI API
6. brexhq Prompt-Engineering
7. Prompt Engineering vs. Blind Prompting, by Mitchell Hashimoto
8. Prompt examples, by OpenAI
9. OpenAI Functional Calling

More Related Content

Similar to Prompt Engineering Tutorial: Cách viết prompt hiệu quả với ChatGPT

Design Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếDesign Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếVKhang Yang
 
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000Kiến Trúc KISATO
 
Các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbot
Các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbotCác bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbot
Các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbotMinh Pham
 
Bao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhBao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhKết Vẻ
 
Bao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhBao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhHoa Huong
 
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...GMO-Z.com Vietnam Lab Center
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánNguyễn Đức
 
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tin
69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tinVu Hung Nguyen
 
C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)Nguyễn Phụng
 
Chinh phuc ngon_ngu_c
Chinh phuc ngon_ngu_cChinh phuc ngon_ngu_c
Chinh phuc ngon_ngu_cDotuanhao
 
Hoc tester o dau de ra trương co duoc viec ngay
Hoc tester o dau de ra trương co duoc viec ngayHoc tester o dau de ra trương co duoc viec ngay
Hoc tester o dau de ra trương co duoc viec ngaynhatlectv
 
Hướng nghiệp Lập trình Web
Hướng nghiệp Lập trình WebHướng nghiệp Lập trình Web
Hướng nghiệp Lập trình WebVKhang Yang
 
Thuc hanh pttk thang 9 nam 2012
Thuc hanh pttk thang 9 nam 2012Thuc hanh pttk thang 9 nam 2012
Thuc hanh pttk thang 9 nam 2012Nguyen Dung
 
Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)Trần Thiên Đại
 
Java Core (Vietnamese)
Java Core (Vietnamese)Java Core (Vietnamese)
Java Core (Vietnamese)Đông Lương
 

Similar to Prompt Engineering Tutorial: Cách viết prompt hiệu quả với ChatGPT (20)

Design Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tếDesign Pattern qua ví dụ thực tế
Design Pattern qua ví dụ thực tế
 
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
Sách Sap Pro Sách dạy phần mềm tính toán kết cấu bằng phần mềm Sap 2000
 
Các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbot
Các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbotCác bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbot
Các bài toán xử lý ngôn ngữ tự nhiên trong phát triển hệ thống chatbot
 
Bao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhBao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anh
 
Bao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhBao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anh
 
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
Ứng dụng NLP vào việc xác định ý muốn người dùng (Intent Detection) và sửa lỗ...
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toán
 
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tin
69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin69 câu hỏi phỏng vấn kỹ  sư Công nghệ Thông tin
69 câu hỏi phỏng vấn kỹ sư Công nghệ Thông tin
 
Thdc 06
Thdc 06Thdc 06
Thdc 06
 
Code convention
Code conventionCode convention
Code convention
 
C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)
 
Chinh phuc ngon_ngu_c
Chinh phuc ngon_ngu_cChinh phuc ngon_ngu_c
Chinh phuc ngon_ngu_c
 
Vb6 16 (10)
Vb6 16 (10)Vb6 16 (10)
Vb6 16 (10)
 
Day hoc lt (aml)
Day hoc lt (aml)Day hoc lt (aml)
Day hoc lt (aml)
 
Hoc tester o dau de ra trương co duoc viec ngay
Hoc tester o dau de ra trương co duoc viec ngayHoc tester o dau de ra trương co duoc viec ngay
Hoc tester o dau de ra trương co duoc viec ngay
 
Hướng nghiệp Lập trình Web
Hướng nghiệp Lập trình WebHướng nghiệp Lập trình Web
Hướng nghiệp Lập trình Web
 
Thuc hanh pttk thang 9 nam 2012
Thuc hanh pttk thang 9 nam 2012Thuc hanh pttk thang 9 nam 2012
Thuc hanh pttk thang 9 nam 2012
 
Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)
 
Java Core (Vietnamese)
Java Core (Vietnamese)Java Core (Vietnamese)
Java Core (Vietnamese)
 
Code convention
Code conventionCode convention
Code convention
 

More from Minh Pham

AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...
AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...
AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...Minh Pham
 
A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...
A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...
A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...Minh Pham
 
Research methods for engineering students (v.2020)
Research methods for engineering students (v.2020)Research methods for engineering students (v.2020)
Research methods for engineering students (v.2020)Minh Pham
 
Giới thiệu về AIML
Giới thiệu về AIMLGiới thiệu về AIML
Giới thiệu về AIMLMinh Pham
 
Mạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiên
Mạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiênMạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiên
Mạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiênMinh Pham
 
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingBERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingMinh Pham
 
Deep Contexualized Representation
Deep Contexualized RepresentationDeep Contexualized Representation
Deep Contexualized RepresentationMinh Pham
 
Research Methods in Natural Language Processing (2018 version)
Research Methods in Natural Language Processing (2018 version)Research Methods in Natural Language Processing (2018 version)
Research Methods in Natural Language Processing (2018 version)Minh Pham
 
A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...
A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...
A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...Minh Pham
 
Về kỹ thuật Attention trong mô hình sequence-to-sequence tại hội nghị ACL 2017
Về kỹ thuật Attention trong mô hình sequence-to-sequence  tại hội nghị ACL 2017Về kỹ thuật Attention trong mô hình sequence-to-sequence  tại hội nghị ACL 2017
Về kỹ thuật Attention trong mô hình sequence-to-sequence tại hội nghị ACL 2017Minh Pham
 
Research Methods in Natural Language Processing
Research Methods in Natural Language ProcessingResearch Methods in Natural Language Processing
Research Methods in Natural Language ProcessingMinh Pham
 
Introduction to natural language processing
Introduction to natural language processingIntroduction to natural language processing
Introduction to natural language processingMinh Pham
 

More from Minh Pham (12)

AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...
AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...
AimeLaw at ALQAC 2021: Enriching Neural Network Models with Legal-Domain Know...
 
A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...
A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...
A Multimodal Ensemble Model for Detecting Unreliable Information on Vietnames...
 
Research methods for engineering students (v.2020)
Research methods for engineering students (v.2020)Research methods for engineering students (v.2020)
Research methods for engineering students (v.2020)
 
Giới thiệu về AIML
Giới thiệu về AIMLGiới thiệu về AIML
Giới thiệu về AIML
 
Mạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiên
Mạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiênMạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiên
Mạng neural nhân tạo và ứng dụng trong xử lý ngôn ngữ tự nhiên
 
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language UnderstandingBERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
 
Deep Contexualized Representation
Deep Contexualized RepresentationDeep Contexualized Representation
Deep Contexualized Representation
 
Research Methods in Natural Language Processing (2018 version)
Research Methods in Natural Language Processing (2018 version)Research Methods in Natural Language Processing (2018 version)
Research Methods in Natural Language Processing (2018 version)
 
A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...
A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...
A Feature-Based Model for Nested Named-Entity Recognition at VLSP-2018 NER Ev...
 
Về kỹ thuật Attention trong mô hình sequence-to-sequence tại hội nghị ACL 2017
Về kỹ thuật Attention trong mô hình sequence-to-sequence  tại hội nghị ACL 2017Về kỹ thuật Attention trong mô hình sequence-to-sequence  tại hội nghị ACL 2017
Về kỹ thuật Attention trong mô hình sequence-to-sequence tại hội nghị ACL 2017
 
Research Methods in Natural Language Processing
Research Methods in Natural Language ProcessingResearch Methods in Natural Language Processing
Research Methods in Natural Language Processing
 
Introduction to natural language processing
Introduction to natural language processingIntroduction to natural language processing
Introduction to natural language processing
 

Prompt Engineering Tutorial: Cách viết prompt hiệu quả với ChatGPT

  • 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
  • 13. 13 Token là gì? https://platform.openai.com/tokenizer Đơn vị nguyên tử của của mô hình ngôn ngữ 1 token ~ 4 kí tự 100 tokens ~ 75 words (in English)
  • 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:
  • 24. 24 Các kỹ thuật viết prompt ❏ Zero-shot prompting ❏ Few-shot prompting ❏ Chain-of-thought prompting ❏ Tree-of-thought prompting ❏ Self-consistency ❏ …
  • 25. 25 Zero-shot prompting và Few-shot prompting
  • 27. 27 Zero-shot CoT Prompting Image Source: Kojima et al. (2022)
  • 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/
  • 34. 34 Vector Databases ❏ AnalyticDB ❏ Cassandra/Astra DB ❏ AzureSearch ❏ Chroma ❏ Elasticsearch ❏ Hologres ❏ … https://cookbook.openai.com/examples/vector_databases/readme
  • 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.
  • 39. 39 Function Calling (cont.) Execute internal function Task: Extract Blocks from PDF file
  • 42. 42 Function Calling (cont.) output More: OpenAI Example Notebook
  • 43. 43 Tài liệu tham khảo 1. Prompt Engineering Guide: https://www.promptingguide.ai 2. Pro Prompter: https://chat.openai.com/g/g-uSEqrEWdX-pro-prompter 3. OpenAI Prompt engineering 4. Prompt Engineering Guide by Learn Prompting 5. Prompt examples, OpenAI API 6. brexhq Prompt-Engineering 7. Prompt Engineering vs. Blind Prompting, by Mitchell Hashimoto 8. Prompt examples, by OpenAI 9. OpenAI Functional Calling