إنشاء ردود سريعة باستخدام "حزمة تعلّم الآلة" على نظام التشغيل iOS

يمكن أن تنشئ "حزمة تعلّم الآلة" ردودًا قصيرة على الرسائل باستخدام نموذج على الجهاز فقط.

لإنشاء ردود سريعة، عليك ضبط سجلّ "أدوات تعلّم الآلة" بسجلّ الرسائل الأخيرة في محادثة. إذا حدّدت أدوات تعلّم الآلة أنّ المحادثة باللغة الإنجليزية وأنّ المحادثة لا تتضمّن موضوعًا حسّاسًا من المحتمل أن تكون حسّاسة، تنشئ هذه الأداة ما يصل إلى ثلاثة ردود يمكنك اقتراحها على المستخدم.

تجربة السمات والبيانات

  • جرِّب نموذج التطبيق للاطّلاع على مثال حول استخدام واجهة برمجة التطبيقات هذه.

قبل البدء

  1. أدرِج مجموعات تعلّم الآلة التالية في Podfile:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. بعد تثبيت أو تحديث مجموعات Pods لمشروعك، افتح مشروع 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 FRIEND0 false عذرًا، لقد تأخّرت.

تقترح أدوات تعلّم الآلة الردود على آخر رسالة في سجلّ المحادثات. يجب أن تكون الرسالة الأخيرة من مستخدم غير محلي. في المثال أعلاه، الرسالة الأخيرة في المحادثة مأخوذة من مستخدم غير محلي friend0. عند استخدام بطاقة Pass ML Kit، تقترح الأداة الردود على رسالة friendO: "لقد تأخّرت، عذرًا."

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);
}

يُرجى العِلم أنّ أدوات تعلّم الآلة قد لا تعرض نتائج إذا لم يكن النموذج واثقًا من مدى صلة الردود المقترَحة أو إذا كانت المحادثة التي تم إدخالها ليست باللغة الإنجليزية أو إذا رصد النموذج موضوعًا حسّاسًا.