ML Kit, cihaz üzerinde bir modeli kullanarak mesajlara kısa yanıtlar oluşturabilir.
Akıllı yanıtlar oluşturmak için ML Kit'e bir görüşmedeki son mesajların günlüğünü iletirsiniz. ML Kit, konuşmanın İngilizce olduğunu ve hassas olabilecek bir konu içermediğini belirlerse kullanıcılarınıza önerebileceğiniz en fazla üç yanıt oluşturur.
Gruplandırılanlar | Paket halinde sunulmayan | |
---|---|---|
Kitaplık adı | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
Uygulama | Model, derleme zamanında uygulamanıza statik olarak bağlanır. | Model, Google Play Hizmetleri aracılığıyla dinamik olarak indirilir. |
Uygulama boyutunun etkisi | Boyutta yaklaşık 5,7 MB artış. | Boyut yaklaşık 200 KB artar. |
İlk kullanıma hazırlama süresi | Model hemen kullanılabilir. | İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir. |
Deneyin
- Bu API'nin kullanımına dair bir örnek görmek için örnek uygulamayı inceleyin.
Başlamadan önce
Proje düzeyindeki
build.gradle
dosyanızda, Google'ın Maven deposunu hembuildscript
hem deallprojects
bölümüne eklediğinizden emin olun.ML Kit Android kitaplıklarına ait bağımlılıkları, modülünüzün uygulama düzeyindeki Gradle dosyasına (genellikle
app/build.gradle
) ekleyin. İhtiyaçlarınıza göre aşağıdaki bağımlılıklardan birini seçin:- Modeli uygulamanızla paketlemek için:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }
- Modeli Google Play Hizmetleri'nde kullanmak için:
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' }
Google Play Hizmetleri'ndeki modeli kullanmayı tercih ederseniz uygulamanızı, Play Store'dan yüklendikten sonra modeli cihaza otomatik olarak indirecek şekilde yapılandırabilirsiniz. Uygulamanızın
AndroidManifest.xml
dosyasına aşağıdaki bildirimi ekleyerek:<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>
Modelin kullanılabilirliğini açıkça kontrol edebilir ve Google Play Hizmetleri ModuleInstallClient API aracılığıyla indirme isteğinde bulunabilirsiniz.
Yükleme sırasında model indirmelerini etkinleştirmezseniz veya açıkça indirme isteğinde bulunmazsanız model, akıllı yanıt oluşturucuyu ilk kez çalıştırdığınızda indirilir. İndirme tamamlanmadan önce yaptığınız istekler sonuç vermez.
1. Sohbet geçmişi nesnesi oluşturma
Akıllı yanıtlar oluşturmak için ML Kit'e, en eski zaman damgası önce olacak şekilde kronolojik olarak sıralanmış
List
nesneleri iletirsiniz.TextMessage
Kullanıcı her mesaj gönderdiğinde mesajı ve zaman damgasını görüşme geçmişine ekleyin:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
Kullanıcı her ileti aldığında iletiyi, zaman damgasını ve gönderenin kullanıcı kimliğini görüşme geçmişine ekleyin. Kullanıcı kimliği, görüşmedeki göndereni benzersiz şekilde tanımlayan herhangi bir dize olabilir. Kullanıcı kimliğinin herhangi bir kullanıcı verisiyle eşleşmesi gerekmez ve kullanıcı kimliğinin, akıllı yanıt oluşturucunun görüşme veya çağrıları arasında tutarlı olması gerekmez.
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));
Bir görüşme geçmişi nesnesi aşağıdaki örneğe benzer:
Zaman damgası userID isLocalUser Mesaj Thu Feb 21 13:13:39 PST 2019 doğru are you on your way? Thu Feb 21 13:15:03 PST 2019 FRIEND0 yanlış Gecikeceğim, üzgünüm. ML Kit, görüşme geçmişindeki son mesaja yanıt önerir. Son mesaj, yerel olmayan bir kullanıcıdan gelmelidir. Yukarıdaki örnekte, görüşmedeki son mesaj, yerel olmayan kullanıcı FRIEND0'dan geliyor. Bu günlük, ML Kit'i kullanarak FRIENDO'nun mesajına "Geç kalıyorum, üzgünüm!" şeklinde yanıt verilmesini öneriyor.
2. Mesaj yanıtlarını alma
Bir mesaja akıllı yanıtlar oluşturmak için
SmartReplyGenerator
örneğini alın ve görüşme geçmişinisuggestReplies()
yöntemine aktarın: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 // ... } }); İşlem başarılı olursa başarı işleyicisine bir
SmartReplySuggestionResult
nesnesi iletilir. Bu nesne, kullanıcınıza sunabileceğiniz en fazla üç önerilen yanıtın listesini içerir:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
Model, önerilen yanıtların alaka düzeyinden emin değilse, giriş konuşması İngilizce değilse veya model hassas bir konu algılarsa ML Kit sonuç döndürmeyebilir.