پاسخ‌های هوشمند را با ML Kit در iOS ایجاد کنید

ML Kit می‌تواند با استفاده از مدل روی دستگاه، پاسخ‌های کوتاهی به پیام‌ها ایجاد کند.

برای ایجاد پاسخ‌های هوشمند، فهرستی از پیام‌های اخیر را در یک مکالمه به ML Kit ارسال می‌کنید. اگر ML Kit تشخیص دهد که مکالمه به زبان انگلیسی است و مکالمه دارای موضوع بالقوه حساس نیست، ML Kit حداکثر سه پاسخ ایجاد می کند که می توانید آنها را به کاربر خود پیشنهاد دهید.

آن را امتحان کنید

قبل از اینکه شروع کنی

  1. غلاف‌های کیت ML زیر را در فایل پادفایل خود قرار دهید:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. پس از نصب یا به روز رسانی Pods پروژه خود، پروژه Xcode خود را با استفاده از .xcworkspace آن باز کنید. کیت ML در Xcode نسخه 12.4 یا بالاتر پشتیبانی می شود.

1. یک شی تاریخچه مکالمه ایجاد کنید

برای ایجاد پاسخ‌های هوشمند، ML Kit را به آرایه‌ای از اشیاء TextMessage که به ترتیب زمانی مرتب شده‌اند، با اولین مهر زمانی ارسال می‌کنید. هر زمان که کاربر پیامی را ارسال یا دریافت کرد، پیام، مهر زمانی و شناسه کاربری فرستنده پیام را به تاریخچه مکالمه اضافه کنید.

شناسه کاربر می‌تواند هر رشته‌ای باشد که به طور منحصربه‌فرد فرستنده را در مکالمه شناسایی می‌کند. شناسه کاربر نیازی به مطابقت با هیچ داده کاربر ندارد و شناسه کاربر نیازی ندارد بین مکالمات یا فراخوانی های تولید کننده پاسخ هوشمند سازگار باشد.

اگر پیام توسط کاربری ارسال شده است که می‌خواهید به آن پاسخ دهید، isLocalUser روی true تنظیم کنید.

سریع

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)

هدف-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];

یک شی تاریخچه مکالمه مانند مثال زیر است:

مهر زمان شناسه کاربر isLocalUser است پیام
پنجشنبه 21 فوریه 13:13:39 PST 2019 درست است، واقعی در راه هستی؟
پنجشنبه 21 فوریه 13:15:03 PST 2019 FRIEND0 نادرست دیر آمدم، ببخشید!

ML Kit پاسخ به آخرین پیام در تاریخچه مکالمه را پیشنهاد می کند. آخرین پیام باید از یک کاربر غیر محلی باشد. در مثال بالا، آخرین پیام در مکالمه از طرف کاربر غیر محلی FRIEND0 است. وقتی از pass ML Kit این گزارش استفاده می‌کنید، پاسخ‌هایی را به پیام FRIENDO پیشنهاد می‌کند: "دیر اجرا شد، متاسفم!"

2. پاسخ پیام را دریافت کنید

برای ایجاد پاسخ‌های هوشمند به یک پیام، یک نمونه از SmartReply دریافت کنید و تاریخچه مکالمه را به روش suggestReplies(for:completion:) آن ارسال کنید:

سریع

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.
        // ...
    }
}

هدف-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 به کنترل کننده تکمیل ارسال می شود. این شی حاوی لیستی از حداکثر سه پاسخ پیشنهادی است که می توانید به کاربر خود ارائه دهید:

سریع

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

هدف-C

for (MLKSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

توجه داشته باشید که اگر مدل از مرتبط بودن پاسخ‌های پیشنهادی مطمئن نباشد، مکالمه ورودی به زبان انگلیسی نباشد، یا اگر مدل موضوع حساس را تشخیص دهد، ممکن است ML Kit به نتایجی برنگردد.