Bạn đã biết gì về prompt engineering? (P4) - Học được gì từ chiến lược thiết kế prompt của các kỹ sư Google?
Trong API docs của Google cung cấp cho mô hình Gemini, có mục Prompt design strategies, tức một số chiến lược chúng ta có thể áp dụng khi thiết kế prompt cho mô hình ngôn ngữ lớn. Tuy đây là tài liệu dành cho Gemini nhưng mình thấy nó hoàn toàn có thể áp dụng cho các LLM khác. Hãy cùng xem các kỹ sư Google có cho chúng ta biết thêm điều gì hay ho mới mẻ về prompt engineering không nhé:
1. Cung cấp chỉ dẫn rõ ràng và cụ thể
Đưa ra chỉ dẫn cho mô hình về những việc cần làm là một cách đơn giản và hiệu quả để tùy chỉnh hành vi của mô hình. Hãy đảm bảo rằng các chỉ dẫn đưa ra là rõ ràng và cụ thể.
- Xác định nhiệm vụ cần thực hiện: Mô tả chi tiết nhiệm vụ mà bạn muốn mô hình thực hiện.
- Đưa ra các ràng buộc: Cho mô hình biết những gì nên làm và không nên làm.
- Xác định định dạng của phản hồi: Đưa ra hướng dẫn chỉ định định dạng (format) của phản hồi. Ví dụ: bạn có thể yêu cầu mô hình đưa ra phản hồi dưới dạng bảng, dạng json, danh sách gạch đầu dòng, danh sách từ khóa, câu hoặc đoạn văn.
2. Cung cấp ví dụ (few-shot)
Bạn có thể đưa vào prompt các ví dụ về các phản hồi đúng. Từ các ví dụ, mô hình sẽ cố gắng xác định các pattern và mối quan hệ để áp dụng khi tạo phản hồi. Few-shot prompting thường được sử dụng để điều chỉnh định dạng, cách diễn đạt, phạm vi hoặc khuôn mẫu chung của phản hồi. Hãy sử dụng các ví dụ cụ thể và đa dạng để giúp mô hình xác định trọng tâm và tạo ra kết quả chính xác hơn.
Zero-shot prompt có thể sẽ kém hiệu quả hơn few-shot vì các ví dụ giúp cho mô hình biết cách áp dụng chỉ dẫn. Trên thực tế, nếu ví dụ đủ rõ ràng và đủ tốt, thậm chí bạn có thể không cần cung cấp chỉ dẫn cho mô hình.
- Tìm số lượng ví dụ tối ưu: Bạn có thể thử nghiệm với số lượng ví dụ cung cấp trong lời nhắc để có kết quả đúng như mong muốn nhất. Các mô hình như PaLM và Gemini thường có thể nắm được các pattern bằng cách sử dụng một vài ví dụ, các mô hình đơn giản hơn như BERT có thể cần nhiều hơn. Tuy nhiên, nếu đưa vào quá nhiều ví dụ có thể dẫn đến overfit.
- Sử dụng các ví dụ để cho mô hình thấy những gì cần làm theo sẽ hiệu quả hơn so với việc chỉ cho mô hình những gì cần tránh.
- Cung cấp định dạng nhất quán cho các ví dụ: Đảm bảo rằng cấu trúc và định dạng của các ví dụ giống nhau để tránh phản hồi có định dạng không mong muốn, hãy đặc biệt chú ý đến thẻ XML, khoảng trắng, xuống dòng, vv.
3. Cung cấp thông tin ngữ cảnh
Bạn có thể đưa vào prompt các hướng dẫn và thông tin mà mô hình cần để giải quyết vấn đề thay vì cho rằng mô hình có tất cả thông tin cần thiết. Thông tin theo ngữ cảnh này giúp mô hình hiểu được các ràng buộc và chi tiết về những gì bạn yêu cầu nó thực hiện.
4. Thêm tiền tố (prefix)
Tiền tố là một từ hoặc cụm từ mà bạn thêm vào nội dung prompt để phục vụ một số mục đích, tùy thuộc vào vị trí bạn đặt tiền tố:
- Tiền tố đầu vào: được thêm vào đầu vào giúp chỉ ra các phần quan trọng về mặt ngữ nghĩa của đầu vào cho mô hình. Ví dụ: tiền tố "tiếng Anh:" và "tiếng Pháp:" phân định hai ngôn ngữ khác nhau.
- Tiền tố đầu ra: Mặc dù đầu ra do mô hình tạo ra nhưng bạn có thể thêm tiền tố cho đầu ra trong lời nhắc. Tiền tố đầu ra cung cấp cho mô hình thông tin về những gì được mong đợi dưới dạng phản hồi. Ví dụ: tiền tố đầu ra "JSON:" báo hiệu cho mô hình rằng đầu ra phải ở định dạng JSON.
- Tiền tố ví dụ: Trong few-shot prompts, việc thêm tiền tố vào ví dụ sẽ cung cấp các nhãn mà mô hình có thể sử dụng khi tạo đầu ra, giúp xử lý (parsing) nội dung đầu ra dễ dàng hơn.
Trong ví dụ sau, "Text:" là tiền tố đầu vào và "The answer is:" là tiền tố đầu ra
Classify the text as one of the following categories.
- large
- small
Text: Rhino
The answer is: large
Text: Mouse
The answer is: small
Text: Snail
Mỗi request mà bạn gửi đến một mô hình bao gồm các giá trị tham số giúp kiểm soát cách mô hình tạo ra phản hồi. Mô hình có thể tạo ra các kết quả khác nhau cho các giá trị tham số khác nhau. Thử nghiệm với các giá trị tham số khác nhau để có được kết quả tốt nhất cho nhiệm vụ. Một số loại tham số phổ biến:
Max output tokens
: Số lượng token tối đa có thể được tạo trong phản hồi. 100 token tương ứng với khoảng 20 từ tiếng Anh.Temperature
: kiểm soát mức độ ngẫu nhiên trong việc lựa chọn token. Temperature cao hơn có thể dẫn đến kết quả đa dạng hoặc sáng tạo hơn. Nhiệt độ bằng 0 mang tính tất định, nghĩa là phản hồi có xác suất cao nhất luôn được chọn. Đối với hầu hết các trường hợp, hãy thử bắt đầu với nhiệt độ 0,2. Nếu mô hình trả về phản hồi quá chung chung, quá ngắn hoặc mô hình đưa ra phản hồi dự phòng, hãy tăng dần lên.Top-K
: giá trị thấp hơn cho các phản hồi ít ngẫu nhiên hơn và giá trị cao hơn cho các phản hồi ngẫu nhiên hơn. Top-K mặc định là 40.Top-P
: giá trị thấp hơn cho các phản hồi ít ngẫu nhiên hơn và giá trị cao hơn cho các phản hồi ngẫu nhiên hơn. Top-P mặc định là 0,95.
8. Chiến lược Prompt iteration
Thiết kế prompt là một quá trình lặp đi lặp lại, ít nhất là một vài lần trước khi bạn thu được một version có thể tạo ra phản hồi mong muốn một cách nhất quán. Một số điều bạn có thể thử:
- Sử dụng các từ hoặc cách diễn đạt khác nhau trong prompt thường mang lại những phản hồi khác nhau từ mô hình mặc dù tất cả chúng đều có cùng một ý nghĩa. Nếu bạn không nhận được kết quả mong đợi từ prompt của mình, hãy thử diễn đạt lại nó. Nếu bạn không thể yêu cầu mô hình làm theo hướng dẫn của mình cho một nhiệm vụ, hãy thử đưa ra hướng dẫn cho mô hình về một nhiệm vụ tương tự.
Version 1:
How do I bake a pie?
Version 2:
Suggest a recipe for a pie.
Version 3:
What's a good pie recipe?
- Thay đổi thứ tự các thành phần của prompt: Hãy thử thay đổi thứ tự nội dung của prompt và xem điều đó ảnh hưởng như thế nào đến phản hồi.
9. Phản hồi dự phòng (fallback)
Phản hồi dự phòng là phản hồi được mô hình trả về khi prompt hoặc bản thân phản hồi của mô hình kích hoạt bộ lọc an toàn (safety filter). Ví dụ như: "I'm not able to help with that, as I'm only a language model"
. Nếu mô hình phản hồi bằng phản hồi dự phòng, hãy thử tăng tham số temperature
.
10. Những điều cần tránh
- Tránh dựa vào mô hình để đưa ra các thông tin có tính thực tế, fact.
- Các vấn đề về toán học và logic
All rights reserved