Intelligente Antworten mit ML Kit auf iOS-Geräten generieren

Mit ML Kit können Sie Nachrichtenantworten mit einem On-Device-Modell generieren.

Wenn Sie intelligente Antworten generieren möchten, übergeben Sie ML Kit ein Protokoll der letzten Nachrichten in einer Unterhaltung. Wenn ML Kit feststellt, dass die Unterhaltung auf Englisch ist und kein potenziell heikles Thema enthält, generiert ML Kit bis zu drei Antworten, die Sie dem Nutzer vorschlagen können.

Hinweis

  1. Wenn Sie Ihrer App noch nicht Firebase hinzugefügt haben, folgen Sie der Anleitung im Einstiegsleitfaden.
  2. Fügen Sie die ML Kit-Bibliotheken in Ihre Podfile ein:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, öffnen Sie Ihr Xcode-Projekt mit der .xcworkspace.
  3. Importieren Sie Firebase in Ihre App:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

1. Objekt für den Unterhaltungsverlauf erstellen

Wenn Sie intelligente Antworten generieren möchten, übergeben Sie ML Kit ein chronologisch sortiertes Array von TextMessage-Objekten, wobei der früheste Zeitstempel an erster Stelle steht. Fügen Sie dem Unterhaltungsverlauf immer dann die Nachricht, ihren Zeitstempel und die Nutzer-ID des Absenders hinzu, wenn der Nutzer eine Nachricht sendet oder empfängt.

Die Nutzer-ID kann ein beliebiger String sein, der den Absender innerhalb der Unterhaltung eindeutig identifiziert. Die Nutzer-ID muss nicht mit Nutzerdaten übereinstimmen und muss nicht zwischen Unterhaltungen oder Aufrufen des Smart Reply-Generators konsistent sein.

Wenn die Nachricht von dem Nutzer gesendet wurde, für den Sie Antworten vorschlagen möchten, setzen Sie isLocalUser auf „wahr“.

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:
FIRTextMessage *message = [[FIRTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

Ein Unterhaltungsverlaufsobjekt sieht in etwa so aus:

Zeitstempel Nutzer-ID Lokaler Nutzer? Nachricht
Donnerstag, 21. Februar 2019, 13:13:39 Uhr PST wahr Sind Sie auf dem Weg?
Donnerstag, 21. Februar 2019, 13:15:03 Uhr PST FREUND0 falsch Ich bin etwas verspätet, sorry!

Die neueste Nachricht im Beispiel oben stammt von einem nicht lokalen Nutzer. Das ist wichtig, weil ML Kit Antworten vorschlägt, die vom Nutzer Ihrer App gesendet werden sollen: dem lokalen Nutzer. Achten Sie darauf, ML Kit ein Unterhaltungsprotokoll zu übergeben, das mit einer Nachricht endet, auf die Ihr Nutzer antworten könnte.

2. Antworten auf Nachrichten erhalten

Wenn Sie intelligente Antworten auf eine Nachricht generieren möchten, rufen Sie eine Instanz von SmartReply ab und übergeben Sie den Unterhaltungsverlauf an die Methode suggestReplies(for:completion:):

Swift

let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.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
        // the result doesn't contain any suggestions.
    } else if (result.status == .success) {
        // Successfully suggested smart replies.
        // ...
    }
}

Objective-C

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

Wenn der Vorgang erfolgreich ist, wird dem Abschluss-Handler ein SmartReplySuggestionResult-Objekt übergeben. Dieses Objekt enthält eine Liste mit bis zu drei vorgeschlagenen Antworten, die Sie dem Nutzer präsentieren können:

Swift

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

Objective-C

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

Hinweis: ML Kit gibt möglicherweise keine Ergebnisse zurück, wenn das Modell nicht sicher ist, ob die vorgeschlagenen Antworten relevant sind, die Eingabeunterhaltung nicht auf Englisch ist oder das Modell sensible Themen erkennt.