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

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

لإنشاء ردود سريعة، يجب تمرير سجلّ 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.3'
    }
    
    • لاستخدام النموذج في "خدمات 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 false تأخّرت، عذرًا.

    تقترح هذه الأداة الردود على آخر رسالة في سجلّ المحادثات. يجب أن تكون الرسالة الأخيرة من مستخدم غير محلي. في المثال أعلاه، الرسالة الأخيرة في المحادثة واردة من المستخدم غير المحلي 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();
    }

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