機器學習套件可使用裝置端模型,為訊息生成簡短回覆。
如要生成智慧回覆,請將對話中最近的訊息記錄傳送至 ML Kit。如果 ML Kit 判斷對話內容為英文,且不涉及潛在敏感主題,就會生成最多三則回覆,供您建議給使用者。
| 組合 | 未綁定 | |
|---|---|---|
| 程式庫名稱 | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply | 
| 導入 | 模型會在建構時靜態連結至應用程式。 | 模型會透過 Google Play 服務動態下載。 | 
| 應用程式大小影響 | 大小增加約 5.7 MB。 | 大小增加約 200 KB。 | 
| 初始化時間 | 模型會立即提供。 | 首次使用前可能需要等待模型下載完成。 | 
立即試用
- 請試用範例應用程式,瞭解這個 API 的使用範例。
事前準備
- 在專案層級的 - build.gradle檔案中,請務必在- buildscript和- allprojects區段中加入 Google 的 Maven 存放區。
- 將 ML Kit Android 程式庫的依附元件新增至模組的應用程式層級 Gradle 檔案,通常為 - app/build.gradle。請依據需求選擇下列其中一個依附元件:- 如要將模型與應用程式組合,請按照下列步驟操作:
 - dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }- 如要在 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' }- 如果您選擇在 Google Play 服務中使用模型,可以將應用程式設定為在從 Play 商店安裝後,自動將模型下載至裝置。在應用程式的 - AndroidManifest.xml檔案中新增下列宣告:- <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>- 您也可以透過 Google Play 服務 ModuleInstallClient API,明確檢查模型可用性並要求下載。 - 如果未啟用安裝時模型下載或要求明確下載,模型會在您首次執行智慧回覆產生器時下載。下載完成前提出的要求不會產生任何結果。 - 1. 建立對話記錄物件- 如要生成智慧回覆,請將依時間順序排序的 - List- TextMessage物件傳遞至 ML Kit,最早的時間戳記在前。- 每當使用者傳送訊息時,請將訊息和時間戳記新增至對話記錄: - Kotlin- conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis())) - Java- conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis())); - 每當使用者收到訊息時,請將訊息、時間戳記和傳送者的使用者 ID 新增至對話記錄。使用者 ID 可以是任何字串,只要能在對話中唯一識別傳送者即可。使用者 ID 不必對應任何使用者資料,也不必在對話或智慧回覆產生器呼叫之間保持一致。 - 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)); - 對話記錄物件類似下列範例: - 時間戳記 - userID - isLocalUser - 訊息 - Thu Feb 21 13:13:39 PST 2019 - true - 你正在前往嗎? - Thu Feb 21 13:15:03 PST 2019 - FRIEND0 - false - 抱歉,我會晚一點到! - ML Kit 會根據對話記錄中的最後一則訊息建議回覆內容。最後一則訊息應來自非本機使用者。在上述範例中,對話中的最後一則訊息來自非本機使用者 FRIEND0。當您將這則記錄傳送給 ML Kit 時,系統會建議回覆 FRIENDO 的訊息:「Running late, sorry!」(抱歉,我會晚點到!) - 2. 取得訊息回覆- 如要為訊息產生智慧回覆,請取得 - SmartReplyGenerator的例項,並將對話記錄傳遞至其- suggestReplies()方法:- 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 // ... } }); - 如果作業成功,系統會將 - SmartReplySuggestionResult物件傳遞至成功處理常式。這個物件最多包含三則建議回覆,您可以向使用者顯示這些回覆:- Kotlin- for (suggestion in result.suggestions) { val replyText = suggestion.text } - Java- for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); } - 請注意,如果模型對建議回覆的相關性沒有把握、輸入的對話不是英文,或是模型偵測到敏感主題,ML Kit 可能不會傳回結果。 
