Prompt engineering
Khái niệm cốt lõi
Prompt Engineering là quá trình cải thiện một prompt bạn đã viết để có được kết quả đáng tin cậy và chất lượng cao hơn. Điều quan trọng là đây không phải một lần làm xong mà là một quá trình cải tiến lặp đi lặp lại - bạn bắt đầu với một prompt cơ bản, đánh giá hiệu suất của nó, rồi áp dụng các kỹ thuật cụ thể để cải thiện cho đến khi đạt kết quả mong muốn.
Quy trình 5 bước chi tiết
1. Đặt mục tiêu rõ ràng
Trước khi viết bất cứ thứ gì, bạn phải định nghĩa chính xác prompt cần hoàn thành nhiệm vụ gì. Mục tiêu càng cụ thể, việc đánh giá sau này càng dễ dàng.
2. Viết prompt ban đầu
Tạo một phiên bản đầu tiên cơ bản, thậm chí có thể "ngây thơ". Đừng cố gắng làm hoàn hảo ngay từ đầu - điều này chỉ để tạo baseline để so sánh.
3. Đánh giá prompt
Test prompt với các tiêu chí đã định trước. Khóa học nhấn mạnh việc có một hệ thống đánh giá khách quan, không chỉ dựa vào cảm nhận chủ quan.
4. Áp dụng kỹ thuật prompt engineering
Sử dụng các phương pháp cụ thể để cải thiện hiệu suất (khóa học không detail các kỹ thuật này trong phần tóm tắt).
5. Đánh giá lại
Xác minh rằng những thay đổi thực sự mang lại cải thiện. Điều này rất quan trọng vì không phải mọi thay đổi đều tốt hơn.
Bạn lặp lại bước 4-5 cho đến khi hài lòng với kết quả. Mỗi lần lặp phải cho thấy cải thiện có thể đo lường trong điểm đánh giá.
Ví dụ thực tế: Thực đơn cho vận động viên
Khóa học sử dụng một case study cụ thể để minh họa: tạo prompt viết thực đơn 1 ngày cho vận động viên. Prompt này cần:
Hệ thống đánh giá tự động
PromptEvaluator Class
Khóa học giới thiệu một công cụ tự động để đánh giá prompt:
python
evaluator = PromptEvaluator(max_concurrent_tasks=5)
Lưu ý quan trọng: Bắt đầu với max_concurrent_tasks=3 để tránh bị rate limit. Chỉ tăng lên khi API quota cho phép xử lý nhanh hơn.
Tạo dữ liệu test tự động
Thay vì phải tự viết từng test case, hệ thống có thể tự động tạo:
python
dataset = evaluator.generate_dataset(
task_description="Write a compact, concise 1 day meal plan for a single athlete",
prompt_inputs_spec={
"height": "Athlete's height in cm",
"weight": "Athlete's weight in kg",
"goal": "Goal of the athlete",
"restrictions": "Dietary restrictions of the athlete"
},
output_file="dataset.json",
num_cases=3
)
Chiến lược thông minh: Sử dụng ít test cases (2-3) trong giai đoạn phát triển để tăng tốc độ lặp. Chỉ tăng số lượng cho validation cuối cùng.
Ví dụ prompt ban đầu (cố ý làm đơn giản)
python
def run_prompt(prompt_inputs):
prompt = f"""
What should this person eat?
- Height: {prompt_inputs["height"]}
- Weight: {prompt_inputs["weight"]}
- Goal: {prompt_inputs["goal"]}
- Dietary restrictions: {prompt_inputs["restrictions"]}
"""
messages = []
add_user_message(messages, prompt)
return chat(messages)
Prompt này cố ý rất cơ bản và sẽ cho kết quả kém, nhưng nó tạo ra một baseline để đo lường sự cải thiện.
Tiêu chí đánh giá cụ thể
Khi chạy evaluation, bạn có thể chỉ định thêm tiêu chí:
python
results = evaluator.run_evaluation(
run_prompt_function=run_prompt,
dataset_file="dataset.json",
extra_criteria="""
The output should include:
- Daily caloric total
- Macronutrient breakdown
- Meals with exact foods, portions, and timing
"""
)
Điều này đảm bảo prompt được đánh giá theo những yêu cầu cụ thể quan trọng cho use case của bạn.
Phân tích kết quả và tâm lý quan trọng
Không nên nản lòng với điểm số thấp ban đầu
Khóa học nhấn mạnh rằng điểm 2.3/10 cho lần đầu là bình thường. Đây không phải là thất bại mà là điểm xuất phát tự nhiên. Mục tiêu là thấy sự cải thiện nhất quán qua từng lần lặp.
Báo cáo chi tiết HTML
Sau mỗi lần đánh giá, bạn nhận được:
Báo cáo chi tiết giúp bạn hiểu chính xác prompt thất bại ở đâu và cần cải thiện gì. Đây là thông tin vô giá để hướng dẫn iteration tiếp theo, thay vì đoán mò.

Khái niệm cốt lõi
Prompt Engineering là quá trình cải thiện một prompt bạn đã viết để có được kết quả đáng tin cậy và chất lượng cao hơn. Điều quan trọng là đây không phải một lần làm xong mà là một quá trình cải tiến lặp đi lặp lại - bạn bắt đầu với một prompt cơ bản, đánh giá hiệu suất của nó, rồi áp dụng các kỹ thuật cụ thể để cải thiện cho đến khi đạt kết quả mong muốn.
Quy trình 5 bước chi tiết
1. Đặt mục tiêu rõ ràng
Trước khi viết bất cứ thứ gì, bạn phải định nghĩa chính xác prompt cần hoàn thành nhiệm vụ gì. Mục tiêu càng cụ thể, việc đánh giá sau này càng dễ dàng.
2. Viết prompt ban đầu
Tạo một phiên bản đầu tiên cơ bản, thậm chí có thể "ngây thơ". Đừng cố gắng làm hoàn hảo ngay từ đầu - điều này chỉ để tạo baseline để so sánh.
3. Đánh giá prompt
Test prompt với các tiêu chí đã định trước. Khóa học nhấn mạnh việc có một hệ thống đánh giá khách quan, không chỉ dựa vào cảm nhận chủ quan.
4. Áp dụng kỹ thuật prompt engineering
Sử dụng các phương pháp cụ thể để cải thiện hiệu suất (khóa học không detail các kỹ thuật này trong phần tóm tắt).
5. Đánh giá lại
Xác minh rằng những thay đổi thực sự mang lại cải thiện. Điều này rất quan trọng vì không phải mọi thay đổi đều tốt hơn.
Bạn lặp lại bước 4-5 cho đến khi hài lòng với kết quả. Mỗi lần lặp phải cho thấy cải thiện có thể đo lường trong điểm đánh giá.
Ví dụ thực tế: Thực đơn cho vận động viên
Khóa học sử dụng một case study cụ thể để minh họa: tạo prompt viết thực đơn 1 ngày cho vận động viên. Prompt này cần:
- Input: Chiều cao, cân nặng, mục tiêu, hạn chế ăn kiêng của vận động viên
- Output: Kế hoạch ăn uống toàn diện cho một ngày
Hệ thống đánh giá tự động
PromptEvaluator Class
Khóa học giới thiệu một công cụ tự động để đánh giá prompt:
python
evaluator = PromptEvaluator(max_concurrent_tasks=5)
Lưu ý quan trọng: Bắt đầu với max_concurrent_tasks=3 để tránh bị rate limit. Chỉ tăng lên khi API quota cho phép xử lý nhanh hơn.
Tạo dữ liệu test tự động
Thay vì phải tự viết từng test case, hệ thống có thể tự động tạo:
python
dataset = evaluator.generate_dataset(
task_description="Write a compact, concise 1 day meal plan for a single athlete",
prompt_inputs_spec={
"height": "Athlete's height in cm",
"weight": "Athlete's weight in kg",
"goal": "Goal of the athlete",
"restrictions": "Dietary restrictions of the athlete"
},
output_file="dataset.json",
num_cases=3
)
Chiến lược thông minh: Sử dụng ít test cases (2-3) trong giai đoạn phát triển để tăng tốc độ lặp. Chỉ tăng số lượng cho validation cuối cùng.
Ví dụ prompt ban đầu (cố ý làm đơn giản)
python
def run_prompt(prompt_inputs):
prompt = f"""
What should this person eat?
- Height: {prompt_inputs["height"]}
- Weight: {prompt_inputs["weight"]}
- Goal: {prompt_inputs["goal"]}
- Dietary restrictions: {prompt_inputs["restrictions"]}
"""
messages = []
add_user_message(messages, prompt)
return chat(messages)
Prompt này cố ý rất cơ bản và sẽ cho kết quả kém, nhưng nó tạo ra một baseline để đo lường sự cải thiện.
Tiêu chí đánh giá cụ thể
Khi chạy evaluation, bạn có thể chỉ định thêm tiêu chí:
python
results = evaluator.run_evaluation(
run_prompt_function=run_prompt,
dataset_file="dataset.json",
extra_criteria="""
The output should include:
- Daily caloric total
- Macronutrient breakdown
- Meals with exact foods, portions, and timing
"""
)
Điều này đảm bảo prompt được đánh giá theo những yêu cầu cụ thể quan trọng cho use case của bạn.
Phân tích kết quả và tâm lý quan trọng
Không nên nản lòng với điểm số thấp ban đầu
Khóa học nhấn mạnh rằng điểm 2.3/10 cho lần đầu là bình thường. Đây không phải là thất bại mà là điểm xuất phát tự nhiên. Mục tiêu là thấy sự cải thiện nhất quán qua từng lần lặp.
Báo cáo chi tiết HTML
Sau mỗi lần đánh giá, bạn nhận được:
- Điểm số: Đánh giá định lượng
- Báo cáo HTML chi tiết: Cho thấy chính xác từng test case hoạt động như thế nào, bao gồm cả lý do model đưa ra điểm số đó
Báo cáo chi tiết giúp bạn hiểu chính xác prompt thất bại ở đâu và cần cải thiện gì. Đây là thông tin vô giá để hướng dẫn iteration tiếp theo, thay vì đoán mò.