Erstellen eines Copilots mit Prompt Flow
Nachdem Sie Daten in Azure AI Studio hochgeladen und einen Index für Ihre Daten mithilfe der Integration in Azure AI Search erstellt haben, können Sie das RAG-Muster mit Prompt Flow implementieren, um eine Copilot-Anwendung zu erstellen.
Prompt Flow ist ein Entwicklungsframework zum Definieren von Flows, die Interaktionen mit einem LLM organisieren.
Ein Flow beginnt mit einer oder mehreren Eingaben, in der Regel einer Frage oder Aufforderung, die von einem Benutzenden eingegeben wird, und im Falle von iterativen Unterhaltungen mit dem Chatverlauf bis zu diesem Punkt.
Der Flow wird dann als eine Reihe verbundener Tools definiert, von denen jeder einen bestimmten Vorgang für die Eingaben und andere Umgebungsvariablen ausführt. Es gibt mehrere Arten von Tools, die Sie in einen prompt flow einbeziehen können, um Aufgaben auszuführen, z. B.:
- Ausführen von benutzerdefiniertem Python-Code
- Nachschlagen von Datenwerten in einem Index
- Erstellen von Eingabeaufforderungsvarianten – Sie können mehrere Versionen einer Eingabeaufforderung für ein großes Sprachmodell (LLM), unterschiedliche Systemmeldungen oder Eingabeaufforderungen definieren und die Ergebnisse aus den einzelnen Varianten vergleichen und auswerten.
- Senden einer Eingabeaufforderung an eine LLM zum Generieren von Ergebnissen.
Schließlich verfügt der Flow über eine oder mehrere Ausgaben, in der Regel, um die generierten Ergebnisse aus einem LLM zurückzugeben.
Verwenden des RAG-Musters in einem prompt flow
Der Schlüssel zur Verwendung des RAG-Musters in einem Eingabeaufforderungsfluss besteht darin, ein Index-Nachschlagetool zum Abrufen von Daten aus einem Index zu verwenden, sodass nachfolgende Tools im Flow die Ergebnisse verwenden können, um die Eingabeaufforderung zu erweitern, die zum Generieren der Ausgabe aus einem LLM verwendet wird.
Verwenden eines Beispiels zum Erstellen eines Chatflows
Der Prompt Flow bietet verschiedene Beispiele, die Sie als Ausgangspunkt zum Erstellen einer Anwendung verwenden können. Wenn Sie RAG und ein Sprachmodell in Ihrer Anwendung kombinieren möchten, können Sie das Beispiel Multi-Round Q&A in Ihren Daten klonen.
Das Beispiel enthält die erforderlichen Elemente, um RAG und ein Sprachmodell einzuschließen:
- Fügen Sie den Verlauf an die Chateingabe an, um einen Prompt in Form einer kontextbezogenen Form einer Frage zu definieren.
- Suchen Sie relevante Informationen aus Ihren Daten mithilfe ihres Suchindexes.
- Generieren Sie den Prompt Flow-Kontext, indem Sie die abgerufenen Daten aus dem Index verwenden, um die Frage zu erweitern.
- Erstellen Sie Prompt-Varianten, indem Sie eine Systemnachricht hinzufügen und den Chatverlauf strukturieren.
- Senden Sie den Prompt an ein Sprachmodell, das eine natürliche Sprachantwort generiert.
Im Folgenden werden diese einzelnen Elemente ausführlicher untersucht.
Abfrage mit Verlauf ändern
Der erste Schritt im Flow ist ein LLM-Knoten (Large Language Model), der den Chatverlauf und die letzte Frage des Benutzers übernimmt und eine neue Frage generiert, die alle erforderlichen Informationen enthält. Auf diese Weise generieren Sie prägnantere Eingaben, die vom Rest des Flows verarbeitet werden.
Nachschlagen relevanter Informationen
Als Nächstes verwenden Sie das Index-Lookup-Tool, um den Suchindex abzufragen, den Sie mit dem integrierten Azure KI-Suche-Feature erstellt haben, und suchen die relevanten Informationen aus Ihrer Datenquelle.
Tipp
Erfahren Sie mehr über das Index-Lookup-Tool.
Generieren des Prompt-Kontexts
Die Ausgabe des Index-Lookup-Tools ist der abgerufene Kontext, den Sie beim Generieren einer Antwort an den Benutzer verwenden möchten. Sie möchten die Ausgabe in einem Prompt verwenden, die an ein Sprachmodell gesendet wird. Dies bedeutet, dass Sie die Ausgabe in ein geeigneteres Format parsen möchten.
Die Ausgabe des IIndex-Lookup-Tool kann die obersten n Ergebnisse enthalten (abhängig von den von Ihnen festgelegten Parametern). Wenn Sie den Prompt-Kontext generieren, können Sie einen Python-Knoten verwenden, um die abgerufenen Dokumente aus Ihrer Datenquelle zu durchlaufen und deren Inhalte und Quellen in einer Dokumentzeichenfolge zu kombinieren. Die Zeichenfolge wird in dem Prompt verwendet, den Sie im nächsten Schritt des Flows an das Sprachmodell senden.
Definieren von Aufforderungsvarianten
Wenn Sie den Prompt erstellen, den Sie an Ihr Sprachmodell senden möchten, können Sie Varianten verwenden, um unterschiedliche Prompt-Inhalte darzustellen.
Wenn Sie RAG in Ihren Chatflow einschließen, ist Ihr Ziel, die Antworten des Chatbots zu erden. Neben dem Abrufen des relevanten Kontexts aus Ihrer Datenquelle können Sie auch die Erdung der Reaktion des Chatbots beeinflussen, indem Sie ihn anweisen, den Kontext zu verwenden und sachlich zu sein.
Mit den Prompt-Varianten können Sie unterschiedliche Systemmeldungen in dem Prompt bereitstellen, um zu untersuchen, welche Inhalte die größtmögliche Erdung bieten.
Chat mit Kontext
Schließlich verwenden Sie einen LLM-Knoten, um den Prompt an ein Sprachmodell zu senden, um eine Antwort mithilfe des relevanten Kontexts zu generieren, der aus Ihrer Datenquelle abgerufen wurde. Die Antwort aus diesem Knoten ist auch die Ausgabe des gesamten Flows.
Nachdem Sie den Beispielchatflow für die Verwendung Ihrer indizierten Daten und des Sprachmodells Ihrer Wahl konfiguriert haben, können Sie den Flow bereitstellen und in eine Anwendung integrieren, um Benutzern eine Copilot-Erfahrung zu bieten.