iOS'ta ML Kit ile Akıllı Yanıtlar Oluşturun

Cihazdaki bir modeli 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. ML Kit, görüşmenin İngilizce olduğunu ve görüşmenin potansiyel olarak hassas bir konu içermediğini belirlerse, ML Kit, kullanıcılarınıza önerebileceğiniz en fazla üç yanıt oluşturur.

Sen başlamadan önce

  1. Firebase'i uygulamanıza henüz eklemediyseniz başlangıç ​​kılavuzundaki adımları izleyerek bunu yapın.
  2. ML Kit kitaplıklarını Pod dosyanıza ekleyin:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Projenizin Pod'larını 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:

    Süratli

    import Firebase

    Amaç-C

    @import Firebase;

1. Bir konuşma geçmişi nesnesi oluşturun

Akıllı yanıtlar oluşturmak için ML Kit'e, en eski zaman damgası ilk sırada olacak şekilde kronolojik olarak sıralanmış bir TextMessage nesneleri dizisi iletirsiniz. Kullanıcı bir mesaj gönderdiğinde veya aldığında, mesajı, zaman damgasını ve mesajı gönderenin kullanıcı kimliğini konuşma geçmişine ekleyin.

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

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

Süratli

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)

Amaç-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 konuşma geçmişi nesnesi aşağıdaki örneğe benzer:

Zaman damgası Kullanıcı kimliği Yerel Kullanıcı? İleti
21 Şubat Per 13:13:39 PST 2019 doğru Yolunda mısın?
21 Şubat Per 13:15:03 PST 2019 ARKADAŞ0 YANLIŞ Geç kalıyorum, üzgünüm!

Yukarıdaki örnekteki en son mesajın yerel olmayan bir kullanıcıdan geldiğini unutmayın. Bu önemlidir çünkü ML Kit, uygulamanızın kullanıcısı olan yerel kullanıcı tarafından gönderilmesi amaçlanan yanıtları önerir. ML Kit'e, kullanıcınızın yanıtlamak isteyebileceği bir mesajla biten bir konuşma günlüğü ilettiğinizden emin olmalısınız.

2. Mesaj yanıtlarını alın

Bir mesaja akıllı yanıtlar oluşturmak için SmartReply bir örneğini alın ve konuşma geçmişini onun suggestReplies(for:completion:) yöntemine aktarın:

Süratli

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

Amaç-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şleyicisine bir SmartReplySuggestionResult nesnesi iletilir. Bu nesne, kullanıcılarınıza sunabileceğiniz en fazla 3 önerilen yanıttan oluşan bir liste içerir:

Süratli

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

Amaç-C

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

Modelin önerilen yanıtların alaka düzeyi konusunda güvensiz olması, giriş konuşmasının İngilizce olmaması veya modelin hassas bir konu algılaması durumunda ML Kit'in sonuçları döndürmeyebileceğini unutmayın.