Generuj inteligentne odpowiedzi za pomocą ML Kit na iOS

Za pomocą ML Kit możesz generować odpowiedzi na wiadomości przy użyciu modelu na urządzeniu.

Aby wygenerować inteligentne odpowiedzi, przekazujesz ML Kit dziennik ostatnich wiadomości w rozmowie. Jeśli ML Kit ustali, że rozmowa jest prowadzona w języku angielskim i nie ma potencjalnie drażliwego tematu, ML Kit wygeneruje maksymalnie trzy odpowiedzi, które możesz zasugerować użytkownikowi.

Zanim zaczniesz

  1. Jeśli nie dodałeś jeszcze Firebase do swojej aplikacji, zrób to, wykonując czynności opisane w przewodniku wprowadzającym .
  2. Dołącz biblioteki ML Kit do swojego Podfile:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Po zainstalowaniu lub zaktualizowaniu Podów swojego projektu pamiętaj o otwarciu projektu Xcode przy użyciu jego .xcworkspace .
  3. W swojej aplikacji zaimportuj Firebase:

    Szybki

    import Firebase

    Cel C

    @import Firebase;

1. Utwórz obiekt historii konwersacji

Aby wygenerować inteligentne odpowiedzi, przekazujesz do ML Kit uporządkowaną chronologicznie tablicę obiektów TextMessage , zaczynając od najwcześniejszego znacznika czasu. Za każdym razem, gdy użytkownik wysyła lub odbiera wiadomość, dodaj tę wiadomość, jej sygnaturę czasową i identyfikator użytkownika nadawcy wiadomości do historii konwersacji.

Identyfikatorem użytkownika może być dowolny ciąg znaków, który jednoznacznie identyfikuje nadawcę w rozmowie. Identyfikator użytkownika nie musi odpowiadać żadnym danym użytkownika i nie musi być spójny w rozmowach lub wywołaniach generatora inteligentnych odpowiedzi.

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

Szybki

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)

Cel 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 konwersacji wygląda jak w poniższym przykładzie:

Znak czasu Identyfikator użytkownika Użytkownik lokalny? Wiadomość
Czw. 21 lutego 13:13:39 PST 2019 PRAWDA jesteś w drodze?
Czw. 21 lutego 13:15:03 PST 2019 PRZYJACIEL0 FAŁSZ Spóźnienie, przepraszam!

Należy pamiętać, że najnowsza wiadomość w powyższym przykładzie pochodzi od użytkownika innego niż lokalny. Jest to ważne, ponieważ ML Kit sugeruje odpowiedzi, które ma wysłać użytkownik Twojej aplikacji: użytkownik lokalny. Powinieneś mieć pewność, że przekazujesz ML Kit dziennik konwersacji, który kończy się wiadomością, na którą użytkownik może chcieć odpowiedzieć.

2. Otrzymuj odpowiedzi na wiadomości

Aby wygenerować inteligentne odpowiedzi na wiadomość, pobierz instancję SmartReply i przekaż historię konwersacji do jej metody suggestReplies(for:completion:) :

Szybki

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.
        // ...
    }
}

Cel 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 procedury obsługi zakończenia. Obiekt ten zawiera listę maksymalnie 3 sugerowanych odpowiedzi, które możesz zaprezentować swojemu użytkownikowi:

Szybki

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

Cel C

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

Należy pamiętać, że ML Kit może nie zwrócić wyników, jeśli model nie ma pewności co do trafności sugerowanych odpowiedzi, rozmowa wejściowa nie jest prowadzona w języku angielskim lub jeśli model wykryje drażliwy temat.