Bài này giới thiệu prompt chaining (xâu chuỗi prompt): chia một tác vụ thành các tác vụ con và nối các prompt lại với nhau, kèm ví dụ hỏi đáp trên tài liệu.
Giới thiệu prompt chaining
Video kèm bài: Prompt Chaining trên YouTube.
Để cải thiện độ tin cậy và hiệu năng của LLM, một kỹ thuật prompt engineering quan trọng là chia tác vụ thành các tác vụ con. Khi đã xác định các tác vụ con, LLM được prompt với một tác vụ con, rồi câu trả lời của nó được dùng làm đầu vào cho một prompt khác. Đó là prompt chaining: tác vụ được chia thành các tác vụ con với ý tưởng tạo ra một chuỗi các thao tác prompt.
Prompt chaining hữu ích để hoàn thành các tác vụ phức tạp mà LLM có thể gặp khó nếu chỉ được prompt bằng một prompt rất chi tiết. Trong prompt chaining, các prompt trong chuỗi thực hiện biến đổi hoặc xử lý bổ sung trên các câu trả lời được sinh ra, trước khi đạt trạng thái cuối cùng mong muốn.
Ngoài việc đạt hiệu năng tốt hơn, prompt chaining giúp tă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. Nghĩa là bạn có thể gỡ lỗi các vấn đề trong câu trả lời của model dễ hơn nhiều, đồng thời phân tích và cải thiện hiệu năng ở các giai đoạn cần cải thiện.
Prompt chaining đặc biệt hữu ích khi xây trợ lý hội thoại chạy bằng LLM và khi cải thiện khả năng cá nhân hoá, trải nghiệm người dùng của ứng dụng.
Trường hợp sử dụng
Prompt chaining cho hỏi đáp trên tài liệu
Prompt chaining có thể dùng trong nhiều kịch bản gồm nhiều thao tác hoặc biến đổi. 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. Sẽ có ích nếu bạn thiết kế hai prompt khác nhau: prompt thứ nhất chịu trách nhiệm trích các trích dẫn liên quan để trả lời câu hỏi, và prompt thứ hai nhận đầu vào là các trích dẫn cùng tài liệu gốc để trả lời câu hỏi. Nói cách khác, bạn tạo hai prompt khác nhau để thực hiện tác vụ trả lời một câu hỏi dựa trên tài liệu.
Prompt thứ nhất dưới đây trích các trích dẫn liên quan từ tài liệu theo câu hỏi. Lưu ý rằng để đơn giản, chúng ta dùng một placeholder cho tài liệu là {{document}}. Để thử prompt, bạn có thể sao chép và dán một bài viết Wikipedia, như trang về prompt engineering. Do tác vụ này dùng ngữ cảnh lớn, ví dụ dùng model gpt-4-1106-preview của OpenAI. Bạn có thể dùng prompt với các LLM có ngữ cảnh dài khác như Claude.
Prompt 1:
You are a helpful assistant. Your task is to help answer a question given in a document. The first step is to extract quotes relevant to the question from the document, delimited by ####. Please output the list of quotes using <quotes></quotes>. Respond with "No relevant quotes found!" if no relevant quotes were found.
####
{{document}}
####
Đây là ảnh chụp toàn bộ prompt, gồm cả câu hỏi được truyền qua vai trò user.

Đầu ra 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 trả về ở prompt thứ nhất giờ có thể dùng làm đầu vào cho prompt thứ hai dưới đây. Lưu ý bạn có thể làm sạch trích dẫn thêm, tức bỏ các chú thích nguồn. Các chú thích đó có thể bị bỏ đi hoặc được dùng trong một prompt khác của chuỗi, nhưng tạm thời có thể bỏ qua. Sau đó prompt thứ hai nhận các trích dẫn liên quan do prompt 1 trích ra và soạn một câu trả lời hữu ích cho câu hỏi dựa trên tài liệu và các trích dẫn đó. Prompt thứ hai có thể như sau:
Prompt 2:
Given a set of relevant quotes (delimited by <quotes></quotes>) extracted from a document and the original document (delimited by ####), please compose an answer to the question. Ensure that the answer is accurate, has a friendly tone, and sounds helpful.
####
{{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>
Đầu ra của prompt 2:
The prompting techniques mentioned in the document include:
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.
Như bạn thấy, đơn giản hoá và tạo chuỗi prompt là cách tiếp cận hữu ích khi câu trả lời cần trải qua nhiều thao tác hoặc biến đổi. Để luyện tập, bạn hãy thử thiết kế một prompt bỏ các chú thích nguồn (ví dụ [27]) khỏi câu trả lời trước khi gửi nó làm câu trả lời cuối cùng cho người dùng ứng dụng.
Bạn cũng có thể tìm thêm ví dụ về prompt chaining trong tài liệu này, dùng LLM Claude. Ví dụ trong bài được lấy cảm hứng và phỏng theo các ví dụ đó.
Nguồn
- Dịch và biên tập từ dair-ai/Prompt-Engineering-Guide · pages/techniques/prompt_chaining.en.mdx, giấy phép MIT.