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

يمكن لمجموعة 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. إنشاء عنصر سجلّ محادثات

    لإنشاء الردود السريعة، عليك تمرير 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 صحيح هل أنت في طريقك؟
    الخميس 21 شباط (فبراير) 13:15:03 بتوقيت المحيط الهادئ 2019 FRIEND0 خطأ نعتذر عن التأخير.

    تقترح ML Kit ردودًا على الرسالة الأخيرة في سجلّ المحادثات. يجب أن تكون الرسالة الأخيرة واردة من مستخدم غير محلي. في المثال أعلاه، تأتي آخر رسالة في المحادثة من المستخدم غير المحلي FRIEND0. عند استخدام هذا السجلّ مع 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 قد لا تعرِض نتائج إذا لم يكن النموذج متأكّدًا من مدى صلة الردود المقترَحة بالمحادثة، أو إذا لم تكن المحادثة المُدخلة باللغة الإنجليزية، أو إذا رصد النموذج موضوعًا حسّاسًا.