iOS-এ ML Kit-এর সাহায্যে স্মার্ট রিপ্লাই জেনারেট করা

ML Kit, ডিভাইসে থাকা মডেল ব্যবহার করে মেসেজের সংক্ষিপ্ত উত্তর জেনারেট করতে পারে।

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

এটি ব্যবহার করে দেখুন

শুরু করার আগে

  1. আপনার Podfile-এ নিম্নলিখিত ML Kit পড অন্তর্ভুক্ত করুন:
    pod 'GoogleMLKit/SmartReply', '8.0.0'
    
  2. আপনার প্রোজেক্টের Pod ইনস্টল বা আপডেট করার পরে, এর .xcworkspace ব্যবহার করে আপনার Xcode প্রোজেক্ট খুলুন। Xcode ভার্সন 12.4 বা তার পরের যেকোনও ভার্সনে ML Kit কাজ করে।

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

স্মার্ট রিপ্লাই তৈরি করতে, ML Kit-কে আপনি TextMessage অবজেক্টের কালানুক্রমিক-সাজানো অ্যারে দেন, যেখানে সবচেয়ে আগের টাইমস্ট্যাম্প প্রথমে থাকে। ব্যবহারকারী যখনই কোনও মেসেজ পাঠান বা পান, তখন কথোপকথনের ইতিহাসে মেসেজ, এর টাইমস্ট্যাম্প এবং মেসেজ প্রেরকের ইউজার আইডি যোগ করুন।

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

আপনি যে ব্যবহারকারীকে উত্তর সাজেস্ট করতে চান, মেসেজটি তার পাঠানো হলে, isLocalUser-এর মান true হিসেবে সেট করুন।

Swift

var conversation: [TextMessage] = []

// Then, for each message sent and received:
let message = TextMessage(
    text: "How are you?",
    timestamp: Date().timeIntervalSince1970,
    userID: "userId",
    isLocalUser: false)
conversation.append(message)

Objective-C

NSMutableArray *conversation = [NSMutableArray array];

// Then, for each message sent and received:
MLKTextMessage *message = [[MLKTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

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

টাইমস্ট্যাম্প userID isLocalUser মেসেজ
Thu Feb 21 13:13:39 PST 2019 সত্য তুমি কি রওনা দিয়েছো?
Thu Feb 21 13:15:03 PST 2019 FRIEND0 মিথ্যা দেরি হয়ে গেছে, দুঃখিত!

কথোপকথনের ইতিহাসে শেষ মেসেজের উত্তর দেওয়ার জন্য ML Kit সাজেশন দেয়। শেষ মেসেজটি স্থানীয় নয় এমন ব্যবহারকারীর থেকে আসতে হবে। উপরের উদাহরণে, কথোপকথনের শেষ মেসেজটি স্থানীয় নয় এমন ব্যবহারকারী FRIEND0-এর থেকে এসেছে। আপনি ML Kit-এর পাস ব্যবহার করলে, এই লগ FRIENDO-এর মেসেজের উত্তর সাজেস্ট করে: "দেরি হয়ে গেছে, দুঃখিত!"

২. মেসেজের উত্তর পাওয়া

মেসেজের জন্য স্মার্ট রিপ্লাই জেনারেট করতে, SmartReply-এর একটি ইনস্ট্যান্স পান এবং এর suggestReplies(for:completion:) পদ্ধতিতে কথোপকথনের ইতিহাস পাস করুন:

Swift

SmartReply.smartReply().suggestReplies(for: conversation) { result, error in
    guard error == nil, let result = result else {
        return
    }
    if (result.status == .notSupportedLanguage) {
        // The conversation's language isn't supported, so
        // the result doesn't contain any suggestions.
    } else if (result.status == .success) {
        // Successfully suggested smart replies.
        // ...
    }
}

Objective-C

MLKSmartReply *smartReply = [MLKSmartReply smartReply];
[smartReply suggestRepliesForMessages:inputText
                           completion:^(MLKSmartReplySuggestionResult * _Nullable result,
                                        NSError * _Nullable error) {
  if (error || !result) {
    return;
  }
  if (result.status == MLKSmartReplyResultStatusNotSupportedLanguage) {
      // The conversation's language isn't supported, so
      // the result doesn't contain any suggestions.
  } else if (result.status == MLKSmartReplyResultStatusSuccess) {
      // Successfully suggested smart replies.
      // ...
  }
}];

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

Swift

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

Objective-C

for (MLKSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

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