ML Kit peut générer des réponses courtes 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 d'une conversation. Si ML Kit détermine que la conversation est en anglais et qu'elle ne porte pas sur un sujet potentiellement sensible, il génère jusqu'à trois réponses que vous pouvez suggérer à votre utilisateur.
Groupée | Dégroupé | |
---|---|---|
Nom de la bibliothèque | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
Mise en œuvre | Le modèle est lié de manière statique à votre application au moment de la compilation. | Le modèle est téléchargé de manière dynamique via les services Google Play. |
Impact sur la taille de l'application | Augmentation de la taille d'environ 5,7 Mo. | Augmentation de la taille d'environ 200 ko. |
Délai d'initialisation | Le modèle est disponible immédiatement. | Vous devrez peut-être attendre que le modèle soit téléchargé avant de l'utiliser. |
Essayer
- Testez l'application exemple pour voir un exemple d'utilisation de cette API.
Avant de commencer
Dans le fichier
build.gradle
de niveau projet, veillez à inclure le dépôt Maven de Google à la fois dans les sectionsbuildscript
etallprojects
.Ajoutez les dépendances des bibliothèques Android ML Kit au fichier Gradle au niveau de l'application de votre module, qui est généralement
app/build.gradle
. Choisissez l'une des dépendances suivantes en fonction de vos besoins:- Pour regrouper le modèle avec votre application:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }
- Pour utiliser le modèle dans les services Google Play:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1' }
Si vous choisissez d'utiliser le modèle dans les services Google Play, vous pouvez configurer votre application pour qu'elle télécharge automatiquement le modèle sur l'appareil une fois qu'elle est installée depuis le Play Store. En ajoutant la déclaration suivante au fichier
AndroidManifest.xml
de votre application:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="smart_reply" > <!-- To use multiple models: android:value="smart_reply,model2,model3" --> </application>
Vous pouvez également vérifier explicitement la disponibilité du modèle et demander le téléchargement via l'API ModuleInstallClient des services Google Play.
Si vous n'activez pas le téléchargement de modèles au moment de l'installation ou si vous ne demandez pas de téléchargement explicite, le modèle est téléchargé la première fois que vous exécutez le générateur de réponses intelligentes. Les requêtes que vous effectuez avant la fin du téléchargement ne produisent aucun résultat.
1. Créer un objet d'historique des conversations
Pour générer des réponses suggérées, vous transmettez à ML Kit une
List
d'objetsTextMessage
triée chronologiquement, en commençant par le code temporel le plus ancien.Chaque fois qu'un utilisateur envoie un message, ajoutez-le et son code temporel à l'historique de la conversation:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
Chaque fois que l'utilisateur reçoit un message, ajoutez-le, son code temporel et l'ID utilisateur de l'expéditeur à 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 de correspondre à des données utilisateur, et il n'a pas besoin d'être cohérent entre les conversations ou les invocations du générateur de réponses suggérées.
Kotlin
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId))
Java
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId));
Un objet "historique des conversations" se présente comme suit:
Horodatage userID isLocalUser Message Jeu. 21 févr. 13:13:39 PST 2019 true Vous êtes en route ? Jeu. 21 févr. 13:15:03 PST 2019 FRIEND0 faux Je suis en retard, désolé ! ML Kit suggère des réponses au dernier message de l'historique d'une conversation. Le dernier message doit provenir d'un utilisateur non local. Dans l'exemple ci-dessus, le dernier message de la conversation provient de l'utilisateur non local FRIEND0. Lorsque vous transmettez ce journal à ML Kit, il suggère des réponses au message de FRIENDO: "Je suis en retard, désolé !"
2. Obtenir des réponses aux messages
Pour générer des réponses suggérées à un message, obtenez une instance de
SmartReplyGenerator
et transmettez l'historique de la conversation à sa méthodesuggestReplies()
:Kotlin
val smartReplyGenerator = SmartReply.getClient() smartReply.suggestReplies(conversation) .addOnSuccessListener { result -> if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) { // Task completed successfully // ... } } .addOnFailureListener { // Task failed with an exception // ... }
Java
SmartReplyGenerator smartReply = SmartReply.getClient(); smartReply.suggestReplies(conversation) .addOnSuccessListener(new OnSuccessListener
() { @Override public void onSuccess(SmartReplySuggestionResult result) { if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // 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 // ... } }); Si l'opération aboutit, un objet
SmartReplySuggestionResult
est transmis au gestionnaire de réussite. Cet objet contient une liste de trois suggestions de réponses que vous pouvez présenter à l'utilisateur:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
Notez que ML Kit peut ne pas renvoyer de résultats si le modèle n'est pas sûr de la pertinence des réponses suggérées, si la conversation d'entrée n'est pas en anglais ou si le modèle détecte un sujet sensible.