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