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