Anda dapat menggunakan ML Kit untuk membuat balasan pesan menggunakan model di perangkat.
Untuk menghasilkan balasan cerdas, Anda memberikan ML Kit log pesan terbaru dalam percakapan. Jika ML Kit menentukan bahwa percakapan tersebut dalam bahasa Inggris, dan bahwa percakapan tersebut tidak memiliki topik yang berpotensi sensitif, ML Kit akan menghasilkan hingga tiga balasan, yang dapat Anda sarankan kepada pengguna Anda.
Sebelum kamu memulai
- Jika Anda belum melakukannya, tambahkan Firebase ke proyek Android Anda .
- Tambahkan dependensi untuk library Android ML Kit ke file Gradle modul (level aplikasi) Anda (biasanya
app/build.gradle
): l10napply 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' }
- Juga di file
build.gradle
tingkat aplikasi Anda, nonaktifkan kompresi filetflite
: l10nandroid { // ... aaptOptions { noCompress "tflite" } }
1. Buat objek riwayat percakapan
Untuk menghasilkan balasan cerdas, Anda meneruskan ML Kit ke List
objek FirebaseTextMessage
yang diurutkan secara kronologis, dengan stempel waktu paling awal terlebih dahulu.
Setiap kali pengguna mengirim pesan, tambahkan pesan dan stempel waktunya ke riwayat percakapan:
Jawa
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
Kotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
Setiap kali pengguna menerima pesan, tambahkan pesan, stempel waktunya, dan ID pengguna pengirim ke riwayat percakapan. ID pengguna dapat berupa string apa pun yang secara unik mengidentifikasi pengirim dalam percakapan. ID pengguna tidak perlu sesuai dengan data pengguna apa pun, dan ID pengguna tidak perlu konsisten antara percakapan atau pemanggilan generator balasan cerdas.
Jawa
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
Kotlin
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
Objek riwayat percakapan terlihat seperti contoh berikut:
stempel waktu | identitas pengguna | Pengguna Lokal? | Pesan |
---|---|---|---|
Kamis 21 Februari 13:13:39 PST 2019 | BENAR | apakah kamu sedang dalam perjalanan? | |
Kamis 21 Februari 13:15:03 PST 2019 | TEMAN0 | Salah | Terlambat, maaf! |
Perhatikan bahwa pesan terbaru dalam contoh di atas berasal dari pengguna non-lokal. Ini penting karena ML Kit menyarankan balasan yang dimaksudkan untuk dikirim oleh pengguna aplikasi Anda: pengguna lokal. Anda harus memastikan bahwa Anda meneruskan ML Kit log percakapan yang diakhiri dengan pesan yang mungkin ingin dibalas oleh pengguna Anda.
2. Dapatkan balasan pesan
Untuk menghasilkan balasan cerdas ke sebuah pesan, dapatkan instance FirebaseSmartReply
dan teruskan riwayat percakapan ke metode suggestReplies()
:
Jawa
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
// ...
}
});
Kotlin
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
// ...
}
Jika operasi berhasil, objek SmartReplySuggestionResult
diteruskan ke pengendali sukses. Objek ini berisi daftar hingga 3 balasan yang disarankan, yang dapat Anda berikan kepada pengguna Anda:
Jawa
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
Kotlin
for (suggestion in result.suggestions) {
val replyText = suggestion.text
}
Perhatikan bahwa ML Kit mungkin tidak memberikan hasil jika model tidak yakin dengan relevansi balasan yang disarankan, percakapan input tidak dalam bahasa Inggris, atau jika model mendeteksi materi pelajaran yang sensitif.