机器学习套件可以使用设备端模型生成对消息的简短回复。
如需生成智能回复,您需要向机器学习套件传递对话中近期消息的日志。如果机器学习套件确定对话使用的是英语,并且对话没有潜在的敏感主题,则会生成最多三个回复,供您向用户推荐。
试试看
- 试用示例应用,查看此 API 的用法示例。
准备工作
- 在您的 Podfile 中添加以下机器学习套件 Pod:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- 安装或更新项目的 Pod 之后,请使用 Xcode 项目的
.xcworkspace
来打开项目。Xcode 12.4 版或更高版本支持机器学习套件。
1. 创建对话历史记录对象
如需生成智能回复,请向机器学习套件传递按时间排序的 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 | true | 你在路上吗? | |
太平洋标准时间 2019 年 2 月 21 日星期四 13:15:03 | FRIEND0 | false | 要迟到了,抱歉! |
机器学习套件会针对对话记录中的最后一条消息提供回复建议。最后一条消息应来自非本地用户。在上面的示例中,对话中的最后一条消息来自非本地用户 Friends0。当您使用机器学习套件传递此日志时,它会建议回复 friendO 的消息:“Running late,Sorry!”
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); }
请注意,如果模型对建议回复的相关性不确定、输入对话不是英语,或者模型检测到敏感主题,则机器学习套件可能不会返回结果。