إنشاء ردود سريعة باستخدام أدوات تعلّم الآلة على Android

يمكن أن تنشئ ML Kit ردودًا قصيرة على الرسائل باستخدام نموذج على الجهاز.

لإنشاء ردود ذكية، عليك تزويد ML Kit بسجلّ للرسائل الحديثة في محادثة. إذا حدّد ML Kit أنّ المحادثة باللغة الإنجليزية، وأنّها لا تتضمّن مواضيع حساسة محتملة، سينشئ ML Kit ما يصل إلى ثلاث ردود يمكنك اقتراحها على المستخدم.

مُجمَّعةغير مجمَّعة
اسم المكتبةcom.google.mlkit:smart-replycom.google.android.gms:play-services-mlkit-smart-reply
التنفيذيتم ربط النموذج بشكل ثابت بتطبيقك في وقت الإنشاء.يتم تنزيل النموذج بشكل ديناميكي من خلال "خدمات Google Play".
تأثير حجم التطبيقزيادة في الحجم تبلغ حوالي 5.7 ميغابايتزيادة في الحجم تبلغ حوالي 200 كيلوبايت
وقت التهيئةيتوفّر النموذج على الفور.قد تحتاج إلى الانتظار إلى أن يتم تنزيل النموذج قبل استخدامه للمرة الأولى.

جرّبه الآن

  • يمكنك تجربة التطبيق النموذجي للاطّلاع على مثال على كيفية استخدام واجهة برمجة التطبيقات هذه.

قبل البدء

  1. في ملف build.gradle على مستوى المشروع، احرص على تضمين مستودع Maven الخاص بـ Google في كل من القسمَين buildscript وallprojects.

  2. أضِف العناصر التابعة لمكتبات ML Kit على Android إلى ملف Gradle على مستوى التطبيق في الوحدة، والذي يكون عادةً app/build.gradle. اختَر إحدى التبعيات التالية بناءً على احتياجاتك:

    • لتضمين النموذج في تطبيقك، اتّبِع الخطوات التالية:
    dependencies {
      // ...
      // Use this dependency to bundle the model with your app
      implementation 'com.google.mlkit:smart-reply:17.0.4'
    }
    
    • لاستخدام النموذج في "خدمات Google Play"، اتّبِع الخطوات التالية:
    dependencies {
      // ...
      // Use this dependency to use the dynamically downloaded model in Google Play Services
      implementation 'com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1'
    }
    

    إذا اخترت استخدام النموذج في "خدمات Google Play"، يمكنك ضبط تطبيقك لتنزيل النموذج تلقائيًا على الجهاز بعد تثبيت تطبيقك من "متجر Play". من خلال إضافة البيان التالي إلى ملف AndroidManifest.xml الخاص بتطبيقك:

    <application ...>
          ...
          <meta-data
              android:name="com.google.mlkit.vision.DEPENDENCIES"
              android:value="smart_reply" >
          <!-- To use multiple models: android:value="smart_reply,model2,model3" -->
    </application>
    

    يمكنك أيضًا التحقّق بشكل صريح من توفّر النموذج وطلب تنزيله من خلال ModuleInstallClient API في "خدمات Google Play".

    إذا لم تفعِّل عمليات تنزيل النماذج أثناء التثبيت أو لم تطلب تنزيلها بشكل صريح، سيتم تنزيل النموذج في المرة الأولى التي تشغّل فيها أداة إنشاء الردود الذكية. لن تظهر أي نتائج للطلبات التي تقدّمها قبل اكتمال عملية التنزيل.

    1. إنشاء عنصر سجلّ محادثات

    لإنشاء ردود سريعة، عليك تزويد ML Kit List مرتّبًا زمنيًا من عناصر TextMessage، مع وضع الطابع الزمني الأقدم أولاً.

    عندما يرسل المستخدم رسالة، أضِف الرسالة والطابع الزمني الخاص بها إلى سجلّ المحادثات:

    Kotlin

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

    Java

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

    عندما يتلقّى المستخدم رسالة، أضِف الرسالة وطابعها الزمني ورقم تعريف المستخدم الخاص بالمرسِل إلى سجلّ المحادثات. يمكن أن يكون معرّف المستخدم أي سلسلة تحدِّد المرسِل بشكل فريد ضمن المحادثة. لا يشترط أن يتطابق رقم تعريف المستخدم مع أي بيانات للمستخدم، كما لا يشترط أن يكون رقم تعريف المستخدم متسقًا بين المحادثات أو عمليات استدعاء أداة إنشاء الردود الذكية.

    Kotlin

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

    Java

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

    يبدو عنصر سجلّ المحادثات على النحو التالي:

    الطابع الزمني userID isLocalUser الرسالة
    الخميس 21 شباط (فبراير) 13:13:39 بتوقيت المحيط الهادئ 2019 صحيح هل أنت في طريقك؟
    Thu Feb 21 13:15:03 PST 2019 FRIEND0 خطأ سأتأخّر، آسف!

    يقترح ML Kit ردودًا على الرسالة الأخيرة في سجلّ المحادثات. يجب أن تكون الرسالة الأخيرة من مستخدم غير محلي. في المثال أعلاه، الرسالة الأخيرة في المحادثة هي من المستخدم غير المحلي FRIEND0. عند استخدام هذه السجلّات في واجهة برمجة التطبيقات Smart Reply في ML Kit، تقترح ردودًا على رسالة FRIENDO، مثل "سأتأخر، آسف".

    2. الحصول على ردود على الرسائل

    لإنشاء ردود سريعة مقترَحة على رسالة، احصل على مثيل من SmartReplyGenerator وامرر سجلّ المحادثات إلى طريقة suggestReplies():

    Kotlin

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

    Java

    SmartReplyGenerator smartReply = SmartReply.getClient();
    smartReply.suggestReplies(conversation)
            .addOnSuccessListener(new OnSuccessListener() {
                @Override
                public void onSuccess(SmartReplySuggestionResult result) {
                    if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                        // The conversation's language isn't supported, so
                        // 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
                    // ...
                }
            });

    إذا نجحت العملية، يتم تمرير عنصر SmartReplySuggestionResult إلى معالج النجاح. يحتوي هذا العنصر على قائمة تضم ما يصل إلى ثلاثة ردود مقترَحة، يمكنك عرضها للمستخدم:

    Kotlin

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

    Java

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

    يُرجى العِلم أنّ ML Kit قد لا يعرض نتائج إذا لم يكن النموذج واثقًا من مدى صلة الردود المقترَحة بالموضوع، أو إذا لم تكن المحادثة الواردة باللغة الإنجليزية، أو إذا رصد النموذج موضوعًا حسّاسًا.