Genera risposte intelligenti con ML Kit su iOS

Puoi usare ML Kit per generare risposte ai messaggi usando un modello sul dispositivo.

Per generare risposte intelligenti, trasmetti a ML Kit un registro dei messaggi recenti in una conversazione. Se ML Kit determina che la conversazione è in inglese e che non tratta argomenti potenzialmente sensibili, ML Kit genera fino a tre risposte, che puoi suggerire al tuo utente.

Prima di iniziare

  1. Se non hai già aggiunto Firebase alla tua app, fallo seguendo i passaggi nella guida introduttiva .
  2. Includi le librerie ML Kit nel tuo Podfile:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Dopo aver installato o aggiornato i Pod del tuo progetto, assicurati di aprire il tuo progetto Xcode utilizzando il relativo .xcworkspace .
  3. Nella tua app, importa Firebase:

    Veloce

    import Firebase

    Obiettivo-C

    @import Firebase;

1. Crea un oggetto cronologia conversazioni

Per generare risposte intelligenti, passi a ML Kit una matrice ordinata cronologicamente di oggetti TextMessage , con prima il timestamp più recente. Ogni volta che l'utente invia o riceve un messaggio, aggiungi il messaggio, il relativo timestamp e l'ID utente del mittente del messaggio alla cronologia delle conversazioni.

L'ID utente può essere qualsiasi stringa che identifica in modo univoco il mittente all'interno della conversazione. Non è necessario che l'ID utente corrisponda ad alcun dato utente e non è necessario che sia coerente tra le conversazioni o le invocazioni del generatore di risposte intelligenti.

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

Veloce

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)

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

Un oggetto della cronologia delle conversazioni è simile al seguente esempio:

Timestamp ID utente Utente locale? Messaggio
Gio 21 febbraio 13:13:39 PST 2019 VERO stai arrivando?
Gio 21 febbraio 13:15:03 PST 2019 AMICO0 falso In ritardo, scusa!

Tieni presente che il messaggio più recente nell'esempio precedente proviene da un utente non locale. Questo è importante perché ML Kit suggerisce risposte destinate ad essere inviate dall'utente della tua app: l'utente locale. Dovresti essere sicuro di passare a ML Kit un registro delle conversazioni che termina con un messaggio a cui il tuo utente potrebbe voler rispondere.

2. Ricevi risposte ai messaggi

Per generare risposte intelligenti a un messaggio, ottieni un'istanza di SmartReply e passa la cronologia delle conversazioni al suo metodo suggestReplies(for:completion:) :

Veloce

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

Obiettivo-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.
      // ...
  }
}];
]

Se l'operazione riesce, un oggetto SmartReplySuggestionResult viene passato al gestore di completamento. Questo oggetto contiene un elenco di un massimo di 3 risposte suggerite, che puoi presentare al tuo utente:

Veloce

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

Obiettivo-C

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

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