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