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

मशीन पर दिए गए मॉडल का इस्तेमाल करके, मैसेज का जवाब देने के लिए एमएल किट का इस्तेमाल किया जा सकता है.

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

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

  1. अगर आपने पहले से ही अपने ऐप्लिकेशन में Firebase नहीं जोड़ा है, तो शुरुआती निर्देश में दिए गए निर्देशों का पालन करके ऐसा करें.
  2. अपनी Podfile में ML Kit लाइब्रेरी शामिल करें:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    अपने प्रोजेक्ट के पॉड को इंस्टॉल या अपडेट करने के बाद, पक्का करें कि आपने Xcode प्रोजेक्ट को इसके .xcworkspace का इस्तेमाल करके खोला हो.
  3. अपने ऐप्लिकेशन में, Firebase इंपोर्ट करें:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

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

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

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

अगर मैसेज किसी ऐसे व्यक्ति ने भेजा है जिसके लिए आपको जवाबों के सुझाव चाहिए, तो 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:
FIRTextMessage *message = [[FIRTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

बातचीत के इतिहास का ऑब्जेक्ट कैसा दिखता है, यह जानने के लिए नीचे दिया गया उदाहरण देखें:

टाइमस्टैंप यूज़र आईडी स्थानीय उपयोगकर्ता? मैसेज
गुरुवार 21 फ़रवरी 13:13:39 पीएसटी 2019 true क्या आप अपने रास्ते में हैं?
गुरुवार 21 फ़रवरी 13:15:03 पीएसटी 2019 दोस्त0 false मुझे देर हो रही है, माफ़ करें!

ध्यान दें कि ऊपर दिए गए उदाहरण में हाल ही में दिखाया गया मैसेज किसी ऐसे व्यक्ति ने भेजा है जो स्थानीय नहीं है. यह अहम है, क्योंकि एमएल किट आपके ऐप्लिकेशन के उपयोगकर्ता यानी कि स्थानीय उपयोगकर्ता के भेजे जाने वाले जवाबों का सुझाव देती है. पक्का करें कि आपने ML Kit को बातचीत लॉग पास किया है. इसके आखिर में एक मैसेज है, जिसका जवाब आपका उपयोगकर्ता दे सकता है.

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

किसी मैसेज के स्मार्ट जवाब जनरेट करने के लिए, SmartReply का इंस्टेंस पाएं और बातचीत के इतिहास को इसके suggestReplies(for:completion:) तरीके में पास करें:

Swift

let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.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
        // the result doesn't contain any suggestions.
    } else if (result.status == .success) {
        // Successfully suggested smart replies.
        // ...
    }
}

Objective-C

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

कार्रवाई पूरी होने पर, SmartReplySuggestionResult ऑब्जेक्ट को पूरा करने वाले हैंडलर को पास किया जाता है. इस ऑब्जेक्ट में सुझाए गए ज़्यादा से ज़्यादा तीन जवाबों की सूची होती है. इन्हें अपने उपयोगकर्ता को दिखाया जा सकता है:

Swift

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

Objective-C

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

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