iOS'te Makine Öğrenimi Kiti ile Akıllı Yanıtlar Oluşturma

Cihaz üzerinde bir model kullanarak mesaj yanıtları oluşturmak için ML Kit'i kullanabilirsiniz.

Akıllı yanıtlar oluşturmak için ML Kit'e bir görüşmedeki son mesajların günlüğünü iletirsiniz. Makine Öğrenimi Kiti, görüşmenin İngilizce olduğunu ve görüşmenin hassas olabilecek bir konu olmadığını tespit ederse ML Kit, kullanıcılarınıza önerebileceğiniz en fazla üç yanıt üretir.

Başlamadan önce

  1. Firebase'i uygulamanıza henüz eklemediyseniz başlangıç kılavuzundaki adımları uygulayın.
  2. ML Kit kitaplıklarını Podfile dosyanıza ekleyin:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Projenizin kapsüllerini yükledikten veya güncelledikten sonra, Xcode projenizi .xcworkspace kullanarak açtığınızdan emin olun.
  3. Uygulamanızda Firebase'i içe aktarın:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

1. Sohbet geçmişi nesnesi oluşturma

Akıllı yanıtlar oluşturmak için ML Kit'i en erken zaman damgasından önce gelecek şekilde kronolojik olarak sıralanmış TextMessage nesne dizisi iletirsiniz. Kullanıcı bir mesaj gönderdiğinde veya aldığında mesajı, zaman damgasını ve mesajı gönderenin kullanıcı kimliğini görüşme geçmişine ekleyin.

User-ID, görüşmedeki göndereni benzersiz şekilde tanımlayan herhangi bir dize olabilir. User-ID'nin herhangi bir kullanıcı verisine karşılık gelmesi gerekmez ve kullanıcı kimliğinin, akıllı yanıt oluşturucunun görüşmeleri veya çağrıları arasında tutarlı olması gerekmez.

Mesaj, yanıt önermek istediğiniz kullanıcı tarafından gönderildiyse isLocalUser değerini doğru olarak ayarlayın.

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

Bir ileti dizisi geçmişi nesnesi aşağıdaki örneğe benzer:

Zaman damgası User-ID Yerel Kullanıcı mısınız? Message
21 Şubat Perşembe 13:13:39 PST 2019 true yolda mısınız?
21 Şubat Perşembe 13:15:03 PST 2019 ARKADAŞ0 false Üzgünüz, geciktiğiniz için yazıyorum.

Yukarıdaki örnekte yer alan en son mesajın yerel olmayan bir kullanıcıdan geldiğini unutmayın. Makine Öğrenimi Kiti, uygulamanızın kullanıcısı, yani yerel kullanıcı tarafından gönderilmesi amaçlanan yanıtları önerdiği için bu önemlidir. Makine Öğrenimi Kiti'ni, kullanıcınızın yanıt vermek isteyebileceği bir mesajla biten bir sohbet günlüğü ilettiğinizden emin olun.

2. Mesaj yanıtları alma

Bir mesaja akıllı yanıtlar oluşturmak için SmartReply öğesinin bir örneğini alın ve görüşme geçmişini suggestReplies(for:completion:) yöntemine iletin:

Swift

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

Objective-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.
      // ...
  }
}];
]

İşlem başarılı olursa tamamlama işleyiciye bir SmartReplySuggestionResult nesnesi iletilir. Bu nesne, kullanıcınıza sunabileceğiniz en fazla 3 önerilen yanıtın bir listesini içerir:

Swift

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

Objective-C

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

Model, önerilen yanıtların alaka düzeyine güvenmiyorsa, giriş görüşmesi İngilizce değilse veya model hassas bir konu tespit ederse ML Kit'in sonuç döndürmeyebileceğini unutmayın.