机器学习套件可以使用设备端模型生成对消息的简短回复。
要生成智能回复,您需要向机器学习套件传递 对话。如果机器学习套件确定对话是英语,并且 对话没有可能敏感的主题;机器学习套件 最多会生成三个回复,您可以推荐给用户。
试试看
- 您可以试用示例应用, 请查看此 API 的用法示例。
准备工作
- 在 Podfile 中添加以下机器学习套件 Pod:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- 安装或更新项目的 Pod 之后,使用 Xcode 项目的
.xcworkspace
。Xcode 12.4 或更高版本支持机器学习套件。
1. 创建对话历史记录对象
要生成智能回复,您需要向机器学习套件传递
TextMessage
对象,时间戳早的在前面。每当用户
发送或接收消息,添加消息、其时间戳和消息
将发送者的用户 ID 添加到对话记录中。
用户 ID 可以是任何字符串,用于标识 对话。User 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 | true | 你在路上吗? | |
太平洋标准时间 2019 年 2 月 21 日星期四 13:15:03 | FRIEND0 | false | 要迟到了,对不起! |
机器学习套件会针对对话历史记录中的最后一条消息提供回复建议。最后一条消息 应来自非本地用户。在上面的示例中,会话中的最后一封邮件 来自非本地用户 FRIEND0。当您使用向机器学习套件传递此日志时,它会 回复 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
对象传递给
完成处理程序。此对象包含一个列表,其中最多包含三个
您可以向用户显示以下回复:
Swift
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
Objective-C
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
请注意,如果模型对 建议回复的相关性,输入会话不在 英语,或者模型检测到敏感主题的情况。