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 l'hai già fatto, aggiungi Firebase al tuo progetto Android.
- Aggiungi al modulo le dipendenze per le librerie Android di ML Kit
file Gradle (a livello di app) (di solito
app/build.gradle
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7' }
- Nel file
build.gradle
a livello di app, disattiva anche la compressione dei filetflite
:android { // ... aaptOptions { noCompress "tflite" } }
1. Crea un oggetto cronologia conversazione
Per generare risposte rapide, passi a ML Kit un List
di oggetti FirebaseTextMessage
ordinati cronologicamente, con il timestamp più antico in primo piano.
Ogni volta che l'utente invia un messaggio, aggiungi il messaggio e il relativo timestamp alla cronologia delle conversazioni:
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
Ogni volta che l'utente riceve un messaggio, aggiungi il messaggio, il timestamp e l'ID utente del mittente alla cronologia della conversazione. L'ID utente può essere qualsiasi stringa identifica in modo univoco il mittente nella conversazione. L'ID utente non deve corrispondere a dati utente e non deve essere coerente tra una conversazione o le invocazioni del generatore di risposte intelligenti.
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
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 utente non locale. Questo è importante perché ML Kit suggerisce risposte da inviare dall'utente della tua app: l'utente locale. Devi assicurarti di superare ML Kit è un log di conversazione che termina con un messaggio a cui l'utente vuoi rispondere.
2. Ricevere risposte ai messaggi
Per generare risposte rapide a un messaggio, ottieni un'istanza di FirebaseSmartReply
e passa la cronologia della conversazione al relativo metodo suggestReplies()
:
FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
.addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
@Override
public void onSuccess(SmartReplySuggestionResult result) {
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
.addOnSuccessListener { result ->
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
.addOnFailureListener {
// Task failed with an exception
// ...
}
Se l'operazione riesce, viene passato un oggetto SmartReplySuggestionResult
il gestore del successo. Questo oggetto contiene un elenco di massimo 3 risposte suggerite,
che puoi presentare all'utente:
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
for (suggestion in result.suggestions) {
val replyText = 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.