ML Kit может генерировать короткие ответы на сообщения, используя модель на устройстве.
Чтобы генерировать умные ответы, вы передаете ML Kit журнал последних сообщений в разговоре. Если ML Kit определяет, что разговор ведется на английском языке и что разговор не имеет потенциально деликатной темы, ML Kit генерирует до трех ответов, которые вы можете предложить своему пользователю.
Попробуйте это
- Поэкспериментируйте с примером приложения , чтобы увидеть пример использования этого API.
Прежде чем начать
- Включите в свой подфайл следующие модули ML Kit:
pod 'GoogleMLKit/SmartReply', '7.0.0'
- После установки или обновления модулей вашего проекта откройте проект Xcode, используя его
.xcworkspace
. ML Kit поддерживается в Xcode версии 12.4 или новее.
1. Создайте объект истории разговоров.
Для создания интеллектуальных ответов вы передаете ML Kit хронологически упорядоченный массив объектов TextMessage
, начиная с самой ранней временной метки. Каждый раз, когда пользователь отправляет или получает сообщение, добавляйте сообщение, его временную метку и идентификатор пользователя отправителя сообщения в историю разговоров.
Идентификатор пользователя может представлять собой любую строку, которая однозначно идентифицирует отправителя в диалоге. Идентификатор пользователя не обязательно должен соответствовать каким-либо пользовательским данным, а идентификатор пользователя не должен быть согласованным между разговорами или вызовами генератора интеллектуальных ответов.
Если сообщение было отправлено пользователем, которому вы хотите предложить ответы, установите для isLocalUser
значение true.
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)
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 | Сообщение |
---|---|---|---|
Четверг, 21 февраля, 13:13:39 по тихоокеанскому стандартному времени 2019 г. | истинный | ты уже в пути? | |
Чт, 21 февраля, 13:15:03 по тихоокеанскому стандартному времени 2019 г. | ДРУГ0 | ЛОЖЬ | Опаздываю, извините! |
ML Kit предлагает ответы на последнее сообщение в истории разговоров. Последнее сообщение должно быть от нелокального пользователя. В приведенном выше примере последнее сообщение в беседе принадлежит нелокальному пользователю FRIEND0. Когда вы используете этот журнал pass ML Kit, он предлагает ответы на сообщение FRIENDO: «Опоздаю, извините!»
2. Получите ответы на сообщения
Чтобы генерировать интеллектуальные ответы на сообщение, получите экземпляр SmartReply
и передайте историю разговора в его метод suggestReplies(for:completion:)
:
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. // ... } }
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
передается обработчику завершения. Этот объект содержит список из трех предлагаемых ответов, которые вы можете представить своему пользователю:
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
Обратите внимание, что ML Kit может не возвращать результаты, если модель не уверена в релевантности предлагаемых ответов, входной диалог ведется не на английском языке или если модель обнаруживает деликатную тему.