Создавайте умные ответы с помощью ML Kit на iOS

ML Kit может генерировать короткие ответы на сообщения, используя модель на устройстве.

Чтобы генерировать умные ответы, вы передаете ML Kit журнал последних сообщений в разговоре. Если ML Kit определяет, что разговор ведется на английском языке и что разговор не имеет потенциально деликатной темы, ML Kit генерирует до трех ответов, которые вы можете предложить своему пользователю.

Попробуйте это

Прежде чем начать

  1. Включите в свой подфайл следующие модули ML Kit:
    pod 'GoogleMLKit/SmartReply', '15.5.0'
    
  2. После установки или обновления модулей вашего проекта откройте проект 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)

Цель-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 Сообщение
Четверг, 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.
        // ...
    }
}

Цель-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 передается обработчику завершения. Этот объект содержит список из трех предлагаемых ответов, которые вы можете представить своему пользователю:

Быстрый

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

Цель-C

for (MLKSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

Обратите внимание, что ML Kit может не возвращать результаты, если модель не уверена в релевантности предлагаемых ответов, входной диалог ведется не на английском языке или если модель обнаруживает деликатную тему.