ML Kit, cihaz üzerinde bir model 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, sohbetin İngilizce olduğunu ve hassas olabilecek bir konu içermediğini belirlerse kullanıcınıza önerebileceğiniz üç adede kadar yanıt oluşturur.
Gruplandırılanlar | Paketsiz | |
---|---|---|
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 | Boyut yaklaşık 5,7 MB artar. | Boyut yaklaşık 200 KB artar. |
Başlatma süresi | Model hemen kullanılabilir. | İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir. |
Deneyin
- Bu API'nin örnek kullanımını 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ümlerinize eklediğinizden emin olun.ML Kit Android kitaplıklarının bağımlılıkları, modülünüzün uygulama düzeyindeki Gradle dosyasına (genellikle
app/build.gradle
) eklenmelidir. İhtiyaçlarınıza göre aşağıdaki bağımlılıklardan birini seçin:- Modeli uygulamanızla paket haline getirmek 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' }
Modeli Google Play Hizmetleri'nde kullanmayı seçerseniz uygulamanız Play Store'dan yüklendikten sonra modeli cihaza otomatik olarak indirmesi için uygulamanızı yapılandırabilirsiniz. Uygulamanızın
AndroidManifest.xml
dosyasına aşağıdaki beyanı 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 üzerinden indirme isteğinde bulunabilirsiniz.
Yükleme sırasında model indirmelerini etkinleştirmezseniz veya açık indirme isteğinde bulunmazsanız model, akıllı yanıt oluşturucuyu ilk kez çalıştırdığınızda indirilir. İndirme işlemi tamamlanmadan önce gönderdiğiniz 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ının önce geleceği şekilde kronolojik olarak sıralanmış bir
List
TextMessage
nesnesi listesi iletirsiniz.Kullanıcı 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ı bir mesaj aldığında mesajı, zaman damgasını ve gönderenin kullanıcı kimliğini görüşme geçmişine ekleyin. Kullanıcı kimliği, göndereni görüşmede benzersiz şekilde tanımlayan herhangi bir dize olabilir. Kullanıcı kimliğinin herhangi bir kullanıcı verisi ile eşleşmesi gerekmez ve akıllı yanıt oluşturucunun sohbet 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));
Görüşme geçmişi nesnesi aşağıdaki örnek gibi görünür:
Zaman damgası userID isLocalUser Mesaj 21 Şubat 2019 Per 13:13:39 PST true Yoldayım. 21 Şubat 2019 Per 13:15:03 PST FRIEND0 yanlış Biraz gecikeceğim. ML Kit, ileti dizisi 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 FRIEND0 kullanıcısından gönderilmiştir. ML Kit'e bu günlüğü gönderdiğinizde FRIENDO'nun mesajına şu yanıtları önerir: "Geç kalıyorum, özür dilerim."
2. Mesaj yanıtlarını alma
Bir mesaja akıllı yanıt oluşturmak için
SmartReplyGenerator
sınıfının bir örneğini alın ve görüşme geçmişinisuggestReplies()
yöntemine iletin: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şleyiciye 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ş sohbeti İngilizce değilse veya model hassas bir konu algılarsa ML Kit'in sonuç döndürmeyebileceğini unutmayın.