Android এ ML কিট দিয়ে স্মার্ট উত্তর তৈরি করুন

আপনি একটি অন-ডিভাইস মডেল ব্যবহার করে বার্তার উত্তর তৈরি করতে ML কিট ব্যবহার করতে পারেন।

স্মার্ট উত্তর তৈরি করতে, আপনি একটি কথোপকথনে সাম্প্রতিক বার্তাগুলির একটি লগ ML Kit পাস করেন৷ যদি ML Kit নির্ধারণ করে যে কথোপকথনটি ইংরেজিতে, এবং কথোপকথনে সম্ভাব্য সংবেদনশীল বিষয় নেই, ML Kit তিনটি পর্যন্ত উত্তর তৈরি করে, যা আপনি আপনার ব্যবহারকারীকে পরামর্শ দিতে পারেন।

আপনি শুরু করার আগে

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন তাহলে আপনার Android প্রকল্পে Firebase যোগ করুন
  2. আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত app/build.gradle ) ML কিট অ্যান্ড্রয়েড লাইব্রেরির নির্ভরতা যুক্ত করুন :
    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. এছাড়াও আপনার অ্যাপ-লেভেল build.gradle ফাইলে, tflite ফাইলের কম্প্রেশন অক্ষম করুন:
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }

1. একটি কথোপকথনের ইতিহাস অবজেক্ট তৈরি করুন

স্মার্ট উত্তর জেনারেট করতে, আপনি ML Kit-কে প্রথম দিকের টাইমস্ট্যাম্প সহ FirebaseTextMessage অবজেক্টের একটি কালানুক্রমিক-অর্ডার করা List পাস করেন।

যখনই ব্যবহারকারী একটি বার্তা পাঠান, কথোপকথনের ইতিহাসে বার্তা এবং এর টাইমস্ট্যাম্প যোগ করুন:

জাভা

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

কোটলিন

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

যখনই ব্যবহারকারী একটি বার্তা পায়, কথোপকথনের ইতিহাসে বার্তা, তার টাইমস্ট্যাম্প এবং প্রেরকের ব্যবহারকারীর আইডি যোগ করুন। ব্যবহারকারী আইডি যে কোনো স্ট্রিং হতে পারে যা কথোপকথনের মধ্যে প্রেরককে অনন্যভাবে সনাক্ত করে। ব্যবহারকারীর আইডির কোনো ব্যবহারকারীর ডেটার সাথে সঙ্গতিপূর্ণ হওয়ার প্রয়োজন নেই, এবং ব্যবহারকারীর আইডি স্মার্ট উত্তর জেনারেটরের কথোপকথন বা আহ্বানের মধ্যে সামঞ্জস্যপূর্ণ হতে হবে না।

জাভা

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

কোটলিন

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

একটি কথোপকথন ইতিহাস বস্তু নিম্নলিখিত উদাহরণ মত দেখায়:

টাইমস্ট্যাম্প ইউজার আইডি স্থানীয় ব্যবহারকারী? বার্তা
বৃহস্পতি ফেব্রুয়ারি 21 13:13:39 PST 2019 সত্য আপনি কি আপনার পথে?
বৃহস্পতি ফেব্রুয়ারি 21 13:15:03 PST 2019 FRIEND0 মিথ্যা দেরিতে চলছে, দুঃখিত!

উল্লেখ্য যে উপরের উদাহরণে সবচেয়ে সাম্প্রতিক বার্তাটি একজন অ-স্থানীয় ব্যবহারকারীর কাছ থেকে এসেছে। এটি গুরুত্বপূর্ণ কারণ এমএল কিট আপনার অ্যাপের ব্যবহারকারী: স্থানীয় ব্যবহারকারীর দ্বারা পাঠানোর উদ্দেশ্যে উত্তরের পরামর্শ দেয়। আপনার নিশ্চিত হওয়া উচিত যে আপনি ML Kit-এ একটি কথোপকথন লগ পাস করছেন যা একটি বার্তা দিয়ে শেষ হয় যা আপনার ব্যবহারকারী উত্তর দিতে চাইতে পারে।

2. বার্তার উত্তর পান

একটি বার্তার স্মার্ট উত্তর তৈরি করতে, FirebaseSmartReply এর একটি উদাহরণ পান এবং কথোপকথনের ইতিহাসটি এর suggestReplies() পদ্ধতিতে পাস করুন:

জাভা

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
            // ...
        }

অপারেশন সফল হলে, একটি SmartReplySuggestionResult অবজেক্ট সফল হ্যান্ডলারের কাছে পাঠানো হয়। এই বস্তুটিতে 3টি পর্যন্ত প্রস্তাবিত উত্তরের একটি তালিকা রয়েছে, যা আপনি আপনার ব্যবহারকারীর কাছে উপস্থাপন করতে পারেন:

জাভা

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

কোটলিন

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

মনে রাখবেন যে মডেলটি প্রস্তাবিত উত্তরগুলির প্রাসঙ্গিকতার বিষয়ে আত্মবিশ্বাসী না হলে, ইনপুট কথোপকথনটি ইংরেজিতে না হলে, বা মডেলটি সংবেদনশীল বিষয় সনাক্ত করলে ML Kit ফলাফল নাও দিতে পারে৷