机器学习套件可以使用设备端模型为消息生成简短回复。
如需生成智能回复,请向机器学习套件传递对话中近期消息的日志。如果机器学习套件确定会话的语言是英语,并且其中没有潜在的敏感主题,则机器学习套件会生成最多三条回复,供您向用户推荐。
试试看
- 试用示例应用,查看此 API 的示例用法。
准备工作
- 在 Podfile 中添加以下机器学习套件 pod:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- 安装或更新项目的 Pod 之后,请使用 Xcode 项目的
.xcworkspace
打开该项目。Xcode 12.4 版或更高版本支持机器学习套件。
1. 创建对话历史记录对象
如需生成智能回复,请向机器学习套件传递按时间排序的 TextMessage
对象数组,时间戳早的排在前面。每当用户发送或接收消息时,将消息、其时间戳和消息发送者的用户 ID 添加到对话历史记录中。
用户 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];
对话历史记录对象如以下示例所示:
时间戳 | 用户 ID | isLocalUser | 讯息 |
---|---|---|---|
太平洋标准时间 2019 年 2 月 21 日星期四 13:13:39 | true | 你在路上吗? | |
太平洋标准时间 2019 年 2 月 21 日星期四 13:15:03 | 朋友 0 | 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); }
请注意,如果模型对建议回复的相关性不确定、输入会话不是英语,或者模型检测到敏感主题,则机器学习套件可能不会返回结果。