إنشاء "ردود سريعة" باستخدام "حزمة تعلُّم الآلة" على Android
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكنك استخدام حزمة تعلّم الآلة لإنشاء ردود على الرسائل باستخدام جهاز.
الأمثل.
لإنشاء ردود سريعة، يتم تمرير سجلّ الرسائل الحديثة إلى مجموعة أدوات تعلُّم الآلة في
محادثة. إذا حدّدت حزمة تعلّم الآلة أنّ المحادثة باللغة الإنجليزية،
عدم احتواء المحادثة على موضوع قد يكون حساسًا أو ربما
على إنشاء ما يصل إلى ثلاثة ردود، والتي يمكنك اقتراحها على المستخدم.
لإنشاء ردود سريعة، يمكنك ضبط حزمة تعلُّم الآلة على 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() الخاصة به:
جافا
FirebaseSmartReplysmartReply=FirebaseNaturalLanguage.getInstance().getSmartReply();smartReply.suggestReplies(conversation).addOnSuccessListener(newOnSuccessListener<SmartReplySuggestionResult>(){@OverridepublicvoidonSuccess(SmartReplySuggestionResultresult){if(result.getStatus()==SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE){// The conversation's language isn't supported, so the// the result doesn't contain any suggestions.}elseif(result.getStatus()==SmartReplySuggestionResult.STATUS_SUCCESS){// Task completed successfully// ...}}}).addOnFailureListener(newOnFailureListener(){@OverridepublicvoidonFailure(@NonNullExceptione){// Task failed with an exception// ...}});
Kotlin
valsmartReply=FirebaseNaturalLanguage.getInstance().smartReplysmartReply.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.}elseif(result.getStatus()==SmartReplySuggestionResult.STATUS_SUCCESS){// Task completed successfully// ...}}.addOnFailureListener{// Task failed with an exception// ...}
إذا نجحت العملية، يتم تمرير كائن SmartReplySuggestionResult إلى
معالج النجاح. يتضمّن هذا العنصر قائمة تضم ما يصل إلى 3 ردود مقترَحة،
والذي يمكنك تقديمه للمستخدم:
لاحظ أن ML Kit قد لا يعرض نتائج إذا لم يثق النموذج في
مدى صلة الردود المقترحة، فإن محادثة الإدخال ليست ضمن
باللغة الإنجليزية، أو إذا اكتشف النموذج موضوعًا حساسًا.
تاريخ التعديل الأخير: 2025-09-04 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-09-04 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["You can use ML Kit to generate message replies using an on-device\nmodel.\n\nTo generate smart replies, you pass ML Kit a log of recent messages in a\nconversation. If ML Kit determines the conversation is in English, and that\nthe conversation doesn't have potentially sensitive subject matter, ML Kit\ngenerates up to three replies, which you can suggest to your user.\n\n\u003cbr /\u003e\n\nBefore you begin\n\n1. If you haven't already, [add Firebase to your Android project](/docs/android/setup).\n2. Add the dependencies for the ML Kit Android libraries to your module (app-level) Gradle file (usually `app/build.gradle`): \n\n ```carbon\n apply plugin: 'com.android.application'\n apply plugin: 'com.google.gms.google-services'\n\n dependencies {\n // ...\n implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'\n implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7'\n }\n ```\n3. Also in your app-level `build.gradle` file, disable compression of `tflite` files: \n\n ```text\n android {\n // ...\n aaptOptions {\n noCompress \"tflite\"\n }\n }\n ```\n\n1. Create a conversation history object\n\nTo generate smart replies, you pass ML Kit a chronologically-ordered `List`\nof `FirebaseTextMessage` objects, with the earliest timestamp first.\n\nWhenever the user sends a message, add the message and its timestamp to the\nconversation history: \n\nJava \n\n conversation.add(FirebaseTextMessage.createForLocalUser(\n \"heading out now\", System.currentTimeMillis()));\n\nKotlin \n\n conversation.add(FirebaseTextMessage.createForLocalUser(\n \"heading out now\", System.currentTimeMillis()))\n\nWhenever the user receives a message, add the message, its timestamp, and the\nsender's user ID to the conversation history. The user ID can be any string that\nuniquely identifies the sender within the conversation. The user ID doesn't need\nto correspond to any user data, and the user ID doesn't need to be consistent\nbetween conversation or invocations of the smart reply generator. \n\nJava \n\n conversation.add(FirebaseTextMessage.createForRemoteUser(\n \"Are you coming back soon?\", System.currentTimeMillis(), userId));\n\nKotlin \n\n conversation.add(FirebaseTextMessage.createForRemoteUser(\n \"Are you coming back soon?\", System.currentTimeMillis(), userId))\n\nA conversation history object looks like the following example:\n\n| Timestamp | User ID | Local User? | Message |\n|------------------------------|---------|-------------|----------------------|\n| Thu Feb 21 13:13:39 PST 2019 | | true | are you on your way? |\n| Thu Feb 21 13:15:03 PST 2019 | FRIEND0 | false | Running late, sorry! |\n\nNote that the most recent message in the example above is from a non-local\nuser. This is important because ML Kit suggests replies intended to be sent\nby the user of your app: the local user. You should be sure you're passing\nML Kit a conversation log that ends with a message to which your user might\nwant to reply.\n\n2. Get message replies\n\nTo generate smart replies to a message, get an instance of `FirebaseSmartReply`\nand pass the conversation history to its `suggestReplies()` method: \n\nJava \n\n FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();\n smartReply.suggestReplies(conversation)\n .addOnSuccessListener(new OnSuccessListener\u003cSmartReplySuggestionResult\u003e() {\n @Override\n public void onSuccess(SmartReplySuggestionResult result) {\n if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {\n // The conversation's language isn't supported, so the\n // the result doesn't contain any suggestions.\n } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {\n // Task completed successfully\n // ...\n }\n }\n })\n .addOnFailureListener(new OnFailureListener() {\n @Override\n public void onFailure(@NonNull Exception e) {\n // Task failed with an exception\n // ...\n }\n });\n\nKotlin \n\n val smartReply = FirebaseNaturalLanguage.getInstance().smartReply\n smartReply.suggestReplies(conversation)\n .addOnSuccessListener { result -\u003e\n if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {\n // The conversation's language isn't supported, so the\n // the result doesn't contain any suggestions.\n } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {\n // Task completed successfully\n // ...\n }\n }\n .addOnFailureListener {\n // Task failed with an exception\n // ...\n }\n\nIf the operation succeeds, a `SmartReplySuggestionResult` object is passed to\nthe success handler. This object contains a list of up to 3 suggested replies,\nwhich you can present to your user: \n\nJava \n\n for (SmartReplySuggestion suggestion : result.getSuggestions()) {\n String replyText = suggestion.getText();\n }\n\nKotlin \n\n for (suggestion in result.suggestions) {\n val replyText = suggestion.text\n }\n\nNote that ML Kit might not return results if the model isn't confident in\nthe relevance of the suggested replies, the input conversation isn't in\nEnglish, or if the model detects sensitive subject matter."]]