Android'de ML Kit ile akıllı yanıtlar oluşturma

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 son mesajların bir günlüğünü yardımcı olur. Makine Öğrenimi Kiti sohbetin İngilizce olduğunu belirlerse ve Bu konuşmanın hassas olabilecek bir konusu yok, ML Kit , kullanıcılarınıza önerebileceğiniz üç adede kadar yanıt oluşturur.

GruplandırılanlarGruplandırılmamış
Kitaplık adıcom.google.mlkit:smart-replycom.google.android.gms:play-services-mlkit-smart-reply
UygulamaModel, derleme sırasında statik olarak uygulamanıza bağlıdır.Model, Google Play Hizmetleri aracılığıyla dinamik olarak indirilir.
Uygulama boyutunun etkisiYaklaşık 5,7 MB boyut artışı.Yaklaşık 200 KB boyut artışı.
Başlatma süresiModel hemen kullanılabilir.İlk kullanımdan önce modelin indirilmesini beklemeniz gerekebilir.

Deneyin

Başlamadan önce

  1. Proje düzeyindeki build.gradle dosyanıza Google'ın Hem buildscript hem de allprojects bölümlerinizde Maven deposu.

  2. ML Kit Android kitaplıklarının bağımlılıklarını modülünüze uygulama düzeyinde gradle dosyasıdır. Bu dosya genellikle app/build.gradle boyutundadır. Şunlardan birini seçin: bağımlılıkları belirlemenize yardımcı olur:

    • 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.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 aşağıdakileri yapılandırabilirsiniz: uygulamanız sonrasında modeli cihaza otomatik olarak indirecek Google Play Store'dan yüklenir. Aşağıdaki beyanı uygulamanın AndroidManifest.xml dosyası:

    <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 ModuleLoadClient API'si

    Yükleme zamanı modelinin indirilmesini etkinleştirmezseniz veya açıkça indirme isteğinde bulunmazsanız model, akıllı yanıt oluşturma aracını 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 Makine Öğrenimi Kiti'ni kronolojik olarak sıralanmış bir List ile göndermeniz gerekir En eski zaman damgası başta olmak üzere, TextMessage nesne.

    Kullanıcı bir mesaj gönderdiğinde mesajı ve zaman damgasını sohbet geçmişi:

    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 ileti dizisi geçmişine aktarmanızı sağlar. Kullanıcı kimliği, ileti dizisindeki göndereni benzersiz şekilde tanımlar. Kullanıcı kimliği için tutarlı olması gerekmez ve kullanıcı kimliğinin 250'den fazla yayınlanamıyor.

    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 ileti dizisi geçmişi nesnesi aşağıdaki örneğe benzer:

    Zaman damgası userID isLocalUser Mesaj
    21 Şubat Perşembe 13:13:39 PST 2019 true yolda mısınız?
    21 Şubat Perşembe 13:15:03 PST 2019 FRIEND0 false Üzgünüz, geciktiğiniz için yazıyorum.

    Makine Öğrenimi Kiti, bir sohbet geçmişindeki son mesaja yanıtlar önerir. Son mesaj yerel olmayan bir kullanıcıya ait olmalıdır. Yukarıdaki örnekte, görüşmedeki son mesaj FRIEND0 yerel olmayan kullanıcıdan geliyor. Pass ML Kit'i kullandığınızda size şu önerilerde bulunur: FRIENDO'nun mesajına yanıt: "Gecikeceğim, kusura bakmayın!"

    2. Mesaj yanıtları alma

    Bir mesaja akıllı yanıtlar oluşturmak için SmartReplyGenerator öğesinin bir örneğini alın ve sohbet geçmişini suggestReplies() yöntemine geçirin:

    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 şuraya bir SmartReplySuggestionResult nesnesi iletilir: yardımcı olur. Bu nesnede en fazla üç önerilen yanıtın olduğu bir liste bulunur. Bunları kullanıcılarınıza gösterebilirsiniz:

    Kotlin

    for (suggestion in result.suggestions) {
        val replyText = suggestion.text
    }

    Java

    for (SmartReplySuggestion suggestion : result.getSuggestions()) {
        String replyText = suggestion.getText();
    }

    Model, bilgiye güvenmiyorsa ML Kit'in sonuç döndürmeyebileceğini unutmayın. önerilen yanıtların alaka düzeyi açısından İngilizce veya model hassas bir konu tespit ederse.