Android'de ML Kit ile Akıllı Yanıtlar Oluşturun

Cihazdaki bir modeli kullanarak mesaj yanıtları oluşturmak için ML Kit'i kullanabilirsiniz.

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 görüşmenin potansiyel olarak hassas bir konu içermediğini belirlerse, ML Kit, kullanıcılarınıza önerebileceğiniz en fazla üç yanıt oluşturur.

Sen başlamadan önce

  1. Henüz yapmadıysanız Android projenize Firebase'i ekleyin .
  2. ML Kit Android kitaplıklarının bağımlılıklarını modülünüze (uygulama düzeyi) Gradle dosyasına ekleyin (genellikle app/build.gradle ):
    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
      // ...
      implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
      implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7'
    }
    
  3. Ayrıca uygulama düzeyinde build.gradle dosyanızda tflite dosyalarının sıkıştırılmasını devre dışı bırakın:
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }
    

1. Bir konuşma geçmişi nesnesi oluşturun

Akıllı yanıtlar oluşturmak için, en eski zaman damgası ilk sırada olacak şekilde ML Kit'e FirebaseTextMessage nesnelerinin kronolojik olarak sıralanmış bir List iletirsiniz.

Kullanıcı her mesaj gönderdiğinde, mesajı ve zaman damgasını konuşma geçmişine ekleyin:

Java

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()));

Kotlin

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()))

Kullanıcı bir mesaj aldığında, mesajı, zaman damgasını ve gönderenin kullanıcı kimliğini konuşma 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ı verisine karşılık gelmesi gerekmez ve kullanıcı kimliğinin akıllı yanıt oluşturucunun konuşmaları veya çağrıları arasında tutarlı olması gerekmez.

Java

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId));

Kotlin

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId))

Bir konuşma geçmişi nesnesi aşağıdaki örneğe benzer:

Zaman damgası Kullanıcı kimliği Yerel Kullanıcı? İleti
21 Şubat Per 13:13:39 PST 2019 doğru Yolunda mısın?
21 Şubat Per 13:15:03 PST 2019 ARKADAŞ0 YANLIŞ Geç kalıyorum, üzgünüm!

Yukarıdaki örnekteki en son mesajın yerel olmayan bir kullanıcıdan geldiğini unutmayın. Bu önemlidir çünkü ML Kit, uygulamanızın kullanıcısı olan yerel kullanıcı tarafından gönderilmesi amaçlanan yanıtları önerir. ML Kit'e, kullanıcınızın yanıtlamak isteyebileceği bir mesajla biten bir konuşma günlüğü ilettiğinizden emin olmalısınız.

2. Mesaj yanıtlarını alın

Bir mesaja akıllı yanıtlar oluşturmak için FirebaseSmartReply örneğini alın ve konuşma geçmişini suggestReplies() yöntemine aktarın:

Java

FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
        .addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
            @Override
            public void onSuccess(SmartReplySuggestionResult result) {
                if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                    // The conversation's language isn't supported, so the
                    // 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
                // ...
            }
        });

Kotlin

val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
        .addOnSuccessListener { result ->
            if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                // The conversation's language isn't supported, so the
                // the result doesn't contain any suggestions.
            } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
                // Task completed successfully
                // ...
            }
        }
        .addOnFailureListener {
            // Task failed with an exception
            // ...
        }

İşlem başarılı olursa, başarı işleyicisine bir SmartReplySuggestionResult nesnesi iletilir. Bu nesne, kullanıcılarınıza sunabileceğiniz en fazla 3 önerilen yanıttan oluşan bir liste içerir:

Java

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

Kotlin

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

Modelin önerilen yanıtların alaka düzeyi konusunda güvensiz olması, giriş konuşmasının İngilizce olmaması veya modelin hassas bir konu algılaması durumunda ML Kit'in sonuçları döndürmeyebileceğini unutmayın.