يمكن لحزمة تعلّم الآلة إنشاء ردود قصيرة على الرسائل باستخدام نموذج على الجهاز فقط.
لإنشاء ردود سريعة، يتم تمرير سجلّ الرسائل الحديثة إلى مجموعة أدوات تعلُّم الآلة في محادثة. إذا حدّدت حزمة تعلّم الآلة أنّ المحادثة باللغة الإنجليزية، عدم احتواء المحادثة على موضوع قد يكون حساسًا أو ربما على إنشاء ما يصل إلى ثلاثة ردود، والتي يمكنك اقتراحها على المستخدم.
مُجمَّعة | غير مجمعة | |
---|---|---|
اسم المكتبة | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
التنفيذ | يكون النموذج مرتبطًا بشكلٍ ثابت بتطبيقك في وقت الإصدار. | يتم تنزيل النموذج ديناميكيًا من خلال "خدمات Google Play". |
تأثير حجم التطبيق | زيادة في الحجم بمقدار 5.7 ميغابايت تقريبًا | زيادة في الحجم بمقدار 200 كيلوبايت تقريبًا. |
وقت الإعداد | يتوفّر الطراز على الفور. | قد تضطر إلى الانتظار حتى يتم تنزيل النموذج قبل الاستخدام لأول مرة. |
جرّبه الآن
- يمكنك تجربة نموذج التطبيق من أجل يمكنك الاطّلاع على مثال حول استخدام واجهة برمجة التطبيقات هذه.
قبل البدء
في ملف
build.gradle
على مستوى المشروع، تأكد من تضمين مستودع Maven في كلٍّ من القسمَين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 الصديق0 خطأ عذرًا، سأتأخر! تقترح مجموعة أدوات تعلُّم الآلة الردود على الرسالة الأخيرة في سجلّ المحادثات. الرسالة الأخيرة أن تكون من مستخدم غير محلي في المثال أعلاه، الرسالة الأخيرة في المحادثة من المستخدم غير المحلي 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 // ... }
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 قد لا يعرض نتائج إذا لم يثق النموذج في مدى صلة الردود المقترحة، فإن محادثة الإدخال ليست ضمن باللغة الإنجليزية، أو إذا اكتشف النموذج موضوعًا حساسًا.