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