ML Kit dapat menghasilkan balasan singkat untuk pesan menggunakan model di perangkat.
Untuk menghasilkan smart reply, Anda harus meneruskan log pesan terbaru dalam percakapan ke ML Kit. Jika ML Kit menentukan percakapan dalam bahasa Inggris, dan percakapan tersebut tidak berpotensi berisi hal yang sensitif, ML Kit akan menghasilkan hingga tiga balasan, yang dapat digunakan sebagai saran untuk pengguna Anda.
Paket | Dijual terpisah | |
---|---|---|
Nama library | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
Penerapan | Model ditautkan secara statis ke aplikasi Anda pada waktu build. | Model didownload secara dinamis melalui Layanan Google Play. |
Dampak ukuran aplikasi | Peningkatan ukuran sekitar 5,7 MB. | Peningkatan ukuran sekitar 200 KB. |
Waktu inisialisasi | Model akan langsung tersedia. | Mungkin harus menunggu model didownload sebelum penggunaan pertama. |
Cobalah
- Coba aplikasi contoh untuk melihat contoh penggunaan API ini.
Sebelum memulai
Dalam file
build.gradle
level project, pastikan Anda menyertakan repositori Maven Google di bagianbuildscript
danallprojects
.Tambahkan dependensi untuk library Android ML Kit ke file gradle level aplikasi modul Anda, biasanya
app/build.gradle
. Pilih salah satu dependensi berikut berdasarkan kebutuhan Anda:- Untuk memaketkan model dengan aplikasi Anda:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }
- Untuk menggunakan model di Layanan Google Play:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1' }
Jika memilih untuk menggunakan model di Layanan Google Play, Anda dapat mengonfigurasi aplikasi untuk mendownload model secara otomatis ke perangkat setelah aplikasi diinstal dari Play Store. Dengan menambahkan deklarasi berikut ke file
AndroidManifest.xml
aplikasi Anda:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="smart_reply" > <!-- To use multiple models: android:value="smart_reply,model2,model3" --> </application>
Anda juga dapat memeriksa ketersediaan model secara eksplisit dan meminta download melalui ModuleInstallClient API layanan Google Play.
Jika Anda tidak mengaktifkan download model waktu-instal atau meminta download eksplisit, model akan didownload saat pertama kali Anda menjalankan generator balasan pintar. Permintaan yang Anda buat sebelum download selesai tidak akan menghasilkan apa pun.
1. Membuat objek histori percakapan
Untuk menghasilkan smart reply, Anda harus meneruskan
List
objekTextMessage
yang diurutkan secara kronologis ke ML Kit, dengan stempel waktu paling awal terlebih dahulu.Setiap kali pengguna mengirim pesan, tambahkan pesan tersebut dan stempel waktunya ke histori percakapan:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
Setiap kali pengguna menerima pesan, tambahkan pesan tersebut, stempel waktunya, dan ID pengguna pengirim pesan ke histori percakapan. ID pengguna dapat berupa string apa pun yang secara unik mengidentifikasi pengirim pesan dalam percakapan. ID pengguna tidak perlu terkait dengan data pengguna apa pun, dan ID pengguna tidak perlu konsisten antara percakapan atau permintaan pada generator smart reply.
Kotlin
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId))
Java
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId));
Objek histori percakapan akan terlihat seperti contoh berikut:
Stempel waktu userID isLocalUser Pesan Kamis 21 Februari 13.13.39 PST 2019 true are you on your way? Kamis 21 Februari 13.15.03 PST 2019 FRIEND0 false Maaf, saya akan terlambat. ML Kit menyarankan balasan untuk pesan terakhir dalam histori percakapan. Pesan terakhir harus berasal dari pengguna non-lokal. Dalam contoh di atas, pesan terakhir dalam percakapan berasal dari pengguna non-lokal FRIEND0. Saat Anda meneruskan log ini ke ML Kit, log akan menyarankan balasan untuk pesan FRIENDO: "Maaf, saya terlambat!"
2. Mendapatkan balasan pesan
Untuk menghasilkan smart reply pada suatu pesan, dapatkan instance
SmartReplyGenerator
dan teruskan histori percakapan ke metodesuggestReplies()
-nya:Kotlin
val smartReplyGenerator = SmartReply.getClient() smartReply.suggestReplies(conversation) .addOnSuccessListener { result -> if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) { // Task completed successfully // ... } } .addOnFailureListener { // Task failed with an exception // ... }
Java
SmartReplyGenerator smartReply = SmartReply.getClient(); smartReply.suggestReplies(conversation) .addOnSuccessListener(new OnSuccessListener
() { @Override public void onSuccess(SmartReplySuggestionResult result) { if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // 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 // ... } }); Jika operasi berhasil, objek
SmartReplySuggestionResult
akan diteruskan ke pengendali yang berhasil. Objek ini berisi daftar hingga tiga balasan yang disarankan, yang dapat Anda presentasikan kepada pengguna:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
Perlu diperhatikan bahwa ML Kit mungkin tidak akan menampilkan hasil jika model tidak yakin pada relevansi balasan yang disarankan, percakapan input tidak ditulis dalam bahasa Inggris, atau jika model mendeteksi adanya hal yang sensitif.