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