Mit ML Kit unter iOS intelligente Antworten generieren

ML Kit kann mit einem On-Device-Modell kurze Antworten auf Nachrichten generieren.

Um intelligente Antworten zu generieren, übergeben Sie ML Kit ein Protokoll der letzten Nachrichten in einem Gespräch. Wenn ML Kit feststellt, dass die Unterhaltung auf Englisch ist und dass keine potenziell sensiblen Themen, ML Kit generiert bis zu drei Antworten, die Sie dem Nutzer vorschlagen können.

Jetzt ausprobieren

  • Probieren Sie die Beispiel-App aus, um sehen Sie sich ein Anwendungsbeispiel für diese API an.

Hinweis

  1. Fügen Sie die folgenden ML Kit-Pods in Ihre Podfile-Datei ein:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, öffnen Sie Ihr Xcode-Projekt mit dem .xcworkspace ML Kit wird ab Xcode-Version 12.4 unterstützt.

1. Objekt für Unterhaltungsverlauf erstellen

Um intelligente Antworten zu generieren, übergeben Sie ML Kit ein chronologisch geordnetes Array TextMessage-Objekte, mit dem frühesten Zeitstempel zuerst. Wenn Nutzende eine Nachricht sendet oder empfängt, die Nachricht, ihren Zeitstempel und die Nachricht Nutzer-ID des Absenders dem Unterhaltungsverlauf hinzufügen.

Bei der Nutzer-ID kann es sich um eine beliebige Zeichenfolge handeln, die den Absender innerhalb der Gespräch. Die User-ID muss keinen Nutzerdaten entsprechen, und die User-ID muss zwischen Unterhaltungen und -Aufrufe des Generators für intelligente Antworten.

Wenn die Nachricht von dem Nutzer gesendet wurde, dem Sie Antworten vorschlagen möchten, legen Sie isLocalUser auf "true" gesetzt.

Swift

var conversation: [TextMessage] = []

// Then, for each message sent and received:
let message = TextMessage(
    text: "How are you?",
    timestamp: Date().timeIntervalSince1970,
    userID: "userId",
    isLocalUser: false)
conversation.append(message)

Objective-C

NSMutableArray *conversation = [NSMutableArray array];

// Then, for each message sent and received:
MLKTextMessage *message = [[MLKTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

Ein Objekt für den Unterhaltungsverlauf sieht wie das folgende Beispiel aus:

Zeitstempel userID isLocalUser Meldung
Do., 21. Feb., 13:13:39 PST 2019 wahr Bist du auf dem Weg?
Do., 21. Feb., 13:15:03 PST 2019 FRIEND0 falsch Ich bin leider spät dran.

ML Kit schlägt Antworten auf die letzte Nachricht in einem Unterhaltungsverlauf vor. Die letzte Nachricht sollte von einem nicht-lokalen Nutzer stammen. Im obigen Beispiel ist die letzte Nachricht der Konversation ist vom nicht-lokalen Nutzer FREUND0. Wenn Sie dieses Log im ML Kit verwenden, wird vorgeschlagen, antwortet auf die Nachricht von friendO: „Ich verspäte mich leider!“

2. Antworten auf Nachrichten erhalten

Um intelligente Antworten auf eine Nachricht zu generieren, rufen Sie eine Instanz von SmartReply ab und übergeben Sie dem Unterhaltungsverlauf der suggestReplies(for:completion:)-Methode hinzu:

Swift

SmartReply.smartReply().suggestReplies(for: conversation) { result, error in
    guard error == nil, let result = result else {
        return
    }
    if (result.status == .notSupportedLanguage) {
        // The conversation's language isn't supported, so
        // the result doesn't contain any suggestions.
    } else if (result.status == .success) {
        // Successfully suggested smart replies.
        // ...
    }
}

Objective-C

MLKSmartReply *smartReply = [MLKSmartReply smartReply];
[smartReply suggestRepliesForMessages:inputText
                           completion:^(MLKSmartReplySuggestionResult * _Nullable result,
                                        NSError * _Nullable error) {
  if (error || !result) {
    return;
  }
  if (result.status == MLKSmartReplyResultStatusNotSupportedLanguage) {
      // The conversation's language isn't supported, so
      // the result doesn't contain any suggestions.
  } else if (result.status == MLKSmartReplyResultStatusSuccess) {
      // Successfully suggested smart replies.
      // ...
  }
}];

Wenn der Vorgang erfolgreich ist, wird ein SmartReplySuggestionResult-Objekt an den Abschluss-Handler. Dieses Objekt enthält eine Liste mit bis zu drei vorgeschlagenen die Sie Ihren Nutzern präsentieren können:

Swift

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

Objective-C

for (MLKSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

Beachten Sie, dass ML Kit möglicherweise keine Ergebnisse zurückgibt, wenn das Modell nicht sicher ist, ob die vorgeschlagenen Antworten relevant sind, oder wenn das Modell sensible Themen erkennt.