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 conversazione. Se ML Kit stabilisce che la conversazione è in inglese e la conversazione non tratta argomenti potenzialmente sensibili, ML Kit genera fino a tre risposte, che puoi suggerire all'utente.
Prova
- Prova l'app di esempio per per vedere un esempio di utilizzo 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 la relativa
.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 ordinato cronologicamente
TextMessage
di oggetti, con il primo timestamp più recente. Ogni volta che l'utente
invia o riceve un messaggio, aggiunge il messaggio, il relativo timestamp e il messaggio
l'ID utente del mittente nella cronologia della conversazione.
L'ID utente può essere qualsiasi stringa che identifichi in modo univoco il mittente all'interno dei conversazione. Non è necessario che l'ID utente corrisponda a nessun dato utente, e non è necessario che l'ID utente sia coerente tra le conversazioni del generatore di risposte rapide.
Se il messaggio è stato inviato dall'utente a cui vuoi suggerire 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 cronologia conversazione ha il seguente aspetto:
Timestamp | userID | isLocalUser | Messaggio |
---|---|---|---|
gio 21 feb 13:13:39 PST 2019 | true | sei sulla strada giusta? | |
gio 21 feb 13:15:03 PST 2019 | FRIEND0 | falso | Siamo in ritardo, mi dispiace! |
ML Kit suggerisce le risposte all'ultimo messaggio di una cronologia di conversazione. L'ultimo messaggio deve provenire da un utente non locale. Nell'esempio precedente, l'ultimo messaggio della conversazione proviene dall'utente non locale FRIENDS0. L'uso del pass ML Kit per questo log suggerisce risponde al messaggio di FRIENDSO: "In ritardo, scusa!"
2. Ricevere risposte ai messaggi
Per generare risposte rapide a un messaggio, ottieni un'istanza di SmartReply
e passa
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 riesce, viene passato un oggetto SmartReplySuggestionResult
il gestore del completamento. Questo oggetto contiene un elenco di massimo tre
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 la pertinenza delle risposte suggerite, la conversazione di input non rientra in inglese, o se il modello rileva argomenti sensibili.