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

Sie können ML Kit verwenden, um Antworten auf Nachrichten über ein Gerät zu generieren modellieren.

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 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 im Startleitfaden.
  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 unbedingt Ihren Xcode mithilfe der .xcworkspace zu erstellen.
  3. Importieren Sie Firebase in Ihre App:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

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. 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.

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:
FIRTextMessage *message = [[FIRTextMessage 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 Nutzer-ID Lokaler Nutzer? Nachricht
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.

Beachten Sie, dass die neueste Nachricht im obigen Beispiel von einer nicht-lokalen Quelle stammt. Nutzer. Dies ist wichtig, da ML Kit Antworten vorschlägt, die gesendet werden sollen durch den Nutzer Ihrer App: den 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

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

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 die Sie Ihren Nutzern 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);
}

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