Generowanie inteligentnych odpowiedzi za pomocą ML Kit na iOS

Możesz używać ML Kit do generowania odpowiedzi na wiadomości przy użyciu model atrybucji.

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.

Zanim zaczniesz

  1. Jeśli nie masz jeszcze w aplikacji dodanej Firebase, wykonaj czynności podane w przewodniku dla początkujących.
  2. Umieść biblioteki ML Kit w pliku Podfile:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Po zainstalowaniu lub zaktualizowaniu podów projektu otwórz Xcode projektu korzystającego z: .xcworkspace.
  3. W aplikacji zaimportuj Firebase:

    Swift

    import Firebase

    Objective-C

    @import Firebase;

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:
FIRTextMessage *message = [[FIRTextMessage 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 Identyfikator użytkownika Korzystasz z lokalnego profilu? 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ę.

Najnowsza wiadomość w powyższym przykładzie pochodzi od użytkownika spoza regionu użytkownika. To ważne, ponieważ ML Kit sugeruje odpowiedzi, które mają zostać wysłane przez użytkownika aplikacji, czyli użytkownika lokalnego. Musisz się upewnić, że zdajesz ML Kit dziennik rozmowy kończący się wiadomością, do której użytkownik może chcesz odpowiedzieć.

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

let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.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
        // the result doesn't contain any suggestions.
    } else if (result.status == .success) {
        // Successfully suggested smart replies.
        // ...
    }
}

Objective-C

FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRSmartReply *smartReply = [naturalLanguage smartReply];
[smartReply suggestRepliesForMessages:inputText
                           completion:^(FIRSmartReplySuggestionResult * _Nullable result,
                                        NSError * _Nullable error) {
  if (error || !result) {
    return;
  }
  if (result.status == FIRSmartReplyResultStatusNotSupportedLanguage) {
      // The conversation's language isn't supported, so the
      // the result doesn't contain any suggestions.
  } else if (result.status == FIRSmartReplyResultStatusSuccess) {
      // 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 (FIRSmartReplySuggestion *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.