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
- Wenn Sie Ihrer App noch nicht Firebase hinzugefügt haben, folgen Sie der Anleitung im Einstiegsleitfaden.
- 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
. - 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.