يمكن لحزمة تعلّم الآلة إنشاء ردود قصيرة على الرسائل باستخدام نموذج على الجهاز فقط.
لإنشاء ردود سريعة، يتم تمرير سجلّ الرسائل الحديثة إلى مجموعة أدوات تعلُّم الآلة في محادثة. إذا حدّدت حزمة تعلّم الآلة أنّ المحادثة باللغة الإنجليزية، عدم احتواء المحادثة على موضوع قد يكون حساسًا أو ربما على إنشاء ما يصل إلى ثلاثة ردود، والتي يمكنك اقتراحها على المستخدم.
جرّبه الآن
- يمكنك تجربة نموذج التطبيق من أجل يمكنك الاطّلاع على مثال حول استخدام واجهة برمجة التطبيقات هذه.
قبل البدء
- تضمين مجموعات ML Kit التالية في Podfile:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- بعد تثبيت لوحات مشروعك أو تحديثها، افتح مشروع Xcode باستخدام
.xcworkspace
تتوفّر حزمة تعلّم الآلة في الإصدار 12.4 من Xcode أو الإصدارات الأحدث.
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: MLKTextMessage *message = [[MLKTextMessage alloc] initWithText:@"How are you?" timestamp:[NSDate date].timeIntervalSince1970 userID:userId isLocalUser:NO]; [conversation addObject:message];
يبدو عنصر سجلّ المحادثات كما يلي:
الطابع الزمني | userID | isLocalUser | الرسالة |
---|---|---|---|
الخميس 21 شباط (فبراير) الساعة 13:13:39 بتوقيت المحيط الهادئ 2019 | صحيح | هل أنت في طريقك؟ | |
الخميس 21 شباط (فبراير)، 13:15:03 بتوقيت المحيط الهادئ 2019 | الصديق0 | خطأ | عذرًا، سأتأخر! |
تقترح مجموعة أدوات تعلُّم الآلة الردود على الرسالة الأخيرة في سجلّ المحادثات. الرسالة الأخيرة أن تكون من مستخدم غير محلي في المثال أعلاه، الرسالة الأخيرة في المحادثة من المستخدم غير المحلي friend0. عند استخدام سجلّ "تعلُّم الآلة" هذا، يقترح عليك يردّ على رسالة الهبة: "لقد تأخرت، آسف."
2. الحصول على ردود على الرسائل
لإنشاء ردود سريعة على رسالة، عليك الحصول على نسخة افتراضية من "SmartReply
" واجتياز.
سجلّ المحادثات بالطريقة suggestReplies(for:completion:)
الخاصة به:
Swift
SmartReply.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 result doesn't contain any suggestions. } else if (result.status == .success) { // Successfully suggested smart replies. // ... } }
Objective-C
MLKSmartReply *smartReply = [MLKSmartReply smartReply]; [smartReply suggestRepliesForMessages:inputText completion:^(MLKSmartReplySuggestionResult * _Nullable result, NSError * _Nullable error) { if (error || !result) { return; } if (result.status == MLKSmartReplyResultStatusNotSupportedLanguage) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.status == MLKSmartReplyResultStatusSuccess) { // Successfully suggested smart replies. // ... } }];
إذا نجحت العملية، يتم تمرير كائن SmartReplySuggestionResult
إلى
معالِج الإكمال. يحتوي هذا العنصر على قائمة تضم ثلاثة عناصر مقترحة كحد أقصى
الردود، التي يمكنك عرضها للمستخدم:
Swift
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
Objective-C
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
لاحظ أن ML Kit قد لا يعرض نتائج إذا لم يثق النموذج في مدى صلة الردود المقترحة، فإن محادثة الإدخال ليست ضمن باللغة الإنجليزية، أو إذا اكتشف النموذج موضوعًا حساسًا.