Générer des réponses suggérées avec ML Kit sur Android

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

  1. Si ce n'est pas déjà fait, Ajoutez Firebase à votre projet Android.
  2. 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'
    }
  3. Toujours dans le fichier build.gradle au niveau de l'application, désactivez la compression. sur tflite 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:

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()));
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.

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId));
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():

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
            // ...
        }

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 :

for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}
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.

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

Mise à jour le Feb 28, 2025

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

Mise à jour le Feb 28, 2025

Firebase gives you the tools and infrastructure you need to build better mobile and web apps, improve app quality, and grow your business.

Mise à jour le Jan 16, 2025