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, görüşmenin İngilizce olduğunu ve hassas olabilecek bir konu içermediğini belirlerse kullanıcınıza önerebileceğiniz en fazla üç yanıt oluşturur.
| Gruplandırılanlar | Paket dışı | |
|---|---|---|
| Kitaplık adı | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
| Uygulama | Model, derleme sırası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ı deneyin.
Başlamadan önce
Proje düzeyindeki
build.gradledosyanızda, Google'ın Maven deposunu hembuildscripthem deallprojectsbölümlerinize eklediğinizden emin olun.ML Kit Android kitaplıklarının bağımlılıklarını, 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ı seçerseniz uygulamanızı, Play Store'dan yüklendikten sonra modeli cihaza otomatik olarak indirecek şekilde yapılandırabilirsiniz. Uygulamanızın
AndroidManifest.xmldosyası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>Ayrıca, Google Play Hizmetleri ModuleInstallClient API aracılığıyla modelin kullanılabilirliğini açıkça kontrol edebilir ve indirme isteğinde bulunabilirsiniz.
Yükleme sırasında model indirmeyi etkinleştirmez 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 işlemi 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 erken zaman damgası ilk sırada olacak şekilde kronolojik olarak sıralanmış bir
ListTextMessagenesnesi listesi iletirsiniz.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 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örüşme içinde göndereni benzersiz şekilde tanımlayan herhangi bir dize olabilir. Kullanıcı kimliğinin herhangi bir kullanıcı verisine karşılık gelmesi gerekmez ve kullanıcı kimliğinin, görüşme veya akıllı yanıt oluşturucunun ç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 örneğe benzer:
Zaman damgası userID isLocalUser Mesaj Thu Feb 21 13:13:39 PST 2019 doğru Yolda mısın? Thu Feb 21 13:15:03 PST 2019 FRIEND0 yanlış Gecikeceğim, kusura bakmayın. ML Kiti, görüşme geçmişindeki son mesaja önerilen yanıtlar önerir. Son mesaj, yerel olmayan bir kullanıcıdan gelmelidir. Yukarıdaki örnekte, görüşmedeki son mesaj yerel olmayan kullanıcı FRIEND0'dan gelmiştir. ML Kit'e bu günlüğü ilettiğinizde, ARKADAŞ'ın "Gecikiyorum, kusura bakma!" mesajına yanıtlar önerir.
2. Mesaj yanıtlarını alma
Bir mesaja akıllı yanıtlar oluşturmak için
SmartReplyGeneratorörneği 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şleyicisine bir
SmartReplySuggestionResultnesnesi 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ş görüşmesi İngilizce değilse veya model hassas bir konu algılarsa ML Kit'in sonuç döndürmeyebileceğini unutmayın.