Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Générer des réponses intelligentes avec ML Kit sur iOS

Vous pouvez utiliser ML Kit pour générer des réponses aux messages à l'aide d'un modèle sur l'appareil.

Pour générer des réponses intelligentes, vous transmettez à ML Kit un journal des messages récents d'une conversation. Si ML Kit détermine que la conversation est en anglais et que la conversation n'a pas de sujet potentiellement sensible, ML Kit génère jusqu'à trois réponses, que vous pouvez suggérer à votre utilisateur.

Avant que tu commences

  1. Si vous n'avez pas encore ajouté Firebase à votre application, faites-le en suivant les étapes du guide de démarrage .
  2. Incluez les bibliothèques ML Kit dans votre Podfile:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    Après avoir installé ou mis à jour les Pods de votre projet, assurez-vous d'ouvrir votre projet Xcode en utilisant son .xcworkspace .
  3. Dans votre application, importez Firebase:

    Rapide

    import Firebase

    Objectif c

    @import Firebase;

1. Créez un objet d'historique de conversation

Pour générer des réponses intelligentes, vous transmettez à ML Kit un tableau chronologiquement ordonné d'objets TextMessage , avec l'horodatage le plus ancien en premier. Chaque fois que l'utilisateur envoie ou reçoit un message, ajoutez le message, son horodatage et l'ID utilisateur de l'expéditeur du message à l'historique des conversations.

L'ID utilisateur peut être n'importe quelle chaîne qui identifie de manière unique l'expéditeur dans la conversation. 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 les appels du générateur de réponse intelligent.

Si le message a été envoyé par l'utilisateur isLocalUser vous souhaitez suggérer des réponses, définissez isLocalUser sur true.

Rapide

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)

Objectif 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 d'historique de conversation ressemble à l'exemple suivant:

Horodatage Identifiant d'utilisateur Utilisateur local? Message
Jeu.21 février 13:13:39 PST 2019 vrai êtes-vous sur votre chemin?
Jeu.21 février 13:15:03 PST 2019 AMI0 faux En retard, désolé!

Notez que le message le plus récent de l'exemple ci-dessus provient d'un utilisateur non local. Ceci 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 vous assurer que vous transmettez à ML Kit un journal de conversation qui se termine par un message auquel votre utilisateur voudra peut-être répondre.

2. Obtenez les réponses aux messages

Pour générer des réponses intelligentes à un message, obtenez une instance de SmartReply et transmettez l'historique des conversations à sa suggestReplies(for:completion:) :

Rapide

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

Objectif 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 réussit, un objet SmartReplySuggestionResult est passé au gestionnaire d'achèvement. Cet objet contient une liste de jusqu'à 3 réponses suggérées, que vous pouvez présenter à votre utilisateur:

Rapide

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

Objectif 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.