ML Kit può generare risposte brevi ai messaggi utilizzando un modello on-device.
Per generare risposte rapide, passi a ML Kit un log dei messaggi recenti in una conversazione. Se ML Kit determina che la conversazione è in inglese e che non include argomenti potenzialmente sensibili, ML Kit genera fino a tre risposte, che puoi suggerire all'utente.
Prova
- Prova l'app di esempio per vedere un utilizzo di esempio di questa API.
Prima di iniziare
- Includi i seguenti pod ML Kit nel podfile:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- Dopo aver installato o aggiornato i pod del progetto, apri il progetto Xcode utilizzando il relativo
.xcworkspace
. ML Kit è supportato in Xcode versione 12.4 o successiva.
1. Crea un oggetto cronologia conversazione
Per generare risposte rapide, passi a ML Kit un array di oggetti TextMessage
in ordine cronologico, partendo dal timestamp più recente. Ogni volta che l'utente invia o riceve un messaggio, aggiungi quest'ultimo, il relativo timestamp e l'ID utente del mittente del messaggio alla cronologia della conversazione.
L'ID utente può essere qualsiasi stringa che identifichi in modo univoco il mittente all'interno della conversazione. L'ID utente non deve corrispondere ad alcun dato utente e non deve essere coerente tra le conversazioni o le chiamate del generatore di risposte rapide.
Se il messaggio è stato inviato dall'utente a cui vuoi suggerire delle risposte, imposta isLocalUser
su 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];
Un oggetto della cronologia delle conversazioni è simile al seguente esempio:
Timestamp | userID | isLocalUser | Messaggio |
---|---|---|---|
Gio 21 Feb 13:13:39 PST 2019 | true | stai arrivando? | |
Gio 21 Feb 13:15:03 PST 2019 | FRIEND0 | false | Siamo in ritardo, scusa! |
ML Kit suggerisce risposte all'ultimo messaggio nella cronologia delle conversazioni. L'ultimo messaggio deve provenire da un utente non locale. Nell'esempio precedente, l'ultimo messaggio nella conversazione proviene dall'utente non locale friend0. Quando usi questo log, supera il kit ML, questo suggerisce delle risposte al messaggio di FriendsO: "Sono in ritardo, scusa!".
2. Ricevi risposte ai messaggi
Per generare risposte rapide a un messaggio, ottieni un'istanza di SmartReply
e trasmetti la cronologia della conversazione al relativo metodo suggestReplies(for:completion:)
:
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. // ... } }];
Se l'operazione ha esito positivo, un oggetto SmartReplySuggestionResult
viene passato al gestore di completamento. Questo oggetto contiene un elenco di massimo tre risposte suggerite, che puoi presentare all'utente:
Swift
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
Objective-C
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
Tieni presente che ML Kit potrebbe non restituire risultati se il modello non è sicuro della pertinenza delle risposte suggerite, la conversazione di input non è in inglese o se il modello rileva un oggetto sensibile.