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

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

Để 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.

Trước khi bắt đầu

  1. Nếu bạn chưa thêm Firebase vào ứng dụng của mình, hãy thực hiện bằng cách làm theo hướng dẫn các bước trong hướng dẫn bắt đầu sử dụng.
  2. Thêm các thư viện Bộ công cụ học máy vào Podfile của bạn:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Sau khi cài đặt hoặc cập nhật Nhóm của dự án, hãy nhớ mở Xcode dự án bằng .xcworkspace của nó.
  3. Trong ứng dụng của bạn, hãy nhập Firebase:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

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:
FIRTextMessage *message = [[FIRTextMessage 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 User ID Bạn là người dùng cục bộ? Nội dung
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ờ!

Xin lưu ý rằng thư gần đây nhất trong ví dụ ở trên là từ một người dùng người dùng. Việc này rất quan trọng vì Bộ công cụ học máy đề xuất các câu trả lời sẽ gửi đi theo người dùng ứng dụng: người dùng cục bộ. Bạn cần chắc chắn rằng mình vượt qua Bộ công cụ học máy là một nhật ký trò chuyện kết thúc bằng một tin nhắn mà người dùng của bạn có thể nhận được muốn trả lờ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

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

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

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 đối tượng được đề 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 (FIRSmartReplySuggestion *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.