iOS पर एमएल किट की मदद से स्मार्ट जवाब जनरेट करें

एमएल किट, डिवाइस पर मौजूद मॉडल का इस्तेमाल करके मैसेज के छोटे जवाब जनरेट कर सकती है.

स्मार्ट जवाब जनरेट करने के लिए, आपको किसी बातचीत में मौजूद हाल ही के मैसेज का लॉग, एमएल किट में रखना होता है. अगर ML किट से यह तय किया जाता है कि बातचीत अंग्रेज़ी में है और उसमें कोई संवेदनशील विषय न हो, तो ML Kit तीन जवाब जनरेट करता है. इनका सुझाव उपयोगकर्ता को दिया जा सकता है.

इसे आज़माएं

शुरू करने से पहले

  1. अपनी Podfile में, इन एमएल किट के पॉड शामिल करें:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. अपने प्रोजेक्ट के पॉड इंस्टॉल या अपडेट करने के बाद, .xcworkspace का इस्तेमाल करके Xcode प्रोजेक्ट खोलें. ML Kit, Xcode के 12.4 या इसके बाद वाले वर्शन पर काम करती है.

1. बातचीत के इतिहास का ऑब्जेक्ट बनाना

स्मार्ट जवाब जनरेट करने के लिए, ML Kit को TextMessage ऑब्जेक्ट की तारीख के हिसाब से क्रम में लगाया जाता है. इसमें, सबसे पुराने टाइमस्टैंप पहले शामिल होते हैं. जब भी उपयोगकर्ता कोई मैसेज भेजता है या पाने पर, बातचीत के इतिहास में वह मैसेज, उसका टाइमस्टैंप, और मैसेज भेजने वाले का यूज़र आईडी जोड़ें.

यूज़र आईडी कोई भी ऐसी स्ट्रिंग हो सकती है जिससे बातचीत में, भेजने वाले की पहचान होती है. यूज़र आईडी को किसी उपयोगकर्ता डेटा से मेल खाने की ज़रूरत नहीं है. साथ ही, यूज़र आईडी को बातचीत या स्मार्ट जवाब जनरेटर की बातचीत के बीच एक जैसा होना ज़रूरी नहीं है.

अगर यह मैसेज उस व्यक्ति ने भेजा था जिसे आपको जवाब देने का सुझाव देना है, तो isLocalUser को 'सही है' पर सेट करें.

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 मैसेज
गुरु, 21 फ़रवरी 2019 13:13:39 पीएसटी 2019 सही क्या तुम रास्ते में हो?
गुरु, 21 फ़रवरी 2019 13:15:03 पीएसटी 2019 FRIEND0 false मुझे देर हो रही है, माफ़ करें!

एमएल किट, बातचीत के इतिहास के आखिरी मैसेज के जवाब का सुझाव देती है. आखिरी मैसेज, स्थानीय उपयोगकर्ता का नहीं होना चाहिए. ऊपर दिए गए उदाहरण में, बातचीत का आखिरी मैसेज गैर-स्थानीय उपयोगकर्ता दोस्त0 से मिला है. जब ML Kit में इस लॉग का इस्तेमाल किया जाता है, तो यह लॉग दोस्तो ने इस मैसेज के जवाब का सुझाव दिया है: "देर से चल रहे हैं, माफ़ करें!"

2. मैसेज का जवाब पाएं

किसी मैसेज का स्मार्ट जवाब जनरेट करने के लिए, 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 किट तब नतीजे न दिखाए, जब मॉडल को यह भरोसा न हो कि सुझाए गए जवाब कितने काम के हैं. इसके अलावा, यह भी हो सकता है कि इनपुट वाली बातचीत अंग्रेज़ी में न हो या मॉडल किसी संवेदनशील विषय की पहचान करे.