ML Kit では、オンデバイス モデルを使用してメッセージに対する短い返信を生成できます。
スマート リプライを生成するには、ML Kit に最近のメッセージのログを あります。ML Kit によって会話が英語であると判断され、 会話に機密のテーマが含まれない場合、ML Kit では 最大 3 件の返信が生成され、ユーザーに提案できます。
試してみる
- サンプルアプリを試してみましょう。 この API の使用例をご覧ください
始める前に
- Podfile に次の ML Kit Pod を追加します。
pod 'GoogleMLKit/SmartReply', '3.2.0'
- プロジェクトの Pod をインストールまたは更新したら、Xcode プロジェクトを開きます。
.xcworkspace
。ML Kit は Xcode バージョン 12.4 以降でサポートされています。
1. 会話履歴オブジェクトを作成する
スマート リプライを生成するには、ML Kit に時系列順の配列を渡します。
TextMessage
オブジェクト(最も古いタイムスタンプが最初)。ユーザーが
メッセージを送信または受信するには、そのメッセージ、そのタイムスタンプ、およびメッセージを
会話履歴に追加します。
ユーザー ID には、送信者を一意に識別する任意の文字列を あります。ユーザー ID はユーザーデータに対応している 必要はありません ユーザー ID は会話や間で一貫していなくてもかまいません。 スマート リプライ生成ツールの呼び出し。
返信を提案するユーザーから送信されたメッセージに対しては、
isLocalUser
を 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: MLKTextMessage *message = [[MLKTextMessage alloc] initWithText:@"How are you?" timestamp:[NSDate date].timeIntervalSince1970 userID:userId isLocalUser:NO]; [conversation addObject:message];
会話履歴オブジェクトは次の例のようになります。
タイムスタンプ | 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. メッセージの返信を受け取る
メッセージに対するスマート リプライを生成するには、SmartReply
のインスタンスを取得して
会話履歴を suggestReplies(for:completion:)
メソッドに追加します。
Swift
SmartReply.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 result doesn't contain any suggestions. } else if (result.status == .success) { // Successfully suggested smart replies. // ... } }
Objective-C
MLKSmartReply *smartReply = [MLKSmartReply smartReply]; [smartReply suggestRepliesForMessages:inputText completion:^(MLKSmartReplySuggestionResult * _Nullable result, NSError * _Nullable error) { if (error || !result) { return; } if (result.status == MLKSmartReplyResultStatusNotSupportedLanguage) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.status == MLKSmartReplyResultStatusSuccess) { // Successfully suggested smart replies. // ... } }];
オペレーションが成功すると、SmartReplySuggestionResult
オブジェクトが
完了ハンドラがあります。このオブジェクトには、最大 3 つの候補リストが
ユーザーに提示できる返信文:
Swift
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
Objective-C
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
モデルが信頼できていない場合は、ML Kit が結果を返さない場合があるので注意してください。 定型返信文の関連性を保ちながら、入力された会話は またはモデルがデリケートな主題を検出するかどうかを表します。