Mit ML Kit unter Android intelligente Antworten generieren

Mit ML Kit können Sie Nachrichtenantworten mit einem On-Device-Modell generieren.

Um intelligente Antworten zu generieren, übergeben Sie ML Kit ein Protokoll der letzten Nachrichten in einem Gespräch. Wenn ML Kit feststellt, dass die Unterhaltung auf Englisch ist und dass keine potenziell sensiblen Themen, ML Kit generiert bis zu drei Antworten, die Sie dem Nutzer vorschlagen können.

Hinweis

  1. Falls noch nicht geschehen, Fügen Sie Firebase zu Ihrem Android-Projekt hinzu.
  2. Abhängigkeiten für die ML Kit-Android-Bibliotheken zu Ihrem Modul hinzufügen Gradle-Datei auf App-Ebene (in der Regel 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. Deaktiviere auch in der Datei build.gradle auf App-Ebene die Komprimierung. von tflite Dateien:
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }

1. Objekt für Unterhaltungsverlauf erstellen

Wenn Sie intelligente Antworten generieren möchten, übergeben Sie ML Kit eine chronologisch sortierte List von FirebaseTextMessage-Objekten, wobei der früheste Zeitstempel zuerst kommt.

Fügen Sie dem Unterhaltungsverlauf immer dann die Nachricht und den Zeitstempel hinzu, wenn der Nutzer eine Nachricht sendet:

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()));
conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()))

Wenn der Nutzer eine Nachricht erhält, fügen Sie die Nachricht, ihren Zeitstempel und den Nutzer-ID des Absenders dem Unterhaltungsverlauf hinzufügen. Die Nutzer-ID kann eine beliebige Zeichenfolge sein, den Absender innerhalb der Konversation eindeutig identifiziert. Die User-ID muss nicht mit Nutzerdaten übereinstimmen und muss nicht zwischen Unterhaltungen oder Aufrufen des Generators für intelligente Antworten konsistent sein.

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId));
conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId))

Ein Objekt für den Unterhaltungsverlauf sieht wie das folgende Beispiel aus:

Zeitstempel Nutzer-ID Lokaler Nutzer? Nachricht
Do., 21. Feb., 13:13:39 PST 2019 wahr Bist du auf dem Weg?
Do., 21. Feb., 13:15:03 PST 2019 FRIEND0 falsch Ich bin leider spät dran.

Beachten Sie, dass die neueste Nachricht im obigen Beispiel von einer nicht-lokalen Quelle stammt. Nutzer. Dies ist wichtig, da ML Kit Antworten vorschlägt, die gesendet werden sollen durch den Nutzer Ihrer App: den lokalen Nutzer. Sie sollten sich vergewissern, ML Kit ein Konversationsprotokoll, das mit einer Nachricht endet, an die der Nutzer möglicherweise auf die Sie antworten möchten.

2. Antworten auf Nachrichten erhalten

Wenn du intelligente Antworten auf eine Nachricht generieren möchtest, ruf eine Instanz von FirebaseSmartReply ab und übergeben Sie den Unterhaltungsverlauf an seine suggestReplies()-Methode:

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

Wenn der Vorgang erfolgreich war, wird ein SmartReplySuggestionResult-Objekt an den Erfolgs-Handler übergeben. Dieses Objekt enthält eine Liste mit bis zu drei vorgeschlagenen Antworten. die Sie Ihren Nutzenden präsentieren können:

for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}
for (suggestion in result.suggestions) {
    val replyText = suggestion.text
}

Beachten Sie, dass ML Kit möglicherweise keine Ergebnisse zurückgibt, wenn das Modell nicht zuversichtlich ist, ob die vorgeschlagenen Antworten relevant sind, oder wenn das Modell sensible Themen erkennt.

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.

Aktualisiert: 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.

Aktualisiert: 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.

Aktualisiert: Jan 16, 2025