एंड्रॉइड पर एमएल किट के साथ स्मार्ट उत्तर उत्पन्न करें

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

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

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

  1. यदि आपने पहले से नहीं किया है, तो अपने एंड्रॉइड प्रोजेक्ट में फायरबेस जोड़ें
  2. अपने मॉड्यूल (ऐप-स्तर) ग्रैडल फ़ाइल (आमतौर पर app/build.gradle ) में एमएल किट एंड्रॉइड लाइब्रेरीज़ के लिए निर्भरताएं जोड़ें:
    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
      // ...
      implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
      implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7'
    }
    
  3. इसके अलावा, अपनी ऐप-स्तरीय build.gradle फ़ाइल में, tflite फ़ाइलों का संपीड़न अक्षम करें:
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }
    

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

स्मार्ट उत्तर उत्पन्न करने के लिए, आप एमएल किट को पहले शुरुआती टाइमस्टैम्प के साथ FirebaseTextMessage ऑब्जेक्ट्स की कालानुक्रमिक रूप से क्रमबद्ध List पास करते हैं।

जब भी उपयोगकर्ता कोई संदेश भेजता है, तो संदेश और उसके टाइमस्टैम्प को वार्तालाप इतिहास में जोड़ें:

जावा

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()));

Kotlin

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()))

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

जावा

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId));

Kotlin

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId))

वार्तालाप इतिहास ऑब्जेक्ट निम्न उदाहरण जैसा दिखता है:

समय-चिह्न उपयोगकर्ता पहचान स्थानीय उपयोगकर्ता? संदेश
गुरु फ़रवरी 21 13:13:39 पीएसटी 2019 सत्य क्या आप अपने रास्ते पर हैं?
गुरु 21 फरवरी 13:15:03 पीएसटी 2019 मित्र0 असत्य देर से चल रहा है, क्षमा करें!

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

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

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

जावा

FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
        .addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
            @Override
            public void onSuccess(SmartReplySuggestionResult result) {
                if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                    // The conversation's language isn't supported, so the
                    // the result doesn't contain any suggestions.
                } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
                    // Task completed successfully
                    // ...
                }
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Task failed with an exception
                // ...
            }
        });

Kotlin

val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
        .addOnSuccessListener { result ->
            if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                // The conversation's language isn't supported, so the
                // the result doesn't contain any suggestions.
            } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
                // Task completed successfully
                // ...
            }
        }
        .addOnFailureListener {
            // Task failed with an exception
            // ...
        }

यदि ऑपरेशन सफल होता है, तो एक SmartReplySuggestionResult ऑब्जेक्ट सफलता हैंडलर को भेज दिया जाता है। इस ऑब्जेक्ट में अधिकतम 3 सुझाए गए उत्तरों की एक सूची है, जिन्हें आप अपने उपयोगकर्ता को प्रस्तुत कर सकते हैं:

जावा

for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}

Kotlin

for (suggestion in result.suggestions) {
    val replyText = suggestion.text
}

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