Tạo câu trả lời thông minh bằng Bộ công cụ học máy trên iOS

Bộ công cụ học máy có thể tạo câu trả lời ngắn cho tin nhắn bằng mô hình trên thiết bị.

Để tạo các câu trả lời thông minh, bạn truyền cho Bộ công cụ học máy nhật ký các tin nhắn gần đây vào một cuộc trò chuyện. Nếu Bộ công cụ học máy xác định cuộc trò chuyện là bằng tiếng Anh và cuộc trò chuyện không có vấn đề có thể nhạy cảm, Bộ công cụ học máy tạo tối đa ba câu trả lời để bạn có thể đề xuất cho người dùng của mình.

Dùng thử

Trước khi bắt đầu

  1. Đưa các nhóm Bộ công cụ học máy sau đây vào Podfile của bạn:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. Sau khi bạn cài đặt hoặc cập nhật Nhóm của dự án, hãy mở dự án Xcode của bạn bằng cách sử dụng .xcworkspace. Bộ công cụ học máy được hỗ trợ trong Xcode phiên bản 12.4 trở lên.

1. Tạo một đối tượng nhật ký trò chuyện

Để tạo câu trả lời thông minh, bạn truyền cho Bộ công cụ học máy một mảng TextMessage đối tượng, trong đó dấu thời gian sớm nhất xuất hiện đầu tiên. Bất cứ khi nào người dùng gửi hoặc nhận tin nhắn, thêm tin nhắn, dấu thời gian và nội dung tin nhắn mã nhận dạng người dùng của người gửi vào lịch sử cuộc trò chuyện.

User ID có thể là bất kỳ chuỗi nào xác định duy nhất người gửi trong cuộc trò chuyện. Mã nhận dạng người dùng không cần phải tương ứng với bất kỳ dữ liệu người dùng nào, và mã nhận dạng người dùng không cần phải nhất quán giữa các cuộc trò chuyện hoặc các lệnh gọi của trình tạo phản hồi thông minh.

Nếu thư được gửi bởi người dùng mà bạn muốn đề xuất trả lời, hãy đặt isLocalUser thành 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];

Đối tượng nhật ký trò chuyện sẽ có dạng như trong ví dụ sau:

Dấu thời gian userID isLocalUser Thông điệp
Thứ Năm, ngày 21 tháng 2 13:13:39 theo giờ PST 2019 đúng bạn đang trên đường đi chưa?
Thứ Năm, ngày 21 tháng 2 13:15:03 theo giờ PST 2019 BẠN BÈ false Xin lỗi bạn vì muộn giờ!

Bộ công cụ học máy đề xuất câu trả lời cho tin nhắn gần đây nhất trong nhật ký trò chuyện. Thông báo gần đây nhất phải đến từ một người dùng không phải người dùng bản địa. Trong ví dụ trên, thư cuối cùng trong cuộc trò chuyện là từ người dùng không bản địa FRIEND0. Khi bạn sử dụng thẻ và vé của Bộ công cụ học máy, nhật ký này sẽ đề xuất trả lời tin nhắn của FRIENDO: "Rất tiếc vì lỡ cơ hội!"

2. Nhận tin nhắn trả lời

Để tạo câu trả lời thông minh cho một tin nhắn, hãy lấy thực thể của SmartReply và truyền lịch sử cuộc trò chuyện vào phương thức 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.
      // ...
  }
}];

Nếu thao tác thành công, đối tượng SmartReplySuggestionResult sẽ được truyền đến trình xử lý hoàn thành. Đối tượng này chứa danh sách tối đa 3 đề xuất mà bạn có thể hiển thị cho người dùng của mình:

Swift

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

Objective-C

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

Xin lưu ý rằng Bộ công cụ học máy có thể không trả về kết quả nếu mô hình không tin tưởng vào mức độ liên quan của các câu trả lời được đề xuất, cuộc hội thoại đầu vào không nằm trong tiếng Anh hoặc nếu mô hình phát hiện thấy vấn đề nhạy cảm.