يمكن أن تنشئ حزمة تعلُّم الآلة (ML Kit) ردودًا قصيرة على الرسائل باستخدام نموذج على الجهاز فقط.
لإنشاء ردود سريعة، عليك تزويد حزمة تعلُّم الآلة (ML Kit) بسجلّ للرسائل الأخيرة في محادثة. إذا تبيّن لحزمة تعلُّم الآلة (ML Kit) أنّ المحادثة باللغة الإنجليزية وأنّها لا تتضمّن موضوعًا قد يكون حسّاسًا، تنشئ حزمة تعلُّم الآلة (ML Kit) ما يصل إلى ثلاثة ردود يمكنك اقتراحها على المستخدم.
| مُجمَّعة | غير مجمّعة | |
|---|---|---|
| اسم المكتبة | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
| التنفيذ | يتم ربط النموذج بتطبيقك بشكل ثابت في مدّة التصميم. | يتم تنزيل النموذج ديناميكيًا من خلال "خدمات Google Play". |
| تأثير حجم التطبيق | زيادة في الحجم تبلغ 5.7 ميغابايت تقريبًا | زيادة في الحجم تبلغ 200 كيلوبايت تقريبًا |
| وقت التهيئة | النموذج متاح على الفور. | قد يكون عليك الانتظار إلى أن يتم تنزيل النموذج قبل استخدامه لأول مرة. |
للتجربة:
- يمكنك تجربة التطبيق النموذجي للاطّلاع على مثال على استخدام واجهة برمجة التطبيقات هذه.
قبل البدء
في ملف
build.gradleعلى مستوى المشروع، تأكَّد من تضمين مستودع Maven من Google في كلٍّ من قسمَيbuildscriptوallprojects.أضِف التبعيات لمكتبات حزمة تعلُّم الآلة (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>يمكنك أيضًا التحقّق بشكل صريح من توفُّر النموذج وطلب تنزيله من خلال "خدمات Google Play" واجهة برمجة التطبيقات ModuleInstallClient.
إذا لم تفعِّل عمليات تنزيل النموذج في وقت التثبيت أو لم تطلب تنزيله بشكل صريح، يتم تنزيل النموذج في المرة الأولى التي تشغّل فيها أداة إنشاء الردود السريعة. لن تظهر أي نتائج للطلبات التي تقدّمها قبل اكتمال التنزيل.
1- إنشاء كائن لسجلّ المحادثات
لإنشاء ردود سريعة، عليك تزويد حزمة تعلُّم الآلة (ML Kit) بـ
Listمن كائناتTextMessageمرتّبة زمنيًا، مع ظهور الطابع الزمني الأقدم أولاً.عندما يرسل المستخدم رسالة، أضِف الرسالة والطابع الزمني الخاص بها إلى سجلّ المحادثات:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
جافا
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
عندما يتلقّى المستخدم رسالة، أضِف الرسالة والطابع الزمني الخاص بها ومعرّف المستخدم للمرسِل إلى سجلّ المحادثات. يمكن أن يكون معرّف المستخدم أي سلسلة تحدّد المرسِل بشكل فريد ضمن المحادثة. ليس من الضروري أن يتطابق معرّف المستخدم مع أي بيانات للمستخدمين، وليس من الضروري أن يكون معرّف المستخدم متطابقًا بين المحادثات أو عمليات استدعاء أداة إنشاء الردود السريعة.
Kotlin
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId))
جافا
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId));
يبدو كائن سجلّ المحادثات على النحو التالي:
الطابع الزمني userID isLocalUser رسالة Thu Feb 21 13:13:39 PST 2019 صحيح هل أنت في الطريق؟ Thu Feb 21 13:15:03 PST 2019 FRIEND0 خطأ أنا متأخر، آسف. تقترح حزمة تعلُّم الآلة (ML Kit) ردودًا على آخر رسالة في سجلّ المحادثات. يجب أن تكون الرسالة الأخيرة من مستخدم غير محلي. في المثال أعلاه، الرسالة الأخيرة في المحادثة هي من المستخدم غير المحلي FRIEND0. عندما تزوّد حزمة تعلُّم الآلة (ML Kit) بهذا السجلّ، تقترح ردودًا على رسالة FRIEND0: "أنا متأخر، آسف".
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 // ... }
جافا
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 }
جافا
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
يُرجى العِلم أنّ حزمة تعلُّم الآلة (ML Kit) قد لا تعرض نتائج إذا لم يكن النموذج واثقًا من مدى صلة الردود المقترَحة بالمحادثة، أو إذا لم تكن المحادثة الواردة باللغة الإنجليزية، أو إذا رصد النموذج موضوعًا حسّاسًا.