ML Kit では、オンデバイス モデルを使用してメッセージに対する短い返信を生成できます。
スマート リプライを生成するには、ML Kit に最近のメッセージのログを あります。ML Kit によって会話が英語であると判断され、 会話に機密のテーマが含まれない場合、ML Kit では 最大 3 件の返信が生成され、ユーザーに提案できます。
<ph type="x-smartling-placeholder">バンドル | バンドルされていません | |
---|---|---|
ライブラリ名 | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
実装 | モデルは、ビルド時にアプリに静的にリンクされます。 | モデルは Google Play 開発者サービスを介して動的にダウンロードされます。 |
アプリのサイズへの影響 | サイズが約 5.7 MB 増加します。 | 約 200 KB のサイズ増加。 |
初期化時間 | モデルはすぐに使用できます。 | 初めて使用するには、モデルがダウンロードされるのを待たなければならない場合があります。 |
試してみる
- サンプルアプリを試してみましょう。 この API の使用例をご覧ください
始める前に
<ph type="x-smartling-placeholder">プロジェクト レベルの
build.gradle
ファイルに、Google のbuildscript
セクションとallprojects
セクションの両方に 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 開発者サービスでこのモデルを使用する場合は、 アプリがダウンロードされると、モデルが自動的にデバイスにダウンロードされるようになります。 ダウンロードする必要があります。次の宣言を アプリの
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. 会話履歴オブジェクトを作成する
スマート リプライを生成するには、ML Kit に時系列の
List
を渡します。TextMessage
個のオブジェクトのうち、最も古いタイムスタンプが最初に来ます。ユーザーがメッセージを送信するたびに、メッセージとそのタイムスタンプを 会話履歴:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
ユーザーがメッセージを受信するたびに、メッセージ、そのタイムスタンプ、 会話履歴に追加します。ユーザー ID には、ユーザー ID とユーザー 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 メッセージ 2019 年 2 月 21 日(木)13:13:39(PST) true 今向かっていますか? 2019 年 2 月 21 日(木)13:15:03(PST) FRIEND0 false 遅れてごめんなさい! ML Kit は、会話履歴の最後のメッセージに対する返信を提案します。最後のメッセージ ローカル以外のユーザーによるものである必要があります。上の例では、会話の最後のメッセージが ローカル以外のユーザー FRIEND0 さんからのものです。Pass ML Kit を使用すると、 FRIENDO さんのメッセージに返信しています。「遅れて申し訳ありません!」
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
オブジェクトが 使用します。このオブジェクトには、最大 3 つの返信文の候補がリストされ、 これをユーザーに提示できます。Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
モデルが信頼できていない場合は、ML Kit が結果を返さない場合があるので注意してください。 定型返信文の関連性を保ちながら、入力された会話は またはモデルがデリケートな主題を検出するかどうかを表します。