Unterhaltungsmodelle erstellen

Ein Unterhaltungsmodell definiert, was Nutzer zu Ihren Aktionen sagen können und wie diese auf Nutzer reagieren. Die Hauptbausteine Ihres Unterhaltungsmodells sind Intents, Typen, Szenen und Prompts. Nachdem eine deiner Aktionen aufgerufen wurde, übergibt Google Assistant den Nutzer an diese Aktion und die Aktion startet eine Unterhaltung mit dem Nutzer basierend auf deinem Unterhaltungsmodell, das aus Folgendem besteht:

  • Gültige Nutzeranfragen: Um festzulegen, was Nutzer zu Ihren Aktionen sagen können, erstellen Sie eine Sammlung von Intents, die die Assistant-NLU so erweitern, dass sie Anfragen verstehen kann, die für Ihre Aktionen spezifisch sind. Jeder Intent definiert Trainingsformulierungen, die beschreiben, was Nutzer sagen können, um diesem Intent zuzuordnen. Assistant NLU erweitert diese Trainingsformulierungen um ähnliche Formulierungen. Die Zusammenfassung dieser Wortgruppen führt dann im Sprachmodell des Intents.

  • Aktionslogik und Antworten – In den Szenen werden Intents verarbeitet, die erforderliche Logik ausgeführt und Aufforderungen generiert, die an den Nutzer zurückgegeben werden.

Abbildung 1. Ein Unterhaltungsmodell besteht aus Intents, Typen, Szenen und Eingabeaufforderungen, die Ihre Nutzererfahrung definieren. Intents, die für Aufrufe infrage kommen, sind auch für den Abgleich in deinen Unterhaltungen gültig.

Gültige Nutzeranfragen definieren

Um festzulegen, was Nutzer zu deinen Aktionen sagen können, verwendest du eine Kombination aus Intents und Typen. Mithilfe von Nutzer-Intents und -Typen können Sie die Assistant-NLU mit Ihren eigenen Sprachmodellen erweitern. Mit System-Intents und -Typen können Sie integrierte Sprachmodelle und die Ereigniserkennung nutzen, z. B. wenn Nutzer Ihre Aktion beenden möchten oder Assistant überhaupt keine Eingabe erkennt.

Nutzer-Intents erstellen

Mit Nutzer-Intents können Sie eigene Trainingsformulierungen definieren, die definieren, was Nutzer zu Ihren Aktionen sagen könnten. Assistant NLU verwendet diese Formulierungen, um sich selbst zu trainieren, um zu verstehen, was die Nutzer sagen. Wenn ein Nutzer etwas sagt, das dem Sprachmodell eines Nutzer-Intents entspricht, ordnet Assistant den Intent zu und benachrichtigt deine Aktion. So kannst du Logik ausführen und dem Nutzer antworten.

Abbildung 1: Beispiel für einen Nutzer-Intent

So erstellen Sie einen Nutzer-Intent:

  1. Klicken Sie auf dem Tab Develop auf User intents > ⊕ (New intent), geben Sie einen Namen an und drücken Sie die Eingabetaste, um den Intent zu erstellen.
  2. Klicken Sie im linken Menü auf den neu erstellten Intent. Der Intent-Editor wird angezeigt.
  3. Fügen Sie dem Intent Trainingsformulierungen hinzu. Sie sollten so viele Trainingsformulierungen wie möglich hinzufügen, um die Assistant-NLU zu trainieren.
  4. Optional: Annotieren Sie Trainingsformulierungen, um Assistant NLU anzuweisen, typisierte Parameter aus Nutzereingaben zu parsen und zu extrahieren, die einem bestimmten Typ entsprechen:
    1. Geben Sie im Feld Neuen Parameter hinzufügen einen Namen für den Parameter ein.
    2. Wählen Sie im Drop-down-Menü einen Systemtyp aus oder erstellen Sie einen benutzerdefinierten Typ.
    3. Geben Sie an, ob der Parameter eine Liste ist. Dadurch kann der Parameter mehrere Werte desselben Typs erfassen.
    4. Markieren Sie im Abschnitt Trainingsformulierungen hinzufügen den Text, auf den Sie den Typ anwenden möchten. Dadurch wird Assistant NLU angewiesen, den markierten Text als Parameter zu behandeln. Wenn Nutzer etwas sagen, das mit dem Typ übereinstimmt, extrahiert die NLU diesen Wert als Parameter.

System-Intents erstellen

Mit System-Intents können Sie Intents mit vordefinierten Sprachmodellen für häufige Ereignisse nutzen, z. B. wenn Nutzer Ihre Aktion beenden möchten oder wenn eine Zeitüberschreitung bei Nutzereingaben auftritt. So erstellen Sie System-Intents:

  1. Klicken Sie auf dem Tab Develop auf System Intents. Es sind verschiedene System-Intents verfügbar, z. B. NO_MATCH, NO_INPUT und CANCEL.
  2. Jeder System-Intent enthält eigene Handler, die Sie für jeden System-Intent-Typ anpassen können. Mit System-Intents können Sie beispielsweise Webhook-Ereignisse auslösen und statische Aufforderungen senden, wenn das Ereignis eintritt.

Benutzerdefinierte Typen erstellen

Mit benutzerdefinierten Typen können Sie eine eigene Typspezifikation erstellen, um die NLU zu trainieren, eine Reihe von Werten zu verstehen, die einem einzelnen Schlüssel zugeordnet werden sollten.

Abbildung 2: Beispiel für einen benutzerdefinierten Typ

So erstellen Sie einen benutzerdefinierten Typ:

  1. Klicken Sie auf dem Tab Entwickeln auf Typen > CirclePlus; (Neuer Typ).
  2. Wählen Sie im Abschnitt Welche Arten von Werten mit diesem Typ unterstützt werden? aus, wie Typwerte bereitgestellt werden sollen:

    • Mit Wörtern und Synonymen können Sie mehrere Werte einem einzigen Schlüssel zuordnen. Dieser wird als Eintrag bezeichnet. Der Typ kann einen oder mehrere Einträge enthalten. Wenn Sie diese Option auswählen, können Sie auch die folgenden NLU-Einstellungen aktivieren:
      • Ungenaue Übereinstimmung aktivieren: Damit können Einträge mit mehr als einem Wort abgeglichen werden, auch wenn die Wörter in einer anderen Reihenfolge gesprochen werden.
      • Unbekannte Werte akzeptieren: Wenn Sie nicht alle möglichen Werte angeben können, werden unbekannte Wörter oder Wortgruppen basierend auf umgebenden Eingabe- und Intent-Trainingsdaten akzeptiert, z. B. Artikel, die einer Einkaufsliste hinzugefügt werden könnten.
    • Reguläre Ausdrücke ermöglichen den Abgleich des Typs mit regulären Ausdrucksmustern basierend auf dem RE2-Standard von Google.
    • Freier Text ermöglicht es dem Typ, alle Aussagen des Nutzers abzugleichen.
  3. Geben Sie im Abschnitt Einträge hinzufügen Typwerte an. Wenn Sie Freier Text auswählen, entspricht Ihr Typ jedem Text, sodass Sie keine Einträge eingeben müssen.

Aktionslogik und -antworten erstellen

Assistant-NLU ordnet Nutzeranfragen den Intents zu, damit die Aktion sie in Szenen verarbeiten kann. Szenen sind leistungsstarke Logik-Executors, mit denen Sie Ereignisse während einer Unterhaltung verarbeiten können.

Abbildung 3. Beispiel für eine benutzerdefinierte Szene

Szene erstellen

In den folgenden Abschnitten wird beschrieben, wie Sie Szenen erstellen und die Funktionen für die Lebenszyklusphase jeder Szene definieren.

So erstellen Sie eine Szene:

  1. Klicken Sie auf dem Tab Entwickeln auf Szenen > ⊕ (Neue Szene), geben Sie einen Namen an und drücken Sie die Eingabetaste, um eine Szene zu erstellen.
  2. Klicken Sie im linken Menü auf die neu erstellte Szene. Der Szeneneditor wird angezeigt.

Einmalige Einrichtung definieren

Wenn eine Szene zum ersten Mal aktiv wird, können Sie in der Phase Bei Eingabe einmalige Aufgaben ausführen. Die On-Enter-Phase wird nur einmal ausgeführt. Sie ist die einzige Phase, die nicht innerhalb der Ausführungsschleife einer Szene ausgeführt wird.

  1. Klicken Sie innerhalb einer Szene auf den Anzeigebereich Beim Betreten, um seine Funktionen anzugeben. In dieser Phase können Sie die folgenden Funktionen festlegen:

    • Webhook aufrufen: Löst einen Webhook aus. Weitere Informationen zu Webhooks finden Sie in der Dokumentation zu Webhooks.
    • Aufforderungen senden: Geben Sie statische Aufforderungen an den Nutzer ein, damit er weiß, wie er die Unterhaltung fortsetzen kann. Weitere Informationen zum Angeben von Eingabeaufforderungen finden Sie in der Dokumentation zu Aufforderungen.
    Abbildung 4. Beispiel für eine Szene auf der Bühne

Bedingungen prüfen

Mit Bedingungen können Sie Parameter für die Slot-Füllung, den Sitzungsspeicher, den Nutzerspeicher und den Home-Speicher prüfen, um den Ablauf für die Szenenausführung zu steuern.

  1. Klicken Sie in einer Szene für die Phase Condition (Bedingung) auf das Symbol +. Der Bedingungseditor wird rechts angezeigt. In dieser Phase können Sie die folgenden Funktionen angeben:

    • Bedingung: Legen Sie die tatsächliche bedingte Anweisung als Basislogik fest. Informationen zur Syntax finden Sie in der Dokumentation zu conditions.
    • Webhook aufrufen: Löst einen Webhook aus. Weitere Informationen zu Webhooks finden Sie in der Dokumentation zu Webhooks.
    • Aufforderungen senden: Gibt statische Aufforderungen an, die an den Nutzer gesendet werden, damit er weiß, wie er die Unterhaltung fortsetzen kann. Weitere Informationen zum Angeben von Aufforderungen finden Sie in der Dokumentation zu Aufforderungen.
    • Übergang: Gibt die Szene an, zu der übergehen soll, wenn die bedingte Anweisung erfüllt ist.
Abbildung 5. Beispiel für die Bedingungsphase einer Szene

Slot-Füllung definieren

Mit Slots können Sie typisierte Parameter aus der Nutzereingabe extrahieren.

Klicken Sie im Szeneneditor auf das Symbol + für die Phase Slot-Füllung. Der Editor für die Anzeigenfläche wird rechts angezeigt. Sie können die folgenden Attribute eines Slots angeben:

  • Slotname:Gibt den Namen der Anzeigenfläche an. Wenn Sie die Slotwertzuordnung nutzen möchten, verwenden Sie denselben Namen wie den entsprechenden Intent-Parameter.
  • Slot-Typ:Gibt den Typ der Anzeigenfläche entweder mit einem Systemtyp oder einem benutzerdefinierten Typ an.
  • Dieser Slot ist erforderlich:Kennzeichnet diese Anzeigenfläche als erforderlich. Wenn diese Option aktiviert ist, wird die Slot-Füllung erst abgeschlossen, wenn dieser Slot gefüllt ist.
  • Diesem Slot einen Standardwert zuweisen:Gibt einen Standardwert für den Slot an, der aus dem angegebenen Sitzungsparameter gelesen wird.
  • Passen Sie den Slotwert zurück:Gibt einen Sitzungsparameter an, der den Wert des Slots beibehalten soll, nachdem der Slot gefüllt ist.
  • Slot-Validierung:Ein Webhook wird ausgelöst, wenn ein Slot gefüllt wird. Diese Einstellung gilt für alle Slots.
  • Webhook aufrufen (aktiviert, wenn der Slot erforderlich ist): Löst einen Webhook aus. Weitere Informationen zu Webhooks finden Sie in der Dokumentation zu Webhooks.
  • SendPrompts (Aktiviert, wenn der Slot erforderlich ist): Gibt statische Aufforderungen an, die an den Nutzer gesendet werden sollen, damit er weiß, wie er die Unterhaltung fortsetzen kann. Weitere Informationen zum Angeben von Aufforderungen finden Sie in der Dokumentation zu Aufforderungen.

Für bestimmte Slottypen (z. B. Transaktionen oder Nutzerinteraktionen) wird ein zusätzlicher Abschnitt angezeigt, in dem Sie den Slot konfigurieren können. Slotkonfigurationen können die Unterhaltung für Nutzer je nach den von Ihnen angegebenen Attributen ändern.

Zum Konfigurieren eines Slots geben Sie Attribute in einem JSON-Objekt entweder in der Auftragsausführung (auf die als Sitzungsparameter verwiesen wird) oder im Inline-JSON-Editor an. Die verfügbaren Attribute für jeden Slottyp finden Sie in der JSON-Referenz für Actions Builder. Beispielsweise entspricht der Slottyp actions.type.DeliveryAddressValue dem Referenzinhalt für den Slot DeliveryAddressValue.

Abbildung 6: Beispiel für die Einstellungen für die Slot-Füllung einer Szene

Slotwertzuordnung

In vielen Fällen kann eine vorherige Intent-Zuordnung Parameter enthalten, die die Slotwerte einer entsprechenden Szene teilweise oder vollständig ausfüllen. In diesen Fällen werden alle mit Intent-Parametern gefüllten Slots der Slot-Füllung der Szene zugeordnet, wenn der Slotname mit dem Namen des Intent-Parameters übereinstimmt.

Wenn ein Nutzer beispielsweise mit der Aufforderung "Ich möchte einen großen Vanillekaffee bestellen" einem Intent zuordnen, ein Getränk zu bestellen, werden vorhandene Anzeigenflächen für Größe, Geschmack und Getränketyp in der entsprechenden Szene als ausgefüllt betrachtet, wenn diese Szene dieselben Slots definiert.

Eingabe verarbeiten

In dieser Phase kann Assistant NLU Nutzereingaben den Intents zuordnen. Sie können den Intent-Abgleich auf eine bestimmte Szene beschränken, indem Sie der Szene die gewünschten Intents hinzufügen. So können Sie den Unterhaltungsablauf steuern, indem Sie Assistant anweisen, bestimmte Intents zuzuordnen, wenn bestimmte Szenen aktiv sind.

  1. Klicken Sie in einer Szene für die Phase User intenthandling (Nutzer-Intent-Verarbeitung) oder System Intent Processing (Verwaltung von System-Intents) auf das Symbol +. Der Editor für den Intent-Handler wird rechts angezeigt. Sie können die folgende Funktionalität des Intent-Handlers angeben:

    • Intent: Gibt den Intent an, den Sie in dieser Szene zuordnen möchten.
    • Webhook aufrufen: Löst einen Webhook aus. Weitere Informationen zum Verarbeiten von Webhook-Anfragen finden Sie in der Dokumentation zu Webhooks.
    • Aufforderungen senden: Geben Sie dem Nutzer statische Aufforderungen an, damit er weiß, wie er antworten soll. Weitere Informationen zum Angeben von Eingabeaufforderungen finden Sie in der Dokumentation zu Aufforderungen.
    • Übergang (falls zutreffend): Gibt die Szene an, zu der gewechselt werden soll, wenn der angegebene Intent übereinstimmt.
Abbildung 7. Beispiel für den User Intent-Handler einer Szene
Abbildung 8: Beispiel für den System-Intent-Handler einer Szene