Menghasilkan smart reply dengan ML Kit di iOS

ML Kit dapat menghasilkan balasan singkat untuk pesan menggunakan model di perangkat.

Untuk menghasilkan smart reply, Anda harus meneruskan log pesan terbaru dalam percakapan ke ML Kit. Jika ML Kit menentukan percakapan dalam bahasa Inggris, dan bahwa percakapan tersebut tidak memiliki materi pokok yang berpotensi sensitif, ML Kit akan menghasilkan hingga tiga balasan, yang dapat Anda sarankan kepada pengguna.

Cobalah

  • Silakan coba aplikasi contoh ini untuk melihat contoh penggunaan API ini.

Sebelum memulai

  1. Sertakan pod ML Kit berikut di Podfile Anda:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. Setelah menginstal atau mengupdate Pod project, buka project Xcode menggunakan .xcworkspace-nya. ML Kit didukung di Xcode versi 12.4 atau yang lebih baru.

1. Membuat objek histori percakapan

Untuk menghasilkan smart reply, Anda harus meneruskan array objek TextMessage yang diurutkan secara kronologis ke ML Kit, dengan stempel waktu paling awal terlebih dahulu. Setiap kali pengguna mengirim atau menerima pesan, tambahkan pesan tersebut, stempel waktunya, dan ID pengguna pengirim pesan ke histori percakapan.

ID pengguna dapat berupa string apa pun yang secara unik mengidentifikasi pengirim dalam percakapan. ID pengguna tidak perlu terkait dengan data pengguna apa pun, dan ID pengguna tidak perlu konsisten antara percakapan atau pemanggilan generator smart reply.

Jika pesan dikirim oleh pengguna yang ingin Anda berikan saran balasan, tetapkan isLocalUser ke true.

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];

Objek histori percakapan akan terlihat seperti contoh berikut:

Stempel waktu userID isLocalUser Pesan
Kamis 21 Februari 13.13.39 PST 2019 true kamu sedang di jalan?
Kamis 21 Februari 13.15.03 PST 2019 FRIEND0 false Terlambat, maaf!

ML Kit menyarankan balasan ke pesan terakhir dalam histori percakapan. Pesan terakhir harus berasal dari pengguna non-lokal. Pada contoh di atas, pesan terakhir dalam percakapan berasal dari pengguna non-lokal, friend0. Saat Anda menggunakan log ini, ML Kit akan menyarankan balasan untuk pesan friendO: "Terlambat, maaf!"

2. Dapatkan balasan pesan

Untuk menghasilkan smart reply pada suatu pesan, dapatkan instance SmartReply dan teruskan histori percakapan ke metode suggestReplies(for:completion:):

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

Jika operasi berhasil, objek SmartReplySuggestionResult akan diteruskan ke pengendali penyelesaian. Objek ini berisi daftar hingga tiga balasan yang disarankan, yang dapat Anda presentasikan kepada pengguna:

Swift

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

Objective-C

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

Perlu diperhatikan bahwa ML Kit mungkin tidak menampilkan hasil jika model tidak yakin dengan relevansi balasan yang disarankan, percakapan input tidak menggunakan bahasa Inggris, atau jika model mendeteksi materi pokok yang sensitif.