# Prompt-Verkettung

import {Screenshot} from 'components/screenshot'
import PC1 from '../../img/prompt_chaining/prompt-chaining-1.png'

## Einführung in die Prompt-Verkettung

Um die Zuverlässigkeit und Leistung von LLMs zu verbessern, ist eine der wichtigen Techniken des Promptings, Aufgaben in ihre Unteraufgaben zu zerlegen. Nachdem diese Unteraufgaben identifiziert wurden, wird das LLM mit einer Unteraufgabe gepromptet und seine Antwort dann als Input für ein weiteres Prompt verwendet. Dies wird als Prompt-Verkettung bezeichnet, bei der eine Aufgabe in Unteraufgaben aufgeteilt wird mit der Idee, eine Kette von Prompt-Operationen zu erstellen.

Die Prompt-Verkettung ist nützlich, um komplexe Aufgaben zu bewältigen, bei denen ein LLM Schwierigkeiten haben könnte, wenn es mit einem sehr detaillierten Prompt konfrontiert wird. Bei der Prompt-Verkettung führen kettengebundene Prompts Transformationen oder zusätzliche Prozesse an den generierten Antworten durch, bevor ein endgültiger gewünschter Zustand erreicht wird.

Neben der Erzielung besserer Leistung hilft die Prompt-Verkettung dabei, die Transparenz Ihrer LLM-Anwendung zu steigern, die Kontrollierbarkeit und Zuverlässigkeit zu erhöhen. Das bedeutet, dass Sie Probleme mit Modellantworten viel leichter debuggen und die Leistung in den verschiedenen Stadien, die Verbesserung benötigen, analysieren und verbessern können.

Die Prompt-Verkettung ist besonders nützlich beim Aufbau von LLM-gestützten Konversationsassistenten und der Verbesserung der Personalisierung und Benutzererfahrung Ihrer Anwendungen.

## Anwendungsfälle für Prompt-Verkettung

### Prompt-Verkettung für Dokumenten-QA

Prompt-Verkettung kann in verschiedenen Szenarien verwendet werden, die mehrere Operationen oder Transformationen beinhalten könnten. Zum Beispiel ist ein häufiger Anwendungsfall von LLMs das Beantworten von Fragen zu einem umfangreichen Textdokument. Es ist hilfreich, wenn Sie zwei verschiedene Prompts entwerfen, wobei der erste Prompt dafür zuständig ist, relevante Zitate zur Beantwortung einer Frage zu extrahieren und ein zweiter Prompt die Zitate und das Originaldokument als Input nimmt, um eine gegebene Frage zu beantworten. Anders ausgedrückt, Sie erstellen zwei verschiedene Prompts, um die Aufgabe der Beantwortung einer Frage zu einem Dokument durchzuführen.

Der erste Prompt unten extrahiert die relevanten Zitate aus dem Dokument anhand der Frage. Beachten Sie, dass wir zur Vereinfachung einen Platzhalter für das Dokument `{{document}}` hinzugefügt haben. Um den Prompt zu testen, können Sie einen Artikel von Wikipedia kopieren und einfügen, wie diese Seite über [Prompt-Engineering](https://en.wikipedia.org/wiki/Prompt_engineering). Aufgrund des größeren Kontexts, der für diese Aufgabe verwendet wird, nutzen wir das `gpt-4-1106-preview` Modell von OpenAI. Sie können den Prompt auch mit anderen LLMs für lange Kontexte wie Claude verwenden.

Prompt 1:
```
You are a helpful assistant. Your task is to help answer a question given 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}}
####
```

Hier ist ein Screenshot des gesamten Prompts, einschließlich der Frage, die mit der Rolle `user` übergeben wird.

<Screenshot src={PC1} alt="Prompt-Verkettung Teil 1" />

Ausgabe von 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>
```

Die Zitate, die im ersten Prompt zurückgegeben wurden, können nun als Input für den zweiten Prompt unten verwendet werden. Beachten Sie, dass Sie die Zitate noch etwas bereinigen können, d.h. die Zitationen entfernen. Diese Zitationen könnten entfernt oder als Teil eines weiteren Prompts in der Kette genutzt werden, aber das ignorieren wir jetzt. Der zweite Prompt nimmt dann die relevanten Zitate, die durch Prompt 1 extrahiert wurden, und bereitet eine hilfreiche Antwort auf die Frage anhand des Dokuments und dieser extrahierten Zitate vor. Der zweite Prompt kann folgendes sein:

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>
```

Ausgabe von 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.
```

Wie Sie sehen können, ist die Vereinfachung und Erstellung von Prompt-Ketten ein nützlicher Ansatz für das Prompting, bei dem die Antworten mehrere Operationen oder Transformationen durchlaufen müssen. Als Übung können Sie sich gerne einen Prompt entwerfen, der die Zitationen (z.B. [27]) aus der Antwort entfernt, bevor diese als endgültige Antwort an den Nutzer Ihrer Anwendung gesendet wird.

Weitere Beispiele für Prompt-Verkettung finden Sie in dieser [Dokumentation](https://docs.anthropisch.com/claude/docs/prompt-chaining), die das Claude LLM einsetzt. Unser Beispiel ist inspiriert und übernommen von ihren Beispielen.
