Android'de Makine Öğrenimi Kiti ile Akıllı Yanıtlar Oluşturma

Mesaj yanıtlarını cihaz üzerinde oluşturmak için ML Kit'i kullanabilirsiniz. modeli.

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.

Başlamadan önce

  1. Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
  2. Modülünüze ML Kit Android kitaplıkları için bağımlılıkları ekleyin (uygulama düzeyinde) Gradle dosyası (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üzeyindeki build.gradle dosyanızda sıkıştırmayı devre dışı bırakın /tflite dosya:
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }

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, FirebaseTextMessage nesne.

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

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

Kullanıcı bir mesaj aldığında mesajı, zaman damgasını ve ileti dizisi geçmişi iç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.

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

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

Zaman damgası User-ID Yerel Kullanıcı mısınız? 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 ARKADAŞ0 false Üzgünüz, geciktiğiniz için yazıyorum.

Yukarıdaki örnekte yer alan en son mesajın yerel olmayan bir kullanıcıya ait olduğunu unutmayın. belirtir. Makine Öğrenimi Kiti, gönderilecek yanıtlar önerdiği için bu önemlidir. Yerel kullanıcı tarafından belirlenir. Projeyi tamamlamak için Makine Öğrenimi Kiti, kullanıcınızın gönderebileceği bir mesajla biten yanıt vermek istiyorsunuz.

2. Mesaj yanıtları alma

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

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

JavaKotlin
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}
for (suggestion in result.suggestions) {
    val replyText = suggestion.text
}

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.

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

Güncellenme tarihi: Feb 28, 2025

STAGE uses Firebase and Flutter to cut release time in half

Güncellenme tarihi: Oct 3, 2024

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

Güncellenme tarihi: Feb 28, 2025