iOS'te ML Kit ile akıllı yanıtlar oluşturma

ML Kit, cihaz üzerinde bir model kullanarak mesajlara kısa yanıtlar oluşturabilir.

Akıllı yanıtlar oluşturmak için ML Kit'e bir görüşmedeki son mesajların günlüğünü gönderirsiniz. ML Kit, görüşmenin İngilizce olduğunu ve konuşmanın hassas olabilecek bir konu barındırmadığını belirlerse kullanıcıya önerebileceğiniz en fazla üç yanıt oluşturabilir.

Deneyin

Başlamadan önce

  1. Aşağıdaki ML Kit kapsüllerini Podfile dosyanıza ekleyin:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. Projenizin Kapsüllerini yükledikten veya güncelledikten sonra, .xcworkspace kodunu kullanarak Xcode projenizi açın. ML Kit, Xcode'un 12.4 veya sonraki sürümlerinde desteklenir.

1. Görüşme geçmişi nesnesi oluşturma

Akıllı yanıtlar oluşturmak için ML Kit'i en erken zaman damgasına sahip olacak şekilde kronolojik sıralamada TextMessage nesne dizisinden geçersiniz. Kullanıcı her 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. Ayrıca User-ID, akıllı yanıt oluşturma aracının görüşmeleri veya çağrıları arasında tutarlı olmak zorunda değildir.

Mesaj, yanıt önermek istediğiniz kullanıcı tarafından gönderildiyse isLocalUser değerini true 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:
MLKTextMessage *message = [[MLKTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

Bir görüşme geçmişi nesnesi aşağıdaki örneğe benzer:

Zaman damgası UserID YerelYerelKullanıcı Mesaj
21 Şubat 13:13:39 PST 2019 true yolda mısınız?
21 Şubat 13:15:03 PST 2019 ARKADAŞ0 yanlış Geç kaldık!

ML Kit, görüşme geçmişindeki son mesaja yanıt vermenizi öneriyor. Son mesaj, yerel olmayan bir kullanıcıdan gelmelidir. Yukarıdaki örnekte, görüşmedeki son mesaj yerel olmayan Friend0 kullanıcısındandır. Bu günlüğü ML Kit'i geçerken kullandığınızda, FriendO'nun şu mesajına yanıt verilebilir: "Üzgünüz, çok geç!"

2. Mesaj yanıtları alın

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

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

İşlem başarılı olursa tamamlama işleyicisine bir SmartReplySuggestionResult nesnesi iletilir. Bu nesne, kullanıcıya sunabileceğiniz en fazla üç yanıt önerisinden oluşan bir liste içerir:

Swift

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

Objective-C

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

Model, önerilen yanıtların alaka düzeyinden emin değilse, giriş konuşması İngilizce değilse veya model hassas konular tespit ederse ML Kit'in sonuç döndürmeyebileceğini unutmayın.