Bộ công cụ học máy có thể tạo tin nhắn trả lời ngắn cho tin nhắn bằng mô hình trên thiết bị.
Để tạo 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 trong 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 bằng tiếng Anh và cuộc trò chuyện không có chủ đề có thể nhạy cảm, thì Bộ công cụ học máy sẽ tạo tối đa 3 câu trả lời mà bạn có thể đề xuất cho người dùng.
Theo cụm | Không đi kèm | |
---|---|---|
Tên thư viện | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
Triển khai | Mô hình được liên kết tĩnh với ứng dụng của bạn tại thời điểm tạo bản dựng. | Mô hình được tải xuống động qua Dịch vụ Google Play. |
Tác động của kích thước ứng dụng | Tăng kích thước khoảng 5,7 MB. | Tăng kích thước khoảng 200 KB. |
Thời gian khởi chạy | Mẫu có sẵn ngay. | Có thể phải đợi mô hình tải xuống trước khi sử dụng lần đầu. |
Dùng thử
- Hãy thử nghiệm với ứng dụng mẫu để xem ví dụ về cách sử dụng API này.
Trước khi bắt đầu
Trong tệp
build.gradle
cấp dự án, hãy nhớ thêm kho lưu trữ Maven của Google vào cả mụcbuildscript
vàallprojects
.Thêm các phần phụ thuộc cho thư viện Android của Bộ công cụ học máy vào tệp gradle cấp ứng dụng của mô-đun, thường là
app/build.gradle
. Chọn một trong các phần phụ thuộc sau đây dựa trên nhu cầu của bạn:- Cách gói mô hình với ứng dụng:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }
- Cách sử dụng mô hình trong Dịch vụ Google Play:
dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1' }
Nếu chọn sử dụng mô hình trong Dịch vụ Google Play, bạn có thể định cấu hình ứng dụng để tự động tải mô hình xuống thiết bị sau khi cài đặt ứng dụng từ Cửa hàng Play. Bằng cách thêm nội dung khai báo sau vào tệp
AndroidManifest.xml
của ứng dụng:<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="smart_reply" > <!-- To use multiple models: android:value="smart_reply,model2,model3" --> </application>
Bạn cũng có thể kiểm tra rõ ràng tình trạng có sẵn của mô hình và yêu cầu tải xuống thông qua ModuleInstallClient API của Dịch vụ Google Play.
Nếu bạn không bật tính năng tải mô hình xuống tại thời điểm cài đặt hoặc yêu cầu tải xuống rõ ràng, thì mô hình sẽ được tải xuống trong lần đầu tiên bạn chạy trình tạo câu trả lời thông minh. Các yêu cầu bạn đưa ra trước khi quá trình tải xuống hoàn tất sẽ không có kết quả.
1. Tạo đối tượng nhật ký cuộc 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
List
của các đối tượngTextMessage
theo thứ tự thời gian, trong đó dấu thời gian sớm nhất sẽ xuất hiện trước tiên.Bất cứ khi nào người dùng gửi tin nhắn, hãy thêm tin nhắn và dấu thời gian của tin nhắn đó vào bản ghi cuộc trò chuyện:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
Bất cứ khi nào người dùng nhận được tin nhắn, hãy thêm tin nhắn, dấu thời gian và mã nhận dạng người dùng của người gửi vào nhật ký 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 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 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 nhất quán giữa cuộc trò chuyện hoặc lệnh gọi của trình tạo câu trả lời thông minh.
Kotlin
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId))
Java
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId));
Đối tượng nhật ký trò chuyện có dạng như ví dụ sau:
Dấu thời gian userID isLocalUser Thông điệp 21/2/2019 13:13:39 (giờ PST) đúng bạn đang trên đường đến đó phải không? 21/2/2019 13:15:03 (giờ PST) FRIEND0 false Tôi sẽ đến muộn, xin lỗi! Bộ công cụ học máy gợi ý nội dung 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 là của một người dùng không phải người địa phương. Trong ví dụ trên, tin nhắn cuối cùng trong cuộc trò chuyện là của người dùng không phải người dùng cục bộ FRIEND0. Khi bạn sử dụng tính năng truyền nhật ký này cho Bộ công cụ học máy, tính năng này sẽ đề xuất nội dung trả lời cho thông báo của FRIENDO: "Tôi đến muộn, xin lỗi!"
2. Nhận thư 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 thực thể của
SmartReplyGenerator
và truyền nhật ký trò chuyện vào phương thứcsuggestReplies()
của thực thể đó:Kotlin
val smartReplyGenerator = SmartReply.getClient() smartReply.suggestReplies(conversation) .addOnSuccessListener { result -> if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) { // Task completed successfully // ... } } .addOnFailureListener { // Task failed with an exception // ... }
Java
SmartReplyGenerator smartReply = SmartReply.getClient(); smartReply.suggestReplies(conversation) .addOnSuccessListener(new OnSuccessListener
() { @Override public void onSuccess(SmartReplySuggestionResult result) { if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // 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 // ... } }); 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 được đề xuất mà bạn có thể hiển thị cho người dùng:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
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 chắc chắn về mức độ liên quan của các câu trả lời được đề xuất, cuộc trò chuyện đầu vào không bằng tiếng Anh hoặc nếu mô hình phát hiện thấy chủ đề nhạy cảm.