Generowanie inteligentnych odpowiedzi za pomocą ML Kit na iOS

ML Kit może generować krótkie odpowiedzi na wiadomości przy użyciu modelu na urządzeniu.

Aby generować inteligentne odpowiedzi, musisz przekazać ML Kit dziennik ostatnich wiadomości w rozmowy. Jeśli ML Kit ustali, że rozmowa jest po angielsku, rozmowa nie ma potencjalnie poufnej sprawy, ML Kit generuje maksymalnie 3 odpowiedzi, które możesz zasugerować użytkownikowi.

Wypróbuj

Zanim zaczniesz

  1. W pliku Podfile umieść te pody ML Kit:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. Po zainstalowaniu lub zaktualizowaniu podów projektu otwórz projekt Xcode za pomocą .xcworkspace ML Kit jest obsługiwany w Xcode w wersji 12.4 lub nowszej.

1. Tworzenie obiektu historii rozmowy

Aby generować inteligentne odpowiedzi, musisz przekazać ML Kit uporządkowany chronologicznie tablicę TextMessage obiektów, z najwcześniejszą sygnaturą czasową. Gdy użytkownik wysłanie lub odebranie wiadomości, dodanie wiadomości, jej sygnatury czasowej i wiadomości identyfikator użytkownika nadawcy.

Identyfikatorem użytkownika może być dowolny ciąg, który jednoznacznie identyfikuje nadawcę w rozmowy. nie musi odpowiadać żadnym danym użytkownika, a identyfikator użytkownika nie musi być spójny w wątkach lub generatora inteligentnych odpowiedzi.

Jeśli wiadomość została wysłana przez użytkownika, któremu chcesz zasugerować odpowiedzi, ustaw isLocalUser na prawda.

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];

Obiekt historii rozmowy wygląda jak w tym przykładzie:

Sygnatura czasowa userID isLocalUser Wiadomość
Czw. Lut 2019, 13:13:39 PST 2019 prawda jesteś w drodze?
Cz 21 lutego 13:15:03 PST 2019 ZNAJOMI0 fałsz Spóźnię się.

ML Kit sugeruje odpowiedzi na ostatnią wiadomość w historii rozmów. Ostatnia wiadomość powinien pochodzić od użytkownika nielokalnego. W powyższym przykładzie ostatnia wiadomość w wątku pochodzi od nielokalnego użytkownika FRIEND0. Gdy użyjesz tego dziennika, system ML Kit podpowie odpowiedzi na wiadomość od użytkownika FRIENDO: „Spóźnię się, przepraszam!”

2. Otrzymuj odpowiedzi na wiadomości

Aby generować inteligentne odpowiedzi na wiadomość, pobierz wystąpienie SmartReply i prześlij historię rozmowy do metody 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.
      // ...
  }
}];

Jeśli operacja się powiedzie, obiekt SmartReplySuggestionResult zostanie przekazany do z modułem do obsługi uzupełniania. Ten obiekt zawiera listę maksymalnie 3 sugerowanych które możesz zaprezentować użytkownikowi:

Swift

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

Objective-C

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

Pamiętaj, że ML Kit może nie zwracać wyników, jeśli model nie ma pewności trafność sugerowanych odpowiedzi, rozmówca nie jest angielskim lub jeśli model wykryje wrażliwy obiekt.