Entwickeln eines Prompt Flows
prompt flow ist ein Entwicklungstool zur Rationalisierung des Entwicklungszyklus von KI-Anwendungen, die auf LLMs (Large Language Models, große Sprachmodelle) basieren. In diesem Artikel erfahren Sie, wie Sie einen Prompt Flow und einen Chatflow in Azure Machine Learning Studio erstellen und entwickeln.
Da die Dynamik für LLM-basierte KI-Anwendungen weiter zunimmt, bietet prompt flow eine umfassende Lösung, die den Prozess der Prototyperstellung, des Experimentierens, der Iteration und der Bereitstellung von KI-Anwendungen vereinfacht. prompt flow ermöglicht Folgendes:
- Ausführbare Flow mit LLMs, Eingabeaufforderungen und Python-Tools über ein visualisiertes Diagramm orchestrieren.
- Einfaches Testen, Debuggen und Iterieren von Flows
- Eingabeaufforderungsvarianten erstellen und deren Leistung vergleichen.
Erstellen und entwickeln Sie Ihren Prompt Flow
Wählen Sie zum Erstellen eines Prompt Flows im linken Navigationsbereich von Azure Machine Learning Studio Prompt Flow und dann auf der Seite Prompt Flow die Option Erstellen aus.
Auf dem Bildschirm Neuen Flow erstellen können Sie wie folgt einen Flow erstellen:
- Erstellen eines Flows vom Typ Standard, Chat oder Auswertung auf der Grundlage einer Vorlage
- Klonen eines verfügbaren Beispiels unter Katalog durchsuchen
- Importieren eines vorhandenen Flows aus lokalen Dateien oder einer Dateifreigabe
Wählen Sie zum Erstellen eines Flows Erstellen oder Klonen auf der gewünschten Flowkarte aus. Im nächsten Bildschirmbereich können Sie den Namen des neuen Flows bei Bedarf ändern und dann Erstellen oder Klonen auswählen. Der neue Flow wird auf der Benutzeroberfläche für die Erstellung geöffnet.
Computesitzung
Bevor Sie mit der Erstellung beginnen, starten Sie die Computesitzung, indem Sie Computesitzung starten oben auf der Seite für die Flowerstellung auswählen. Für die Flowausführung ist eine Computesitzung erforderlich. Die Computesitzung verwaltet die Computeressourcen, die für die Ausführung der Anwendung erforderlich sind, einschließlich eines Docker-Images, das alle erforderlichen Abhängigkeitspakete enthält.
Erstellungsseite
Es kann einige Minuten dauern, bis die Computesitzung gestartet wird. Sehen Sie sich die Elemente auf der Seite für die Flowerstellung an, während die Computesitzung gestartet wird.
Die Ansicht Flow oder Vereinfachen links auf der Seite ist der Hauptarbeitsbereich, in dem Sie den Flow erstellen. In der vereinfachten Ansicht können Sie Knoten, Tools, Prompts und Eingaben bearbeiten, Knoten oder den gesamten Flow ausführen sowie Ausgaben definieren und anzeigen.
Unter Dateien oben rechts werden der Ordner und die Dateistruktur des Flows angezeigt. Jeder Flow verfügt über einen Ordner, der die Datei flow.dag.yaml, Quellcodedateien und Systemordner enthält. Sie können Dateien für Tests, Bereitstellungen oder Zusammenarbeit hinzufügen, bearbeiten, löschen, hochladen oder herunterladen.
Die Diagrammansicht unten rechts visualisiert die Flowstruktur. Sie können die Ansicht vergrößern oder verkleinern oder ein automatisches Layout verwenden. Sie können diese Ansicht nicht direkt bearbeiten, können aber einen Knoten auswählen, um ihn in der vereinfachten Ansicht zu platzieren und zu bearbeiten.
Flow-Eingang und -Ausgang
In den Abschnitten Eingaben und Ausgaben können Sie Eingaben und Ausgaben anzeigen, hinzufügen oder entfernen sowie bearbeiten.
Flow-Input sind die Daten, die in den Flow als Ganzes eingehen. Sie definieren das Eingabeschema, indem Sie den Namen und den Typ angeben und den Wert jeder Eingabe festlegen, um den Flow zu testen. Sie können später in den Flowknoten mithilfe von
${input.<input name>}
auf die Floweingabe verweisen.Die Flowausgabe umfasst die vom gesamten Flow erzeugten Daten und fasst die Ergebnisse der Flowausführung zusammen. Sie können den Wert der Flowausgabe definieren, indem Sie mit der Syntax
${<node name>.output}
oder${<node name>.output.<field name>}
auf die Ausgabe eines einzelnen Knotens verweisen. Sie können die Ausgabeergebnistabelle nach Abschluss der Flow- oder Batchausführung anzeigen und exportieren.
Flowtools
In einem Flow können Sie verschiedene Arten von Tools verwenden, z. B. LLM, Python, Prompt, Serp API und Inhaltssicherheit. Wenn Sie ein Tool auswählen, wird am Ende des Flows ein neuer Knoten für dieses Tool hinzugefügt. Sie müssen den Knotennamen angeben und die erforderlichen Konfigurationen festlegen. Sie können die Knotensteuerelemente verwenden, um die Position des Knotens im Flow zu ändern.
Knoteneingaben und -ausgaben
Das LLM- und das Prompt-Tool unterstützen Sie bei der Verwendung von Jinja als Vorlagenerstellungssprache zur dynamischen Generierung des Prompts. Sie können zum Beispiel anstelle von festem Text {{}}
verwenden, um Ihren Eingabenamen einzuschließen, so dass er spontan ersetzt werden kann.
Sie können knoten Eingaben und Ausgaben von Knoten auf folgende Weise festlegen:
- Legen Sie den Wert für die Eingabe direkt fest.
- Verweisen Sie mithilfe von
${input.<input name>}
auf die Floweingabe. - Verweisen Sie mithilfe von
${<node name>.output}
oder${<node name>.output.<field name>}
auf die Knotenausgabe.
Nachdem Sie einen Prompt oder ein Python-Skript verfasst haben, wählen Sie Eingabe validieren und parsen aus, damit das System die Knoteneingabe auf der Grundlage der Promptvorlage und der Eingabe der Python-Funktion automatisch parst.
Sie können Knoten miteinander verknüpfen, indem Sie die Knotenausgabe referenzieren. Sie können beispielsweise in der Python-Knoteneingabe auf die LLM-Knotenausgabe verweisen, damit der Python-Knoten die LLM-Knotenausgabe verwendet. In der Diagrammansicht können Sie die beiden Knoten sehen, die miteinander verknüpft sind.
LLM-Knoten
Für einen Azure OpenAI-LLM-Knoten müssen Sie Verbindung, API und deployment_name auswählen und den Prompt festlegen. Sie verwenden die Verbindung für die sichere Speicherung und Verwaltung von geheimen Schlüsseln oder anderen vertraulichen Anmeldeinformationen, die für die Interaktion mit Azure OpenAI erforderlich sind.
Wenn Sie noch keine Verbindung haben, erstellen Sie diese, bevor Sie den LLM-Knoten hinzufügen, und stellen Sie sicher, dass die Azure OpenAI-Ressource über die Chat- oder Vervollständigungsbereitstellung verfügt. Weitere Informationen finden Sie unter Herstellen einer Verbindung und Erstellen und Bereitstellen einer Azure OpenAI Service-Ressource.
Python-Knoten
Um das Python-Tool zu verwenden, müssen Sie das Python-Skript, den Eingabewert und weitere Konfigurationen festlegen. Ein neuer Python-Knoten stellt die folgenden Python-Funktionsbausteine bereit, die Eingaben und Ausgaben definieren:
from promptflow import tool
# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(input1: str) -> str:
return 'hello ' + input1
Bedingungen zum Steuern von Aktionen
prompt flow ermöglicht bedingte Steuerung, mit der Sie Bedingungen für die Ausführung eines beliebigen Knotens in einem Flow festlegen können.
Die bedingte Steuerung bietet die Möglichkeit, jeden Knoten in einem Flow mit einer Aktivierungskonfiguration zu verknüpfen. Diese Konfiguration ist eine when
-Anweisung, die bestimmt, wann ein Knoten ausgeführt werden soll. Die Leistungsfähigkeit dieser Funktion kommt in komplexen Flows zum Tragen, bei denen die Ausführung bestimmter Aufgaben vom Ergebnis vorheriger Aufgaben abhängt. Mithilfe der bedingten Steuerung können Sie Ihre spezifischen Knoten so konfigurieren, dass sie nur ausgeführt werden, wenn die angegebenen Bedingungen erfüllt sind.
Legen Sie die Aktivierungskonfiguration für einen Knoten fest, indem Sie die Schaltfläche Konfiguration aktivieren in der Knotenkarte auswählen. Fügen Sie eine wenn-Anweisung hinzu, und legen Sie die Bedingung fest. Sie können die Bedingungen festlegen, indem Sie sich auf die Floweingabe oder die Knotenausgabe beziehen. Sie können zum Beispiel die Bedingung ${input.<input name>}
oder ${<node name>.output}
als bestimmte Werte festlegen. Wenn die Bedingung nicht erfüllt ist, wird der Knoten übersprungen, und als Knotenstatus wird Umgangen angezeigt.
Testen eines Flows
Sie können einen Flow testen, indem Sie einen einzelnen Knoten oder den gesamten Flow ausführen.
- Um einen einzelnen Knoten auszuführen, wählen Sie das Symbol Ausführen in der Knotenkarte aus. Wenn die Knotenausführung abgeschlossen ist, können Sie schnell die Ergebnisse im Abschnitt Ausgabe des Knotens überprüfen.
- Um den gesamten Flow auszuführen, wählen Sie oben auf der Seite Ausführen aus.
Flowausgaben
Nachdem Sie Ausführen zum Ausführen des Flows ausgewählt haben, können Sie den Ausführungsstatus im Banner oben auf der Seite sehen. Wählen Sie Ausgaben anzeigen im Banner oben oder auf der oberen Menüleiste aus, um detaillierte Eingabe-, Ausgabe-, Flowausführungs- und Orchestrierungsinformationen anzuzeigen.
Nach Abschluss der Flowausführung können Sie Ausgaben anzeigen auswählen, um alle historischen Ausgaben auf dem Bildschirm Ausgaben zu überprüfen.
Wählen Sie die Registerkarte Ablaufverfolgung auf dem Bildschirm Ausgaben aus, um ein Diagramm anzuzeigen, das Informationen zur Dauer und zu den zugehörigen Tokenkosten des Flows enthält. Wählen Sie unter Knotenname die Option Flow aus, um detaillierte Flowübersichtsinformationen im rechten Bereich anzuzeigen.
Erweitern Sie Flow, und wählen Sie einen beliebigen Schritt aus, um detaillierte Informationen zu diesem Schritt anzuzeigen. Sie können die Dauer der Ausführung der einzelnen Knoten in der Struktur der Spannen sehen. Weitere Informationen finden Sie in der Spezifikation zu Ablaufverfolgungsbereichen.
Entwickeln eines Chatflows
Ein Chatflow ist ein bestimmter Typ von Prompt Flow, der für die Entwicklung von Unterhaltungsanwendungen konzipiert ist. Der Chatflow baut auf dem Standardflow auf, um eine erweiterte Unterstützung für Chateingaben/-ausgaben und den Chatverlauf bereitzustellen. Mit dem Chatflow können Sie ganz einfach einen Chatbot erstellen, der die Chateingabe und -ausgabe verarbeitet.
Wählen Sie zum Erstellen eines Chatflow auf dem Bildschirm Neuen Flow erstellen auf der Karte Chatflow die Option Erstellen aus. Wählen Sie alternativ unter Katalog durchsuchen die Option Chat aus, und klonen Sie einen der verfügbaren Flows.
Auf der Erstellungsseite von Chatflows wird der Chatflow mit der Bezeichnung Chat gekennzeichnet, um ihn vom Standard- und vom Auswertungsflow zu unterscheiden. Wählen Sie zum Testen eines Chatflow oben auf der Seite Chat aus, um das Feld Chat für Unterhaltungen zu öffnen.
Chateingabe, Chatausgabe und Chatverlauf
Die wichtigsten Elemente, die einen Chatflow von einem Standardflow unterscheiden, sind Chateingabe, Chatverlauf und Chatausgabe. Chatverlauf und Chateingabe sind in Chatflows erforderlich.
Chateingabe bezieht sich auf die Nachrichten oder Anfragen, die von Benutzern an den Chatbot übermittelt werden. Die effektive Verarbeitung von Chateingaben ist für eine erfolgreiche Unterhaltung von entscheidender Bedeutung, da sie das Verständnis der Benutzerabsichten, das Extrahieren relevanter Informationen und das Auslösen geeigneter Antworten umfasst.
Chatverlauf ist die Aufzeichnung aller Interaktionen zwischen dem Benutzer und dem Chatbot, einschließlich der Benutzereingaben und der von der KI erzeugten Ausgaben. Die Aufbewahrung des Chatverlaufs ist wichtig, um den Konversationskontext nachzuverfolgen und sicherzustellen, dass die KI kontextbezogene Antworten generieren kann.
Chatausgabe bezieht sich auf die von der KI generierten Nachrichten, die als Reaktion auf die Eingaben von Benutzern an diese gesendet werden. Die Generierung kontextbezogener und ansprechender Chat-Ausgaben ist für ein positives Nutzererlebnis unerlässlich.
Ein Chatflow kann mehrere Eingaben haben. Markieren Sie im Abschnitt Eingaben des Chatflows eine der Eingaben als Chateingabe. Sie füllen den Chateingabewert auf, indem Sie eine Frage in das Feld Chat eingeben.
Verwalten des Chatverlaufs
Um Sie bei der Verwaltung des Chatverlaufs zu unterstützen, ist chat_history
im Abschnitt Eingaben für die Darstellung des Chatverlaufs reserviert. Sie können chat_history
nicht manuell bearbeiten.
Der Chatverlauf ist als Liste von Ein- und Ausgaben strukturiert. Alle Interaktionen in der Chatbox, einschließlich der Chat-Eingaben des Benutzers, der generierten Chat-Ausgaben und anderer Flow-Eingaben und -Ausgaben, werden automatisch im Chatverlauf gespeichert. Der folgende Code zeigt die Struktur des Chatverlaufs.
[
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
},
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
}
]
Hinweis
Wenn Sie Tests im Feld Chat durchführen, speichern Sie den Chatverlauf automatisch. Für Batchausführungen müssen Sie den Chatverlauf in das Dataset der Batchausführung aufnehmen. Wenn kein Chatverlauf zur Verfügung steht, legen Sie chat_history
auf eine leere Liste ([]
) im Dataset der Batchausführung fest.
Verweisen Sie in Ihren Prompts auf chat_history
, um vergangene Interaktionen abzurufen. Anschließend können Sie auf vorherige Ein- und Ausgaben verweisen, um relevante kontextbezogene Antworten zu erstellen. Die Einbeziehung des Chatverlaufs in Ihre Prompts ist für die Erstellung kontextbezogener und ansprechender Chatbotantworten unerlässlich.
Sie können die For-Schleifen-Grammatik der Sprache Jinja verwenden, um eine Liste der Ein- und Ausgaben von chat_history
anzuzeigen.
{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}
Testen mit dem Chatfeld
Das Feld Chat bietet eine interaktive Möglichkeit, Ihren Chatflow zu testen, indem Sie eine Unterhaltung mit Ihrem Chatbot simulieren. So testen Sie Ihren Chatflow mithilfe des Felds Chat
- Wählen Sie Chat aus, um die Randleiste Chat zu öffnen.
- Geben Sie Testfragen in das Chatfeld unten auf dem Bildschirm ein, um sie an den Chatbot zu senden.
- Überprüfen Sie die Antworten des Chatbots, um sicherzustellen, dass sie kontextbezogen, angemessen und korrekt sind.
- Wählen Sie oben auf der Erstellungsseite Ausgaben anzeigen aus, um Chateingaben, Chatausgaben und den Chatverlauf schnell anzuzeigen und zu debuggen.
- Wählen Sie auf dem Bildschirm Ausgaben die Registerkarte Ablaufverfolgung und dann Flow aus, um detaillierte Flowübersichtsinformationen im rechten Bereich anzuzeigen. Erweitern Sie Flow, und wählen Sie einen beliebigen Schritt aus, um detaillierte Informationen zu diesem Schritt anzuzeigen.