Vous pouvez utiliser ML Kit pour générer des réponses aux messages à l'aide d'un modèle sur l'appareil.
Pour générer des réponses suggérées, vous transmettez à ML Kit un journal des messages récents dans une conversationnelle. Si ML Kit détermine que la conversation est en anglais, la conversation n'a pas d'objet potentiellement sensible, ML Kit génère jusqu'à trois réponses, que vous pouvez suggérer à l'utilisateur.
Avant de commencer
- Si ce n'est pas déjà fait, Ajoutez Firebase à votre projet Android.
- Ajouter les dépendances des bibliothèques Android ML Kit à votre module
Fichier Gradle (au niveau de l'application) (généralement
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' }
- Toujours dans le fichier
build.gradle
au niveau de l'application, désactivez la compression. surtflite
fichiers:android { // ... aaptOptions { noCompress "tflite" } }
1. Créer un objet d'historique des conversations
Pour générer des réponses suggérées, vous transmettez à ML Kit un List
d'objets FirebaseTextMessage
triés chronologiquement, en commençant par le code temporel le plus ancien.
Chaque fois que l'utilisateur envoie un message, ajoutez le message et son code temporel à la section historique des conversations:
Java
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
Kotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
Chaque fois que l'utilisateur reçoit un message, ajoutez le message, son code temporel et l'élément l'ID utilisateur de l'expéditeur dans l'historique de la conversation. L'ID utilisateur peut être n'importe quelle chaîne qui identifie de manière unique l'expéditeur dans la conversation. L'ID utilisateur n'a pas besoin correspondant à n'importe quelle donnée utilisateur, et l'ID utilisateur n'a pas besoin d'être cohérent entre les conversations ou les appels du générateur de réponses suggérées.
Java
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
Kotlin
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
Voici un exemple d'objet d'historique des conversations:
Horodatage | User-ID | Utilisateur local ? | Message |
---|---|---|---|
Jeu. 21 févr. 13:13:39 PST 2019 | true | Tu es en route ? | |
Jeu. 21 févr. 13:15:03 PST 2019 | FRIEND0 | faux | Nous sommes en retard, désolé ! |
Notez que le message le plus récent de l'exemple ci-dessus provient d'un message utilisateur. C'est important, car ML Kit suggère des réponses à envoyer par l'utilisateur de votre application: l'utilisateur local. Vous devez être sûr de transmettre ML Kit, un journal de conversation qui se termine par un message auquel votre utilisateur que vous souhaitez répondre.
2. Obtenir des réponses aux messages
Pour générer des réponses suggérées à un message, obtenez une instance de FirebaseSmartReply
et transmettez l'historique de la conversation à sa méthode suggestReplies()
:
Java
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
// ...
}
});
Kotlin
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
// ...
}
Si l'opération aboutit, un objet SmartReplySuggestionResult
est transmis à
le gestionnaire de réussite. Cet objet contient une liste de trois réponses suggérées au maximum, que vous pouvez présenter à votre utilisateur :
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
Kotlin
for (suggestion in result.suggestions) {
val replyText = suggestion.text
}
Notez que ML Kit risque de ne pas renvoyer de résultats si le modèle n'est pas sûr de la pertinence des réponses suggérées, la conversation d'entrée n'est pas ou si le modèle détecte des sujets sensibles.