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
- Falls noch nicht geschehen, Fügen Sie Firebase zu Ihrem Android-Projekt hinzu.
- 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' }
- Deaktiviere auch in der Datei
build.gradle
auf App-Ebene die Komprimierung. vontflite
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.