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

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

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

جرّبه الآن

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

قبل البدء

  1. تضمين مجموعات ML Kit التالية في Podfile:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. بعد تثبيت لوحات مشروعك أو تحديثها، افتح مشروع 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 قد لا يعرض نتائج إذا لم يثق النموذج في مدى صلة الردود المقترحة، فإن محادثة الإدخال ليست ضمن باللغة الإنجليزية، أو إذا اكتشف النموذج موضوعًا حساسًا.