ML Kit, cihaz üzerindeki bir modeli kullanarak mesajlara kısa yanıtlar oluşturabilir.
Akıllı yanıtlar oluşturmak için bir görüşmedeki son mesajların günlüğünü ML Kit'e iletirsiniz. ML Kit, konuşmanın İngilizce olduğunu belirlerse ve görüşmenin hassas olabilecek bir konu içermediğini tespit ederse ML Kit, kullanıcınıza önerebileceğiniz üç yanıt oluşturur.
Deneyin
- Bu API'nin örnek bir kullanımını görmek için örnek uygulamayı inceleyin.
Başlamadan önce
- Aşağıdaki ML Kiti kapsüllerini Podfile'ınıza ekleyin:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- Projenizin Kapsüllerini yükledikten veya güncelledikten sonra Xcode projenizi,
.xcworkspace
ile açın. ML Kit, Xcode 12.4 veya üzeri sürümlerde 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ı en başta olacak şekilde kronolojik olarak sıralanmış 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 görüşme geçmişine ekleyin.
Kullanıcı kimliği, görüşmede göndereni benzersiz bir ş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şturucudaki konuşmalar veya çağrılar arasında tutarlı olması gerekmez.
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 ileti dizisi geçmişi nesnesi aşağıdaki örnekteki gibi görünür:
Zaman damgası | userID | isLocalUser | Message |
---|---|---|---|
21 Şubat 2019 Perşembe 13:13:39 PST 2019 | true | Yolda mısın? | |
21 Şubat Perşembe 13:15:03 PST 2019 | FRIEND0 | false | Maalesef gecikiyorum. |
ML Kiti, görüşme geçmişindeki son iletiye yanıt önerir. Son mesaj, yerel olmayan bir kullanıcıdan olmalıdır. Yukarıdaki örnekte, ileti dizisindeki son ileti yerel olmayan FRIEND0 adlı kullanıcı tarafından gönderilmiştir. Bu günlüğü kullanarak ML Kit'i kullandığınızda FRIENDO'nun mesajına yanıt verilir: "Üzgünüm, geç geçiyorum!"
2. Mesaj yanıtlarını alma
Bir mesaja akıllı yanıtlar oluşturmak için SmartReply
örneği alın ve görüşme geçmişini suggestReplies(for:completion:)
yöntemine iletin:
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şleyiciye bir SmartReplySuggestionResult
nesnesi aktarılır. Bu nesne, kullanıcınıza sunabileceğiniz en fazla üç önerilen yanıtın bir listesini 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, girilen ileti dizisi İngilizce değilse veya model hassas bir konu algılarsa ML Kit'in sonuç döndürmeyebileceğini unutmayın.