Puoi utilizzare ML Kit per generare risposte ai messaggi utilizzando un un modello di machine learning.
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.
Prima di iniziare
- Se non hai già aggiunto Firebase alla tua app, puoi farlo seguendo le istruzioni riportate in passaggi nella Guida introduttiva.
- Includi le librerie ML Kit nel tuo Podfile:
Dopo aver installato o aggiornato i pod del progetto, assicurati di aprire Xcode utilizzando il suopod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
.xcworkspace
. - Nell'app, importa Firebase:
import Firebase
@import Firebase;
1. Crea un oggetto cronologia conversazione
Per generare risposte rapide, passi a ML Kit un array ordinato cronologicamente
TextMessage
di oggetti, con il 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.
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)
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];
Un oggetto cronologia conversazione ha il seguente aspetto:
Timestamp | ID utente | Utente locale? | 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! |
Tieni presente che il messaggio più recente nell'esempio riportato sopra proviene da un messaggio non locale utente. Questo è importante perché ML Kit suggerisce le risposte da inviare dall'utente della tua app: l'utente locale. Assicurati di passare a ML Kit un log della conversazione che termina con un messaggio a cui l'utente potrebbe voler rispondere.
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:)
:
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.
// ...
}
}
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.
// ...
}
}];
]
Se l'operazione riesce, un oggetto SmartReplySuggestionResult
viene passato al gestore del completamento. Questo oggetto contiene un elenco di massimo 3 suggerimenti
che puoi presentare all'utente:
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
for (FIRSmartReplySuggestion *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, se la conversazione di input non è in inglese o se il modello rileva argomenti sensibili.