Blog FOSS by Lê Trung Nghĩa

https://letrungnghia.mangvn.org

Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Chuỗi lời nhắc

Hướng dẫn kỹ thuật lời nhắc. Kỹ thuật viết lời nhắc. Chuỗi lời nhắc

Prompt Chaining

Theo: https://www.promptingguide.ai/techniques/prompt_chaining

Giới thiệu Chuỗi lời nhắc

Video: Chuỗi lời nhắc với GPT-4o và Flowise AI (Sách hướng dẫn)

Để cải thiện độ tin cậy và hiệu suất của LLM, một trong những kỹ thuật thiết kế lời nhắc quan trọng là chia nhỏ tác vụ thành các tác vụ con. Khi các tác vụ con đó đã được xác định, LLM sẽ được nhắc nhở bằng một tác vụ con và sau đó phản hồi của nó được sử dụng làm đầu vào cho một lời nhắc khác. Đây chính là phương pháp xâu chuỗi lời nhắc, trong đó một tác vụ được chia thành các tác vụ con với mục đích tạo ra một chuỗi các thao tác nhắc.

Xâu chuỗi lời nhắc rất hữu ích để hoàn thành các tác vụ phức tạp mà LLM có thể gặp khó khăn khi được nhắc bằng một lời nhắc quá chi tiết. Trong việc xâu chuỗi nhắc nhở, các lời nhắc chuỗi thực hiện các chuyển đổi hoặc quy trình bổ sung dựa 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.

Bên cạnh việc đạt được hiệu suất tốt hơn, việc xâu chuỗi lời nhắc 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ể gỡ lỗi các vấn đề với phản hồi của mô hình dễ dàng hơn nhiều, đồng thời phân tích và cải thiện hiệu suất trong các giai đoạn khác nhau cần cải thiện.

Xâu chuỗi lời nhắc đặc biệt hữu ích khi xây dựng các trợ lý đàm thoại được LLM hỗ trợ và cải thiện tính cá nhân hóa cũng như trải nghiệm người dùng trong ứng dụng của bạn.

Các trường hợp sử dụng cho chuỗi lời nhắc

Chuỗi nhắc cho QA tài liệu

Chuỗi lời nhắc có thể được sử dụng trong các tình huống khác nhau, bao gồm nhiều thao tác hoặc chuyển đổi. Ví dụ, một trường hợp sử dụng phổ biến của LLM liên quan đến việc trả lời các câu hỏi về một tài liệu văn bản lớn. Sẽ rất hữu ích nếu bạn thiết kế hai lời nhắc khác nhau, trong đó lời nhắc đầ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à lời nhắc thứ hai lấy dữ liệu đầu vào là các trích dẫn và tài liệu gốc để trả lời câu hỏi cho trước. Nói cách khác, bạn sẽ tạo hai lời nhắc khác nhau để thực hiện nhiệm vụ trả lời một câu hỏi được đưa ra trong tài liệu.

Lời nhắc đầu tiên bên dưới trích xuất các trích dẫn liên quan từ tài liệu được đưa ra cho câu hỏi. Lưu ý rằng để đơn giản, chúng tôi đã thêm một trình giữ chỗ cho tài liệu {{document}}. Để kiểm tra lời nhắc, bạn có thể sao chép và dán một bài viết từ Wikipedia, chẳng hạn như trang này, để thiết kế lời nhắc. Do ngữ cảnh được sử dụng rộng hơn cho nhiệm vụ này, chúng tôi đang sử dụng mô hình gpt-4-1106-preview từ OpenAI. Bạn có thể sử dụng lời nhắc này với các LLM 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 được đưa ra 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 phân cách bằng ####. Vui lòng xuất danh sách trích dẫn bằng <quotes></quotes>. Trả lờ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 liên quan.
####
{{document}}
####

Sau đây là ảnh chụp màn hình toàn bộ lời nhắc bao gồm câu hỏi được truyền bằng việc sử dụng vai trò của người dùng.

Output of Prompt 1:

<quotes>
- Lời nhắc chuỗi suy nghĩ (CoT)[27]
- Lời nhắc kiến thức được tạo ra[37]
- Lời nhắc từ ít nhất đến nhiều nhất[38]
- Giải mã tính tự nhất quán[39]
- Lời nhắc dựa trên độ phức tạp[41]
- Tự tinh chỉnh[42]
- Lời nhắc cây suy nghĩ[43]
- Lời nhắc Maieutic[45]
- Lời nhắc kích thích định hướng[46]
- Đảo ngược văn bản và nhúng[59]
- Sử dụng giảm dần độ dốc để tìm kiếm lời nhắc[61][62][63][64]
- Chèn lời nhắc[65][66][67]
</quotes>

 

Các trích dẫn được trả về trong lời nhắc đầu tiên giờ đây có thể được sử dụng làm đầu vào cho lời nhắc thứ hai bên dưới. Lưu ý rằng bạn có thể dọn dẹp các trích dẫn thêm một chút, tức là xóa các trích dẫn. Các trích dẫn đó có thể được xóa hoặc sử dụng như một phần của một lời nhắc khác trong chuỗi, nhưng bạn có thể bỏ qua điều này ngay bây giờ. Lời nhắc thứ hai sau đó sẽ lấy các trích dẫn liên quan được trích xuất bởi lời nhắc 1 và chuẩn bị một câu trả lời hữu ích cho câu hỏi được đưa ra trong tài liệu và các trích dẫn được trích xuất đó. Lời nhắc thứ hai có thể như sau:

Prompt 2:

Cho một tập hợp các trích dẫn liên quan (được phân cách bằng <quotes></quotes>) được trích xuất từ một tài liệu và tài liệu gốc (được phân cách bằng ####), vui lòng soạn câu trả lời cho câu hỏi. Đảm bảo câu trả lời chính xác, có giọng điệu thân thiện và hữu ích.

####
{{document}}
####

<quotes>
- Lời nhắc chuỗi suy nghĩ (CoT)[27]
- Lời nhắc kiến thức được tạo ra[37]
- Lời nhắc từ ít nhất đến nhiều nhất[38]
- Giải mã tính nhất quán tự thân[39]
- Lời nhắc dựa trên độ phức tạp[41]
- Tự tinh chỉnh[42]
- Lời nhắc cây suy nghĩ[43]
- Lời nhắc Maieutic[45]
- Lời nhắc kích thích định hướng[46]
- Đảo ngược văn bản và nhúng[59]
- Sử dụng gradient descent để tìm kiếm lời nhắc [61][62][63][64]
- Chèn lời nhắc [65][66][67]
</quotes>

Đầu ra của Lời nhắc 2: (Output of Prompt 2:)

Các kỹ thuật nhắc được nêu trong tài liệu này bao gồm: 
1. Lời nhắc chuỗi tư duy (CoT) [27]
2. Lời nhắc kiến thức được tạo ra [37]
3. Lời nhắc từ ít nhất tới nhiều nhất [38]
4. Giải mã tự nhất quán [39]
5. Lời nhắc dựa trên sự phức tạp [41]
6. Tự tinh chỉnh [42]
7. Lời nhắc Cây tư duy [43]
8. Lời nhắc Maieutic[45]
9. Lời nhắc kích thích định hướng [46]
10. Đảo ngược văn bản và nhúng [59]
11. Sử dụng độ dốc giảm dần để tìm kiếm các lời nhắc [61][62][63][64]
12. Chèn lời nhắc [65][66][67]

Mỗi kỹ thuật này sử dụng các chiến lược riêng để tăng cường hoặc chỉ định các tương tác với các mô hình ngôn ngữ lớn nhằm tạo ra kết quả mong muốn.

Như bạn thấy, việc đơn giản hóa và tạo chuỗi lời nhắc là một phương pháp nhắc hữu ích khi các phản hồi cần trải qua nhiều thao tác hoặc chuyển đổi. Để thực hành, bạn có thể thiết kế một lời nhắc loại bỏ các trích dẫn (ví dụ: [27]) khỏi phản hồi trước khi gửi phản hồi này dưới dạng phản hồi cuối cùng cho người dùng ứng dụng của bạn.

Bạn cũng có thể tìm thêm các ví dụ về chuỗi lời nhắc trong tài liệu này, sử dụng Claude LLM. Ví dụ của chúng tôi được lấy cảm hứng và điều chỉnh từ các ví dụ của họ.

Về ‘Kỹ thuật viết lời nhắc’ ………. Phần trước ………. Phần tiếp theo

 

Video: Prompt Chaining with GPT-4o and Flowise AI (Tutorial)

Introduction to Prompt Chaining

To improve the reliability and performance of LLMs, one of the important prompt engineering techniques is to break tasks into its subtasks. Once those subtasks have been identified, the LLM is prompted with a subtask and then its response is used as input to another prompt. This is what's referred to as prompt chaining, where a task is split into subtasks with the idea to create a chain of prompt operations.

Prompt chaining is useful to accomplish complex tasks which an LLM might struggle to address if prompted with a very detailed prompt. In prompt chaining, chain prompts perform transformations or additional processes on the generated responses before reaching a final desired state.

Besides achieving better performance, prompt chaining helps to boost the transparency of your LLM application, increases controllability, and reliability. This means that you can debug problems with model responses much more easily and analyze and improve performance in the different stages that need improvement.

Prompt chaining is particularly useful when building LLM-powered conversational assistants and improving the personalization and user experience of your applications.

Use Cases for Prompt Chaining

Prompt Chaining for Document QA

Prompt chaining can be used in different scenarios that could involve several operations or transformations. For instance, one common use case of LLMs involves answering questions about a large text document. It helps if you design two different prompts where the first prompt is responsible for extracting relevant quotes to answer a question and a second prompt takes as input the quotes and original document to answer a given question. In other words, you will be creating two different prompts to perform the task of answering a question given in a document.

The first prompt below extracts the relevant quotes from the document given the question. Note that for simplicity, we have added a placeholder for the document {{document}}. To test the prompt you can copy and paste an article from Wikipedia such as this page for prompt engineering. Due to larger context used for this task, we are using the gpt-4-1106-preview model from OpenAI. You can use the prompt with other long-context LLMs like 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}}
####

Here is a screenshot of the entire prompt including the question which is passed using the user role.

Output of 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>

The quotes that were returned in the first prompt can now be used as input to the second prompt below. Note that you can clean up the quotes a bit more, i.e., remove the citations. Those citations could be removed or utilized as part of another prompt in the chain but you can ignore this for now. The second prompt then takes the relevant quotes extracted by prompt 1 and prepares a helpful response to the question given in the document and those extracted quotes. The second prompt can be the following:

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>

Output of 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.

As you can see, simplifying and creating prompt chains is a useful prompting approach where the responses need to undergo several operations or transformations. As an exercise, feel free to design a prompt that removes the citations (e.g., [27]) from the response before sending this as a final response to the user of your application.

You can also find more examples of prompt chaining in this documentation that leverages the Claude LLM. Our example is inspired and adapted from their examples.

Dịch: Lê Trung Nghĩa

letrungnghia.foss@gmail.com

 

Tác giả: Nghĩa Lê Trung