يمكنك استخدام حزمة تعلّم الآلة لإنشاء ردود على الرسائل باستخدام نموذج على الجهاز فقط.
لإنشاء ردود سريعة، يتم إرسال سجلّ للرسائل الحديثة في محادثة مع ML Kit. إذا تبيّن للحزمة أنّ المحادثة باللغة الإنجليزية، وتبيّن أنّ المحادثة لا تتضمن موضوعًا يُحتمل أن يكون حسّاسًا، تنشئ الأداة ما يصل إلى ثلاثة ردود يمكنك اقتراحها على المستخدم.
قبل البدء
- إذا لم يسبق لك إضافة Firebase إلى تطبيقك، عليك اتّباع الخطوات الواردة في دليل البدء.
- تضمين مكتبات ML Kit في Podfile:
pod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
بعد تثبيت مجموعات Podfile الخاصة بمشروعك أو تعديلها، احرص على فتح مشروع Xcode الخاص بك باستخدام.xcworkspace
. - في تطبيقك، استورد Firebase:
Swift
import Firebase
Objective-C
@import Firebase;
1- إنشاء كائن سجلّ المحادثات
لإنشاء ردود سريعة، يتم إرسال مصفوفة مرتّبة زمنيًا لعناصر TextMessage
إلى مجموعة أدوات تعلُّم الآلة، مع إدراج الطابع الزمني الأقدم أولاً. عندما يرسل المستخدم رسالة أو يتلقاها، أضِف الرسالة وطابعها الزمني ورقم تعريف المستخدم لمرسِل الرسالة إلى سجلّ المحادثات.
يمكن أن يكون رقم تعريف المستخدم أي سلسلة تعرّف المُرسِل بشكل فريد في المحادثة. لا يلزم أن يتطابق رقم تعريف المستخدم مع أي بيانات للمستخدم، ولا يلزم أن يكون رقم تعريف المستخدم متسقًا بين المحادثات أو الاستدعاءات في أداة إنشاء الردود الذكية.
إذا أرسل المستخدم الذي تريد اقتراح ردود عليه، اضبط
isLocalUser
على "صحيح".
Swift
var conversation: [TextMessage] = []
// Then, for each message sent and received:
let message = TextMessage(
text: "How are you?",
timestamp: Date().timeIntervalSince1970,
userID: "userId",
isLocalUser: false)
conversation.append(message)
Objective-C
NSMutableArray *conversation = [NSMutableArray array];
// Then, for each message sent and received:
FIRTextMessage *message = [[FIRTextMessage alloc]
initWithText:@"How are you?"
timestamp:[NSDate date].timeIntervalSince1970
userID:userId
isLocalUser:NO];
[conversation addObject:message];
يبدو عنصر سجلّ المحادثات كما يلي:
الطابع الزمني | رقم تعريف المستخدم | هل أنت مستخدم محلي؟ | مراسلة |
---|---|---|---|
الخميس 21 شباط (فبراير) الساعة 13:13:39 بتوقيت المحيط الهادئ 2019 | صحيح | هل أنت في طريقك؟ | |
الخميس 21 شباط (فبراير)، 13:15:03 بتوقيت المحيط الهادئ 2019 | الصديق0 | خطأ | عذرًا، سأتأخر! |
يُرجى العلم أنّ أحدث رسالة في المثال أعلاه مُرسَلة من مستخدم غير محلي. وهذا أمر مهم لأنّ حزمة تعلّم الآلة تقترح الردود التي من المفترض أن يرسلها مستخدم تطبيقك، أي المستخدم المحلي. يجب التأكّد من ضبط سجلّ محادثات ينتهي برسالة قد يحتاج المستخدم إلى الرد عليها من خلال استخدام ML Kit.
2- الحصول على ردود على الرسائل
لإنشاء ردود سريعة على رسالة، يمكنك الحصول على مثال SmartReply
وتمرير سجلّ المحادثات إلى طريقة suggestReplies(for:completion:)
الخاصة به:
Swift
let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.smartReply().suggestReplies(for: conversation) { result, error in
guard error == nil, let result = result else {
return
}
if (result.status == .notSupportedLanguage) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == .success) {
// Successfully suggested smart replies.
// ...
}
}
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRSmartReply *smartReply = [naturalLanguage smartReply];
[smartReply suggestRepliesForMessages:inputText
completion:^(FIRSmartReplySuggestionResult * _Nullable result,
NSError * _Nullable error) {
if (error || !result) {
return;
}
if (result.status == FIRSmartReplyResultStatusNotSupportedLanguage) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == FIRSmartReplyResultStatusSuccess) {
// Successfully suggested smart replies.
// ...
}
}];
]
إذا نجحت العملية، يتم تمرير كائن SmartReplySuggestionResult
إلى معالِج الإكمال. يحتوي هذا الكائن على قائمة تضم ما يصل إلى 3 ردود مقترحة،
والتي يمكنك عرضها للمستخدم:
Swift
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
Objective-C
for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
NSLog(@"Suggested reply: %@", suggestion.text);
}
يُرجى العِلم أنّ حزمة تعلّم الآلة قد لا تعرض نتائج إذا لم يكُن النموذج متأكدًا من مدى صلة الردود المقترَحة، أو لم تكن المحادثة المستخدمة باللغة الإنجليزية، أو إذا رصد النموذج موضوعًا حسّاسًا.