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

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

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

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

  1. اگر قبلاً Firebase را به برنامه خود اضافه نکرده اید، این کار را با دنبال کردن مراحل راهنمای شروع کار انجام دهید.
  2. کتابخانه‌های ML Kit را در فایل پادفایل خود قرار دهید:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    پس از نصب یا به‌روزرسانی Pods پروژه، حتماً پروژه Xcode خود را با استفاده از .xcworkspace آن باز کنید.
  3. در برنامه خود، Firebase را وارد کنید:

    سریع

    import Firebase

    هدف-C

    @import Firebase;

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:
FIRTextMessage *message = [[FIRTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

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

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

توجه داشته باشید که جدیدترین پیام در مثال بالا از یک کاربر غیر محلی است. این مهم است زیرا ML Kit پاسخ هایی را پیشنهاد می کند که قرار است توسط کاربر برنامه شما ارسال شود: کاربر محلی. باید مطمئن شوید که گزارش مکالمه‌ای را به ML Kit ارسال می‌کنید که با پیامی به پایان می‌رسد که ممکن است کاربر شما بخواهد به آن پاسخ دهد.

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

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

سریع

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

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

سریع

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

هدف-C

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

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