आईओएस पर एमएल किट के साथ स्मार्ट उत्तर उत्पन्न करें

आप ऑन-डिवाइस मॉडल का उपयोग करके संदेश उत्तर उत्पन्न करने के लिए एमएल किट का उपयोग कर सकते हैं।

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

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

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

    तीव्र

    import Firebase

    उद्देश्य सी

    @import Firebase;

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

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

उपयोगकर्ता आईडी कोई भी स्ट्रिंग हो सकती है जो वार्तालाप के भीतर प्रेषक की विशिष्ट पहचान करती है। उपयोगकर्ता आईडी को किसी भी उपयोगकर्ता डेटा के अनुरूप होने की आवश्यकता नहीं है, और उपयोगकर्ता आईडी को स्मार्ट रिप्लाई जनरेटर की बातचीत या आह्वान के बीच सुसंगत होने की आवश्यकता नहीं है।

यदि संदेश उस उपयोगकर्ता द्वारा भेजा गया था जिसे आप उत्तर सुझाना चाहते हैं, तो isLocalUser को सत्य पर सेट करें।

तीव्र

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)

उद्देश्य सी

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 सत्य क्या आप अपने रास्ते पर हैं?
गुरु 21 फरवरी 13:15:03 पीएसटी 2019 मित्र0 असत्य देर से चल रहा है, क्षमा करें!

ध्यान दें कि उपरोक्त उदाहरण में सबसे ताज़ा संदेश एक गैर-स्थानीय उपयोगकर्ता का है। यह महत्वपूर्ण है क्योंकि एमएल किट आपके ऐप के उपयोगकर्ता द्वारा भेजे जाने वाले उत्तरों का सुझाव देता है: स्थानीय उपयोगकर्ता। आपको यह सुनिश्चित करना चाहिए कि आप एमएल किट को एक वार्तालाप लॉग भेज रहे हैं जो एक संदेश के साथ समाप्त होता है जिसका आपका उपयोगकर्ता उत्तर देना चाहता है।

2. संदेश उत्तर प्राप्त करें

किसी संदेश के लिए स्मार्ट उत्तर उत्पन्न करने के लिए, SmartReply का एक उदाहरण प्राप्त करें और वार्तालाप इतिहास को उसके suggestReplies(for:completion:) विधि में पास करें:

तीव्र

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

उद्देश्य सी

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 ऑब्जेक्ट पूर्णता हैंडलर को भेज दिया जाता है। इस ऑब्जेक्ट में अधिकतम 3 सुझाए गए उत्तरों की एक सूची है, जिन्हें आप अपने उपयोगकर्ता को प्रस्तुत कर सकते हैं:

तीव्र

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

उद्देश्य सी

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

ध्यान दें कि यदि मॉडल सुझाए गए उत्तरों की प्रासंगिकता के बारे में आश्वस्त नहीं है, इनपुट वार्तालाप अंग्रेजी में नहीं है, या यदि मॉडल संवेदनशील विषय वस्तु का पता लगाता है, तो एमएल किट परिणाम नहीं लौटा सकता है।