Sie können ML Kit verwenden, um Nachrichtenantworten mithilfe eines Modells auf dem Gerät zu generieren.
Um intelligente Antworten zu generieren, übergeben Sie ML Kit ein Protokoll der letzten Nachrichten in einer Konversation. Wenn ML Kit feststellt, dass die Konversation auf Englisch stattfindet und dass die Konversation keinen potenziell sensiblen Inhalt hat, generiert ML Kit bis zu drei Antworten, die Sie Ihrem Benutzer vorschlagen können.
Bevor Sie beginnen
- Wenn Sie Ihrer App Firebase noch nicht hinzugefügt haben, befolgen Sie dazu die Schritte im Leitfaden „Erste Schritte“ .
- Schließen Sie die ML Kit-Bibliotheken in Ihre Poddatei ein:
pod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, müssen Sie Ihr Xcode-Projekt mit seiner.xcworkspace
. - Importieren Sie in Ihrer App Firebase:
Schnell
import Firebase
Ziel c
@import Firebase;
1. Erstellen Sie ein Konversationsverlaufsobjekt
Um intelligente Antworten zu generieren, übergeben Sie ML Kit ein chronologisch geordnetes Array von TextMessage
-Objekten mit dem frühesten Zeitstempel zuerst. Immer wenn der Benutzer eine Nachricht sendet oder empfängt, fügen Sie die Nachricht, ihren Zeitstempel und die Benutzer-ID des Absenders der Nachricht zum Konversationsverlauf hinzu.
Die Benutzer-ID kann eine beliebige Zeichenfolge sein, die den Absender innerhalb der Konversation eindeutig identifiziert. Die Benutzer-ID muss keinen Benutzerdaten entsprechen, und die Benutzer-ID muss zwischen Konversationen oder Aufrufen des Smart-Reply-Generators nicht konsistent sein.
Wenn die Nachricht von dem Benutzer gesendet wurde, dem Sie Antworten vorschlagen möchten, setzen isLocalUser
auf true.
Schnell
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)
Ziel 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 Konversationsverlaufsobjekt sieht wie im folgenden Beispiel aus:
Zeitstempel | Benutzeridentifikation | Lokaler Benutzer? | Nachricht |
---|---|---|---|
Donnerstag, 21. Februar, 13:13:39 PST 2019 | Stimmt | bist du auf dem Weg? | |
Donnerstag, 21. Februar, 13:15:03 PST 2019 | FREUND0 | FALSCH | Verspätung, tut mir leid! |
Beachten Sie, dass die neueste Nachricht im obigen Beispiel von einem nicht lokalen Benutzer stammt. Dies ist wichtig, da ML Kit Antworten vorschlägt, die vom Benutzer Ihrer App gesendet werden sollen: dem lokalen Benutzer. Sie sollten sicherstellen, dass Sie ML Kit ein Konversationsprotokoll übergeben, das mit einer Nachricht endet, auf die Ihr Benutzer möglicherweise antworten möchte.
2. Nachrichtenantworten erhalten
Um intelligente Antworten auf eine Nachricht zu generieren, rufen Sie eine Instanz von SmartReply
und übergeben Sie den Konversationsverlauf an die Methode suggestReplies(for:completion:)
:
Schnell
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.
// ...
}
}
Ziel 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 ein SmartReplySuggestionResult
Objekt an den Abschlusshandler übergeben. Dieses Objekt enthält eine Liste mit bis zu 3 Antwortvorschlägen, die Sie Ihrem Benutzer präsentieren können:
Schnell
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
Ziel 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 von der Relevanz der vorgeschlagenen Antworten überzeugt ist, die Eingabekonversation nicht auf Englisch ist oder wenn das Modell sensible Themen erkennt.