ML Kit, cihaz üzerinde bir model kullanarak mesajlara kısa yanıtlar oluşturabilir.
Akıllı yanıtlar oluşturmak için bir görüşmedeki son mesajların günlüğünü ML Kit'e iletirsiniz. ML Kit konuşmanın İngilizce olduğunu belirlerse ve görüşmede hassas olabilecek bir konunun yer almadığı tespit edilirse ML Kit, kullanıcınıza önerebileceğiniz en fazla üç yanıt oluşturur.
Gruplandırılanlar | Grup halinde olmayanlar | |
---|---|---|
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ğlıdır. | Model, Google Play Hizmetleri üzerinden dinamik olarak indirilir. |
Uygulama boyutu etkisi | Boyutta yaklaşık 5,7 MB büyüme. | Boyutta yaklaşık 200 KB artış. |
Başlatma süresi | Model hemen kullanılabilir. | İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir. |
Deneyin
- Bu API'nin örnek bir 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ı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 gruplandırmak için:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.3' }
- 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 indirecek şekilde 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>
Ayrıca, model kullanılabilirliğini açıkça kontrol edebilir ve Google Play Hizmetleri ModuleInstallClient API üzerinden indirme isteğinde bulunabilirsiniz.
Yükleme zamanı modeli indirmelerini etkinleştirmezseniz veya açık bir şekilde indirme isteğinde bulunmazsanız akıllı yanıt oluşturma aracını ilk kez çalıştırdığınızda model indirilir. İndirme tamamlanmadan önce yaptığınız istekler sonuç vermez.
1. Görüşme geçmişi nesnesi oluşturma
Akıllı yanıtlar oluşturmak için ML Kit'e kronolojik olarak sıralanmış
TextMessage
nesnedenList
tanesini iletirsiniz. En erken zaman damgası en baştadır.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ı bir mesaj aldığında mesajı, zaman damgasını ve gönderenin kullanıcı kimliğini görüşme geçmişine ekleyin. User ID, görüşme içinde göndereni benzersiz bir şekilde tanımlayan herhangi bir dize olabilir. User-ID'nin herhangi bir kullanıcı verisine karşılık gelmesi gerekmez ve kullanıcı kimliğinin, akıllı yanıt oluşturucunun ileti dizisi 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));
İleti dizisi geçmişi nesnesi aşağıdaki örneğe benzer:
Zaman damgası userID isLocalUser Mesaj 21 Şubat 2019 13:13:39 PST 2019 true Yolda mısın? 21 Şubat 2019 13:15:03 PST 2019 FRIEND0 false Üzgünüm, çok geç kaldım. Makine Öğrenimi Kiti, sohbet geçmişindeki son mesaja yanıt önerir. Son mesaj yerel olmayan bir kullanıcıdan gelmelidir. Yukarıdaki örnekte, sohbetteki son mesaj yerel olmayan FRIEND0 adlı kullanıcıdan gelmiştir. Bu günlüğü geçerken ML Kit'i kullandığınızda, FRIENDO'nun şu mesajına yanıt önerileri sunulur: "Üzgünüm, geç kalacağım."
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şleyiciye bir
SmartReplySuggestionResult
nesnesi aktarılır. Bu nesne, kullanıcınıza sunabileceğiniz en fazla üç önerilen yanıtın bir 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, girilen ileti dizisi İngilizce değilse veya model hassas bir konu algılarsa ML Kit'in sonuç döndürmeyebileceğini unutmayın.