Để cải thiện độ tin cậy và hiệu suất của các mô hình ngôn ngữ lớn (LLMs), một trong những kỹ thuật prompt engineering quan trọng là chia nhỏ nhiệm vụ thành các nhiệm vụ con. Khi đã xác định được các nhiệm vụ con, LLM sẽ được đưa vào một prompt nhiệm vụ con và sau đó phản hồi của nó được sử dụng làm đầu vào cho prompt khác. Đây là cách mà prompt chaining hoạt động, tức là chia một nhiệm vụ lớn thành các nhiệm vụ nhỏ hơn để tạo ra một chuỗi các hoạt động prompt.
Prompt chaining rất hữu ích để hoàn thành các nhiệm vụ phức tạp mà LLM có thể gặp khó khăn nếu được đưa ra một prompt quá chi tiết. Trong prompt chaining, các prompt trong chuỗi thực hiện các biến đổi hoặc các quá trình bổ sung trên các phản hồi được tạo ra trước khi đạt đến trạng thái mong muốn cuối cùng.
Ngoài việc đạt được hiệu suất tốt hơn, prompt chaining còn giúp tăng cường tính minh bạch của ứng dụng LLM, tăng khả năng kiểm soát và độ tin cậy. Điều này có nghĩa là bạn có thể dễ dàng phát hiện và sửa lỗi trong phản hồi của mô hình, cũng như phân tích và cải thiện hiệu suất ở các giai đoạn cần cải thiện.
Prompt chaining đặc biệt hữu ích khi xây dựng các trợ lý hội thoại dựa trên LLM và cải thiện tính cá nhân hóa và trải nghiệm người dùng của ứng dụng của bạn.
Các trường hợp sử dụng của Prompt Chaining
Prompt Chaining cho Document QA (Tài liệu hỏi đáp)
Prompt chaining có thể được sử dụng trong nhiều tình huống khác nhau, bao gồm các hoạt động hoặc biến đổi khác nhau. Ví dụ, một trường hợp sử dụng phổ biến của LLM là trả lời câu hỏi về một tài liệu văn bản lớn. Bạn có thể thiết kế hai prompt khác nhau, trong đó prompt đầu tiên chịu trách nhiệm trích xuất các trích dẫn liên quan để trả lời câu hỏi và prompt thứ hai sử dụng các trích dẫn và tài liệu gốc để trả lời câu hỏi. Nói cách khác, bạn sẽ tạo ra hai prompt khác nhau để thực hiện nhiệm vụ trả lời câu hỏi trong một tài liệu.
Prompt đầu tiên dưới đây trích xuất các trích dẫn liên quan từ tài liệu dựa trên câu hỏi. Lưu ý rằng để đơn giản hóa, mình đã thêm một chỗ giữ chỗ cho tài liệu {{document}}. Để thử prompt, bạn có thể sao chép và dán một bài viết từ Wikipedia như trang này về prompt engineering. Do ngữ cảnh lớn hơn được sử dụng cho nhiệm vụ này, mình đang sử dụng mô hình gpt-4-1106-preview từ OpenAI. Bạn có thể sử dụng prompt với các mô hình LLM có ngữ cảnh dài khác như Claude.
Prompt 1:
Bạn là một trợ lý hữu ích. Nhiệm vụ của bạn là giúp trả lời một câu hỏi trong tài liệu. Bước đầu tiên là trích xuất các trích dẫn liên quan đến câu hỏi từ tài liệu, được giới hạn bởi ####. Vui lòng xuất danh sách các trích dẫn sử dụng <quotes></quotes>. Phản hồi với "Không tìm thấy trích dẫn liên quan!" nếu không tìm thấy trích dẫn nào liên quan.
###
{{document}}
###
Output của Prompt 1:
<quotes>
- Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</quotes>
Các trích dẫn được trả về trong prompt đầu tiên giờ có thể được sử dụng làm đầu vào cho prompt thứ hai dưới đây. Lưu ý rằng bạn có thể dọn dẹp các trích dẫn một chút, ví dụ như loại bỏ các trích dẫn tham khảo. Các trích dẫn tham khảo này có thể bị loại bỏ hoặc sử dụng như một phần của một prompt khác trong chuỗi, nhưng bạn có thể bỏ qua điều này lúc này. Prompt thứ hai sau đó lấy các trích dẫn liên quan được trích xuất bởi prompt 1 và chuẩn bị một phản hồi hữu ích cho câu hỏi trong tài liệu và các trích dẫn đó. Prompt thứ hai có thể là như sau:
Prompt 2:
Dựa trên một tập hợp các trích dẫn liên quan (giới hạn bởi <quotes></quotes>) được trích xuất từ một tài liệu và tài liệu gốc (giới hạn bởi ####), vui lòng soạn một câu trả lời cho câu hỏi. Đảm bảo rằng câu trả lời chính xác, có giọng điệu thân thiện và nghe có vẻ hữu ích.
####
{{document}}
####
<quotes>
- Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</quotes>
Output của Prompt 2:
Các kỹ thuật prompt được đề cập trong tài liệu bao gồm:
1. Chain-of-thought (CoT) prompting[27]
2. Generated knowledge prompting[37]
3. Least-to-most prompting[38]
4. Self-consistency decoding[39]
5. Complexity-based prompting[41]
6. Self-refine[42]
7. Tree-of-thought prompting[43]
8. Maieutic prompting[45]
9. Directional-stimulus prompting[46]
10. Textual inversion and embeddings[59]
11. Using gradient descent to search for prompts[61][62][63][64]
12. Prompt injection[65][66][67]
Each of these techniques employs unique strategies to enhance or specify the interactions with large language models to produce the desired outcomes.
Mỗi kỹ thuật này sử dụng các chiến lược độc đáo để tăng cường hoặc xác định tương tác với các mô hình ngôn ngữ lớn để tạo ra kết quả mong muốn.
Như bạn có thể thấy, đơn giản hóa và tạo chuỗi prompt là một phương pháp hữu ích khi các phản hồi cần trải qua nhiều hoạt động hoặc biến đổi. Như một bài tập, bạn có thể thiết kế một prompt để loại bỏ các trích dẫn tham khảo (ví dụ, [27]) từ phản hồi trước khi gửi phản hồi cuối cùng này cho người dùng của ứng dụng của bạn.