Generare risposte rapide con ML Kit su Android

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

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android.
  2. 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'
    }
  3. Nel file build.gradle a livello di app, disattiva anche la compressione dei file tflite:
    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:

JavaKotlin
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.

JavaKotlin
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():

JavaKotlin
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:

JavaKotlin
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.

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.

Aggiornamento: Feb 28, 2025

STAGE uses Firebase and Flutter to cut release time in half

Aggiornamento: Oct 3, 2024

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.

Aggiornamento: Feb 28, 2025