ML Kit kann mithilfe eines On-Device-Modells kurze Antworten auf Nachrichten generieren.
Um intelligente Antworten zu generieren, übergeben Sie ML Kit ein Log der letzten Nachrichten in einer Unterhaltung. Wenn ML Kit feststellt, dass die Unterhaltung auf Englisch ist und keine potenziell sensiblen Themen enthalten, generiert ML Kit bis zu drei Antworten, die Sie Ihrem Nutzer vorschlagen können.
Ausprobieren
- Probieren Sie die Beispiel-App aus, um ein Beispiel für die Verwendung dieser API zu sehen.
Hinweis
- Nehmen Sie die folgenden ML Kit-Pods in Ihre Podfile-Datei auf:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- Nachdem Sie die Pods Ihres Projekts installiert oder aktualisiert haben, öffnen Sie Ihr Xcode-Projekt mit der zugehörigen
.xcworkspace
. ML Kit wird in Xcode ab Version 12.4 unterstützt.
1. Objekt für den Unterhaltungsverlauf erstellen
Zum Generieren von intelligenten Antworten übergeben Sie ML Kit ein chronologisch geordnetes Array von TextMessage
-Objekten, wobei der früheste Zeitstempel an erster Stelle steht. Immer wenn der Nutzer eine Nachricht sendet oder empfängt, fügen Sie die Nachricht, ihren Zeitstempel und die Nutzer-ID des Nachrichtenabsenders dem Unterhaltungsverlauf hinzu.
Die Nutzer-ID kann ein beliebiger String sein, der den Absender innerhalb der Unterhaltung eindeutig identifiziert. Die User-ID muss keinen Nutzerdaten entsprechen und die User-ID muss zwischen Unterhaltungen oder Aufrufen des intelligenten Antwortgenerators nicht einheitlich sein.
Wenn die Nachricht von dem Nutzer gesendet wurde, dem Sie Antworten vorschlagen möchten, setzen Sie isLocalUser
auf "true".
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 Unterhaltungsverlaufsobjekt sieht wie das folgende Beispiel aus:
Zeitstempel | userID | isLocalUser | die Botschaft und |
---|---|---|---|
Do., 21. Feb., 13:13:39 Uhr (PST) 2019 | true | Bist du auf dem Weg? | |
Do., 21. Feb., 13:15:03 Uhr (PST) 2019 | FRIEND0 | false | Ich verspäte mich, Entschuldigung! |
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 stammt die letzte Nachricht in der Konversation vom nicht lokalen Nutzer friend0. Wenn du dieses Log über ML Kit verwendest, werden Antworten auf die Nachricht von friendO vorgeschlagen: „Tut mir leid!“
2. Antworten auf Nachrichten erhalten
Um intelligente Antworten auf eine Nachricht zu generieren, rufen Sie eine Instanz von SmartReply
ab und übergeben Sie den Unterhaltungsverlauf an seine suggestReplies(for:completion:)
-Methode:
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 ü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 (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, wie relevant die vorgeschlagenen Antworten sind, die Eingabe nicht auf Englisch ist oder wenn das Modell sensible Themen erkennt.