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

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

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

इसे आज़माएं

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

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

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

स्मार्ट जवाब जनरेट करने के लिए, आप 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:
MLKTextMessage *message = [[MLKTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

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

टाइमस्टैंप UserID isLocalUser मैसेज
गुरुवार 21 फ़रवरी 13:13:39 पीएसटी 2019 true क्या आप रास्ते में हैं?
गुरुवार 21 फ़रवरी 13:15:03 पीएसटी 2019 फ़्रेंडली false देर हो रही है, माफ़ करें!

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

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