يمكنك استخدام حزمة تعلّم الآلة لإنشاء ردود على الرسائل باستخدام جهاز. الأمثل.
لإنشاء ردود سريعة، يتم تمرير سجلّ الرسائل الحديثة إلى مجموعة أدوات تعلُّم الآلة في محادثة. إذا حدّدت حزمة تعلّم الآلة أنّ المحادثة باللغة الإنجليزية، عدم احتواء المحادثة على موضوع قد يكون حساسًا أو ربما على إنشاء ما يصل إلى ثلاثة ردود، والتي يمكنك اقتراحها على المستخدم.
قبل البدء
- إذا لم تكن قد فعلت ذلك بالفعل، إضافة Firebase إلى مشروع Android
- إضافة الموارد التابعة لمكتبات ML Kit على Android إلى الوحدة
(على مستوى التطبيق) ملف Gradle (عادةً
app/build.gradle
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7' }
- أوقِف الضغط أيضًا في ملف
build.gradle
على مستوى التطبيق. من إجماليtflite
ملف:android { // ... aaptOptions { noCompress "tflite" } }
1- إنشاء كائن سجلّ المحادثات
لإنشاء ردود سريعة، يمكنك ضبط حزمة تعلُّم الآلة على List
مرتّبة زمنيًا.
من إجمالي FirebaseTextMessage
عنصر، مع الطابع الزمني الأول أولاً.
كلما أرسل المستخدم رسالة، أضف الرسالة وطابعها الزمني إلى سجل المحادثات:
جافا
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
Kotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
وعندما يتلقى المستخدم رسالة، أضف الرسالة وطابعها الزمني معرف المستخدم للمرسل إلى سجل المحادثات. يمكن أن يكون معرف المستخدم أي سلسلة تحدد المرسِل بشكل فريد داخل المحادثة. لا يحتاج رقم تعريف المستخدم إلى لتتوافق مع أي بيانات مستخدم، ولا يلزم أن يكون رقم تعريف المستخدم متسقًا بين المحادثات أو الاستدعاءات لأداة إنشاء الردود السريعة.
جافا
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
Kotlin
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
يبدو عنصر سجلّ المحادثات كما يلي:
الطابع الزمني | رقم تعريف المستخدم | هل أنت مستخدم محلي؟ | الرسالة |
---|---|---|---|
الخميس 21 شباط (فبراير) الساعة 13:13:39 بتوقيت المحيط الهادئ 2019 | صحيح | هل أنت في طريقك؟ | |
الخميس 21 شباط (فبراير)، 13:15:03 بتوقيت المحيط الهادئ 2019 | الصديق0 | خطأ | عذرًا، سأتأخر! |
لاحظ أن أحدث رسالة في المثال أعلاه مأخوذة من رسالة غير محلية المستخدم. هذا الأمر مهم لأنّ حزمة تعلّم الآلة تقترح ردودًا من المفترض إرسالها. مستخدم تطبيقك: المستخدم المحلي. يجب أن تتأكد من أنك تجتاز "تعلُّم الآلة" هو سجلّ محادثات ينتهي برسالة قد ينتقل إليها المستخدم نريد الرد عليها.
2- الحصول على ردود على الرسائل
لإنشاء ردود سريعة على رسالة، يمكنك الحصول على نسخة افتراضية من "FirebaseSmartReply
".
وتمرير سجلّ المحادثات إلى طريقة suggestReplies()
الخاصة به:
جافا
FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
.addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
@Override
public void onSuccess(SmartReplySuggestionResult result) {
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// 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
// ...
}
});
Kotlin
val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
.addOnSuccessListener { result ->
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
.addOnFailureListener {
// Task failed with an exception
// ...
}
إذا نجحت العملية، يتم تمرير كائن SmartReplySuggestionResult
إلى
معالج النجاح. يتضمّن هذا العنصر قائمة تضم ما يصل إلى 3 ردود مقترَحة،
والذي يمكنك تقديمه للمستخدم:
جافا
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
Kotlin
for (suggestion in result.suggestions) {
val replyText = suggestion.text
}
لاحظ أن ML Kit قد لا يعرض نتائج إذا لم يثق النموذج في مدى صلة الردود المقترحة، فإن محادثة الإدخال ليست ضمن باللغة الإنجليزية، أو إذا اكتشف النموذج موضوعًا حساسًا.