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
- Nếu bạn chưa làm như vậy, thêm Firebase vào dự án Android của bạn.
- Thêm các phần phụ thuộc của thư viện Android cho Bộ công cụ học máy vào mô-đun của bạn
Tệp Gradle (cấp ứng dụng) (thường là
app/build.gradle
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7' }
- Ngoài ra, trong tệp
build.gradle
ở cấp ứng dụng, hãy tắt tính năng nén trong sốtflite
tệp:android { // ... aaptOptions { noCompress "tflite" } }
1. Tạo một đối tượng nhật ký trò chuyện
Để 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 một List
được sắp xếp theo thứ tự thời gian
trong số đối tượng FirebaseTextMessage
, 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 một tin nhắn, hãy thêm thông báo và dấu thời gian của tin nhắn đó vào lịch sử trò chuyện:
Java
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
Kotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
Bất cứ khi nào người dùng nhận được một tin nhắn, hãy thêm thông báo, dấu thời gian và 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. Mã nhận dạng người dùng có thể là bất kỳ chuỗi nào xác định chính xác người gửi trong cuộc hội thoại. Mã nhận dạng người dùng không cần tương ứng với mọi dữ liệu người dùng và mã nhận dạng người dùng không cần phải nhất quán giữa cuộc trò chuyện hoặc các lệnh gọi của trình tạo trả lời thông minh.
Java
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
Kotlin
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
Đố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 một phiên bản của FirebaseSmartReply
và chuyển lịch sử cuộc trò chuyện vào phương thức suggestReplies()
:
Java
FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
.addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
@Override
public void onSuccess(SmartReplySuggestionResult result) {
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
Kotlin
val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
.addOnSuccessListener { result ->
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
.addOnFailureListener {
// Task failed with an exception
// ...
}
Nếu thao tác thành công, đối tượng SmartReplySuggestionResult
sẽ được truyền đến
trình xử lý thành công. Đối tượng này chứa danh sách tối đa 3 câu trả lời đề xuất,
mà bạn có thể hiển thị cho người dùng của mình:
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
Kotlin
for (suggestion in result.suggestions) {
val replyText = 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.