Genera risposte rapide con ML Kit su iOS

ML Kit può generare risposte brevi ai messaggi utilizzando un modello on-device.

Per generare risposte rapide, passi a ML Kit un log dei messaggi recenti in conversazione. Se ML Kit stabilisce che la conversazione è in inglese e la conversazione non tratta argomenti potenzialmente sensibili, ML Kit genera fino a tre risposte, che puoi suggerire all'utente.

Prova

  • Prova l'app di esempio per per vedere un esempio di utilizzo di questa API.

Prima di iniziare

  1. Includi i seguenti pod ML Kit nel podfile:
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. Dopo aver installato o aggiornato i pod del progetto, apri il progetto Xcode utilizzando la relativa .xcworkspace. ML Kit è supportato in Xcode versione 12.4 o successiva.

1. Crea un oggetto cronologia conversazione

Per generare risposte rapide, passi a ML Kit un array ordinato cronologicamente TextMessage di oggetti, con il primo timestamp più recente. Ogni volta che l'utente invia o riceve un messaggio, aggiunge il messaggio, il relativo timestamp e il messaggio l'ID utente del mittente nella cronologia della conversazione.

L'ID utente può essere qualsiasi stringa che identifichi in modo univoco il mittente all'interno dei conversazione. Non è necessario che l'ID utente corrisponda a nessun dato utente, e non è necessario che l'ID utente sia coerente tra le conversazioni del generatore di risposte rapide.

Se il messaggio è stato inviato dall'utente a cui vuoi suggerire risposte, imposta isLocalUser su true.

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

Un oggetto cronologia conversazione ha il seguente aspetto:

Timestamp userID isLocalUser Messaggio
gio 21 feb 13:13:39 PST 2019 true sei sulla strada giusta?
gio 21 feb 13:15:03 PST 2019 FRIEND0 falso Siamo in ritardo, mi dispiace!

ML Kit suggerisce le risposte all'ultimo messaggio di una cronologia di conversazione. L'ultimo messaggio deve provenire da un utente non locale. Nell'esempio precedente, l'ultimo messaggio della conversazione proviene dall'utente non locale FRIENDS0. L'uso del pass ML Kit per questo log suggerisce risponde al messaggio di FRIENDSO: "In ritardo, scusa!"

2. Ricevere risposte ai messaggi

Per generare risposte rapide a un messaggio, ottieni un'istanza di SmartReply e passa la cronologia della conversazione al relativo metodo 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.
      // ...
  }
}];

Se l'operazione riesce, viene passato un oggetto SmartReplySuggestionResult il gestore del completamento. Questo oggetto contiene un elenco di massimo tre che puoi presentare all'utente:

Swift

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

Objective-C

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

Tieni presente che ML Kit potrebbe non restituire risultati se il modello non è sicuro la pertinenza delle risposte suggerite, la conversazione di input non rientra in inglese, o se il modello rileva argomenti sensibili.