Vous pouvez utiliser ML Kit pour générer des réponses aux messages à l'aide d'une méthode du modèle de ML.
Pour générer des réponses suggérées, vous transmettez à ML Kit un journal des messages récents dans une conversationnelle. Si ML Kit détermine que la conversation est en anglais, la conversation n'a pas d'objet potentiellement sensible, ML Kit génère jusqu'à trois réponses, que vous pouvez suggérer à l'utilisateur.
Avant de commencer
- Si vous n'avez pas encore ajouté Firebase à votre application, suivez les les étapes décrites dans le guide de démarrage.
- Incluez les bibliothèques ML Kit dans votre Podfile:
Après avoir installé ou mis à jour les pods de votre projet, ouvrez votre Xcode projet à l'aide de sonpod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
.xcworkspace
. - Dans votre application, importez Firebase :
Swift
import Firebase
Objective-C
@import Firebase;
1. Créer un objet d'historique des conversations
Pour générer des réponses suggérées, vous transmettez à ML Kit un tableau de données classées par ordre chronologique
Objets TextMessage
, avec le code temporel le plus ancien en premier. Chaque fois que l'utilisateur envoie ou reçoit un message, ajoutez le message, son code temporel et l'ID utilisateur de l'expéditeur du message à l'historique de la conversation.
L'ID utilisateur peut être n'importe quelle chaîne identifiant de façon unique l'expéditeur dans les conversationnelle. L'ID utilisateur n'a pas besoin de correspondre à des données utilisateur, et l'ID utilisateur n'a pas besoin d'être cohérent entre les conversations ou du générateur de réponses suggérées.
Si le message a été envoyé par l'utilisateur auquel vous souhaitez suggérer des réponses, définissez
isLocalUser
sur "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:
FIRTextMessage *message = [[FIRTextMessage alloc]
initWithText:@"How are you?"
timestamp:[NSDate date].timeIntervalSince1970
userID:userId
isLocalUser:NO];
[conversation addObject:message];
Un objet "historique des conversations" se présente comme suit :
Horodatage | User-ID | Utilisateur local ? | Message |
---|---|---|---|
Jeu. 21 févr. 13:13:39 PST 2019 | true | Vous êtes en route ? | |
Jeu. 21 févr. 13:15:03 PST 2019 | FRIEND0 | faux | Nous sommes en retard, désolé ! |
Notez que le message le plus récent de l'exemple ci-dessus provient d'un message utilisateur. Cela est important, car ML Kit suggère des réponses destinées à être envoyées par l'utilisateur de votre application : l'utilisateur local. Vous devez être sûr de transmettre ML Kit, un journal de conversation qui se termine par un message auquel votre utilisateur que vous souhaitez répondre.
2. Recevoir des réponses aux messages
Pour générer des réponses suggérées à un message, obtenez une instance de SmartReply
et transmettez l'historique de la conversation à sa méthode 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.
// ...
}
}];
]
Si l'opération aboutit, un objet SmartReplySuggestionResult
est transmis à
le gestionnaire d'achèvement. Cet objet contient une liste de trois suggestions maximum
que vous pouvez présenter à vos utilisateurs:
Swift
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
Objective-C
for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
NSLog(@"Suggested reply: %@", suggestion.text);
}
Notez que ML Kit peut ne pas renvoyer de résultats si le modèle n'est pas sûr de la pertinence des réponses suggérées, si la conversation d'entrée n'est pas en anglais ou si le modèle détecte un sujet sensible.