Dialogbibliothek
Gilt für: SDK v4
Dialoge sind ein zentrales Konzept im SDK, das Möglichkeiten bietet, eine lang andauernde Konversation mit dem Benutzer auszuführen. Ein Dialogfeld führt eine Aufgabe aus, die einen Teil oder einen vollständigen Unterhaltungsthread darstellen kann. Es kann sich nur um eine oder mehrere Durchläufe erstrecken und einen kurzen oder langen Zeitraum umfassen.
In diesem Artikel werden die wichtigsten Klassen und Features der Dialogbibliothek beschrieben.
- Sie sollten mit der Funktionsweise von Bots (einschließlich der Bedeutung eines Durchlaufs) und der Verwaltung von Zuständen vertraut sein.
- Jeder Dialog stellt eine Konversationsaufgabe dar, die bis zum Abschluss ausgeführt werden kann und dabei gesammelte Informationen zurückgibt.
- Jeder Dialog stellt eine grundlegende Einheit des Steuerungsflusses dar: Er kann beginnen, fortgesetzt und beendet werden; pausieren und wieder aufgenommen werden; oder abgebrochen werden.
- Dialogfelder ähneln einer Methode oder Funktion in einer Programmiersprache. Sie können Argumente oder Parameter übergeben, wenn Sie ein Dialogfeld starten, und das Dialogfeld kann später beim Beenden einen Rückgabewert erzeugen.
Tipp
Wenn Sie mit der Entwicklung von Bots mit dem Bot Framework noch nicht vertraut sind oder eine neue Unterhaltungserfahrung erstellen, beginnen Sie mit dem Bot Framework Composer. Für bestehende SDK-First-Bots, die nicht in Composer erstellt wurden, sollten Sie in Erwägung ziehen, Ihren Bot als Skill freizugeben und Composer für die zukünftige Bot-Entwicklung zu verwenden.
Dialogzustand
Dialoge können eine mehrteilige Unterhaltung implementieren und als solche sind sie auf einen dauerhaften Zustand über Turns hinweg angewiesen. Ohne Status in Dialogfeldern würde Ihr Bot nicht wissen, wo es sich in der Unterhaltung befand oder welche Informationen er bereits gesammelt hatte.
Um den Platz eines Dialogs in der Konversation beizubehalten, muss der Status des Dialogs bei jedem Turn abgerufen und im Speicher abgelegt werden. Dies wird über einer Dialogstatus-Eigenschaftszugriffsmethode behandelt, die im Unterhaltungszustand des Bots definiert ist. Dieser Dialogstatus verwaltet Informationen für alle aktiven Dialoge und untergeordneten Elementen von aktiven Dialogen. Auf diese Weise kann der Bot an der Stelle fortfahren, an der er zuletzt aufgehört hat, und verschiedene Unterhaltungsmodelle handhaben.
Zur Laufzeit enthält die Eigenschaft Dialogstatus Informationen darüber, wo sich der Dialog in seinem logischen Prozess befindet, einschließlich intern gesammelter Informationen in Form eines Dialoginstance-Objekts. Auch hier muss dies in den Bot gelesen und im Arbeitsspeicher gespeichert werden.
Dialoginfrastruktur
Neben verschiedenen Arten von Dialogen sind die folgenden Klassen an der Gestaltung und Steuerung von Unterhaltungen beteiligt. Obwohl Sie normalerweise nicht direkt mit diesen Klassen interagieren müssen, ist es hilfreich, sich ihrer und ihres Zwecks beim Entwerfen von Dialogen für einen Bot bewusst zu sein.
Klasse | Beschreibung |
---|---|
Dialog festlegen | Definiert eine Sammlung von Dialogen, die aufeinander verweisen können und gemeinsam arbeiten können. |
Dialogkontext | Enthält Informationen zu allen aktiven Dialogfeldern. |
Dialog-Instanz | Enthält Informationen zu einem aktiven Dialogfeld. |
Dialog Ergebnis | Enthält Statusinformationen aus einem aktiven oder kürzlich aktiven Dialogfeld. Wenn der aktive Dialog beendet wurde, enthält dies seinen Rückgabewert. |
Dialogfeldtypen
Die Dialogbibliothek bietet einige Arten von Dialogfeldern, damit die Unterhaltungen Ihres Bots einfacher verwaltet werden können. Einige dieser Typen werden weiter unten in diesem Artikel ausführlicher beschrieben.
type | Beschreibung |
---|---|
Dialogfeld | Die Basisklasse für alle Dialogfelder. |
Container-Dialog | Die Basisklasse für alle Containerdialoge, z. B. Komponenten und adaptive Dialoge. Er verwaltet einen inneren Dialogsatz und ermöglicht es Ihnen, eine Sammlung von Dialogen als eine Einheit zu behandeln. |
Komponentendialog | Ein universeller Typ eines Container-Dialogs, der einen Satz von Dialogen kapselt und die Wiederverwendung des gesamten Satzes ermöglicht. Wenn ein Komponentendialog gestartet wird, beginnt er mit einem bestimmten Dialog in seiner Sammlung. Wenn der innere Prozess abgeschlossen ist, endet der Komponentendialog. |
Wasserfalldialog | Definiert eine Abfolge von Schritten, sodass Ihr Bot einen Benutzer durch einen linearen Prozess leiten kann. Diese sind in der Regel so konzipiert, dass sie innerhalb des Kontexts eines Komponentendialogs funktionieren. |
Eingabeaufforderungsdialoge | Bitten Sie den Benutzer um Eingabe, und geben Sie das Ergebnis zurück. Eine Eingabeaufforderung wird wiederholt, bis sie gültige Eingaben erhält oder abgebrochen wird. Sie sind für die Verwendung mit Wasserfalldialogen konzipiert. |
Adaptiver Dialog | Ein Containerdialog, den Composer verwendet, um natürlichere Gesprächsverläufe zu ermöglichen. Nicht zur direkten Verwendung in einem SDK-first Bot. |
Aktionsdialoge | Ein Dialogfeldtyp, der die Implementierung von Aktionen in Composer unterstützt. Nicht zur direkten Verwendung in einem SDK-first Bot. |
Eingabedialoge | Ein Dialogfeldtyp, der die Implementierung von Eingabeaktionen in Composer unterstützt. Nicht zur direkten Verwendung in einem SDK-first Bot. |
Skill-Dialog | Automatisiert die Verwaltung von einem oder mehreren Skillbots von einem Skillconsumer. Composer unterstützt direkt Skills als Aktionen. |
QnA Maker-Dialog | Automatisiert den Zugriff auf eine QnA Maker-Wissensbasis. Dieser Dialog ist so konzipiert, dass er auch als Aktion im Composer funktioniert. |
Wichtig
Adaptive Dialogfelder wurden zuerst in Version 4.9 des C#-SDK hinzugefügt. Adaptive Dialoge unterstützen den Bot Framework Composer und sind nicht für die direkte Verwendung in einem SDK-First-Bot vorgesehen.
Dialogmuster
Es gibt zwei Hauptmuster für das Starten und Verwalten von Dialogen über einen Bot.
- Wir empfehlen die Verwendung von Bot Framework Composer zum Erstellen von Dialogen, um von natürlicheren und frei fließenden Gesprächsfunktionen zu profitieren. Weitere Informationen finden Sie unter Einführung in Bot Framework Composer. Solche Bots können bei Bedarf immer noch mit Code erweitert werden.
- Entwickeln Sie Ihren Bot in einer der SDK-Sprachen und verwenden Sie die Ausführungserweiterungsmethode Ihres Stammdialogs. Informationen zur Verwendung der Run-Methode mit einem Komponentendialog finden Sie unter Komponenten- und Wasserfalldialoge und wie man einen sequentiellen Konversationsfluss implementiert.
Der Dialogstapel
Ein Dialogkontext enthält Informationen zu allen aktiven Dialogen und enthält einen Dialogstapel, der als Aufrufliste für alle aktiven Dialoge fungiert. Jedes Containerdialogfeld verfügt über einen inneren Satz von Dialogfeldern, die es steuert, und daher führt jedes aktive Containerdialogfeld einen internen Dialogkontext und einen Dialogstapel als Teil seines Zustands ein.
Obwohl Sie nicht direkt auf den Stapel zugreifen, können Sie verstehen, dass er vorhanden ist, und seine Funktion hilft Ihnen zu verstehen, wie verschiedene Aspekte der Dialogbibliothek funktionieren.
Containerdialoge
Ein Containerdialog kann Teil eines größeren Dialogsatzes sein. Jeder Container verfügt über einen inneren Dialogsatz, der ebenfalls verwaltet wird.
Jeder Dialogsatz erstellt einen Bereich zum Auflösen von Dialog-IDs.
Das SDK implementiert derzeit zwei Typen von Containerdialogfeldern: Komponentendialoge und adaptive Dialogfelder.
Die konzeptionelle Struktur der beiden sind ziemlich unterschiedlich. Ein Composer-Bot kann jedoch beides verwenden.
Dialog-IDs
Wenn Sie einem Dialogsatz einen Dialog hinzufügen, weisen Sie ihm eine eindeutige ID innerhalb dieses Dialogsatzes zu. Dialoge innerhalb eines Satzes referenzieren sich gegenseitig über ihre IDs.
Wenn ein Dialogfeld zur Laufzeit auf ein anderes Dialogfeld verweist, erfolgt dies durch die ID des Dialogfelds. Der Dialogkontext versucht, die ID anhand der anderen Dialoge in der unmittelbaren Dialogmenge aufzulösen. Wenn es keine Übereinstimmung gibt, wird nach einer Übereinstimmung in der enthaltenen oder äußeren Dialogmenge gesucht usw. Wenn keine Übereinstimmung gefunden wird, wird eine Ausnahme oder ein Fehler generiert.
Komponentendialoge
Komponentendialoge verwenden ein Sequenzmodell für Gespräche, und jeder Dialog im Container ist für das Aufrufen anderer Dialoge im Container verantwortlich. Wenn der innere Dialogstapel des Komponentendialogfelds leer ist, endet die Komponente.
Erwägen Sie die Verwendung von Komponenten- und Wasserfalldialogen, wenn Ihr Bot einen relativ einfachen Steuerfluss aufweist, der keinen dynamischeren Dialogfluss erfordert.
Über Komponenten- und Waterfall-Dialoge beschreibt die Komponenten-, Waterfall- und Prompt-Dialoge im Detail.
Weitere Dialoge
Die Dialogfelder QnA Maker und Fähigkeiten können als eigenständige Dialoge oder als Teil einer Sammlung von Dialogfeldern in einem Container verwendet werden.
QnA Maker-Dialog
Anmerkung
Azure AI QnA Maker wird am 31. März 2025 abgelöst. Ab dem 1. Oktober 2022 können Sie keine neuen QnA Maker-Ressourcen oder Wissensdatenbanken erstellen. Eine neuere Version der Frage- und Antwortfunktion ist jetzt als Teil von Azure AI Language verfügbar.
Die benutzerdefinierte Beantwortung von Fragen, eine Funktion von Azure AI Language, ist die aktualisierte Version des QnA Maker-Dienstes. Weitere Informationen zur Unterstützung von Fragen und Antworten im Bot Framework SDK finden Sie unter Natürliches Sprachverständnis.
Der QnA Maker-Dialog greift auf eine QnA Maker-Knowledge-Base zu und unterstützt die QnA Maker-Features zur Folgeäußerung und zum aktiven Lernen.
- Folgeäußerungen, auch als Multi-Turn-Eingabeaufforderungen bezeichnet, ermöglichen es einer Knowledge Base, den Benutzer vor der Beantwortung seiner Frage nach weiteren Informationen zu fragen.
- Aktive Lernvorschläge ermöglichen es der Wissensbasis, sich im Laufe der Zeit zu verbessern. Der QnA Maker-Dialog unterstützt explizites Feedback für die aktive Lernfunktion.
Weitere Informationen finden Sie unter:
- Was ist QnA Maker?.
- Im SDK, wie man den QnA Maker zum Beantworten von Fragen verwendet.
- Wie Sie in Composer eine QnA Maker-Knowledge Base zu Ihrem Bot hinzufügen.
Skill-Dialog
Ein Skill-Dialog greift auf eine oder mehrere Skills zu und verwaltet diese. Der Skill-Dialog veröffentlicht Aktivitäten des übergeordneten Bots für den Skillbot und gibt die Skillantworten an den Benutzer zurück.
Weitere Informationen finden Sie unter:
- Im SDK finden Sie die Übersicht über Skills.
- In Composer, Über Skills.