ML Kit puede generar respuestas cortas a mensajes con un modelo en el dispositivo.
Para generar respuestas inteligentes, pasa al Kit de AA un registro de mensajes recientes en un conversación. Si el Kit de AA determina que la conversación está en inglés y que la conversación no tiene un tema potencialmente sensible, ML Kit genera hasta tres respuestas que puedes sugerir al usuario.
Probar
- Prueba la app de ejemplo para ver un ejemplo de uso de esta API.
Antes de comenzar
- Incluye los siguientes pods del ML Kit en tu Podfile:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- Después de instalar o actualizar los Pods de tu proyecto, abre el proyecto de Xcode a través de su
.xcworkspace
El Kit de AA es compatible con Xcode 12.4 o versiones posteriores.
1. Crea un objeto de historial de conversaciones
Para generar respuestas inteligentes, debes pasar al Kit de AA un array ordenado cronológicamente de
Objetos TextMessage
, con la marca de tiempo más antigua primero. Cuando el usuario
envía o recibe un mensaje, agrega el mensaje, su marca de tiempo y el mensaje
ID de usuario del remitente en el historial de conversaciones.
El ID de usuario puede ser cualquier cadena que identifique de forma única al remitente dentro del conversación. El ID del usuario no tiene que corresponder a ningún dato del usuario. y el ID del usuario no tiene que ser coherente entre conversaciones o invocaciones del generador de respuestas inteligentes.
Si el mensaje lo envió el usuario al que quieres sugerirle respuestas, configura
isLocalUser
como verdadero.
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 objeto de historial de conversaciones se parece al siguiente ejemplo:
Marca de tiempo | userID | isLocalUser | Mensaje |
---|---|---|---|
Jue 21 de feb 13:13:39 PST 2019 | verdadero | ¿vas en camino? | |
Jue 21 de feb 13:15:03 PST 2019 | FRIEND0 | falso | Llegaré tarde, lo siento. |
El Kit de AA sugiere respuestas al último mensaje de un historial de conversación. Último mensaje debe ser de un usuario que no sea local. En el ejemplo anterior, el último mensaje de la conversación es del usuario no local FRIEND0. Cuando usas pasar este registro del ML Kit, te sugiere respuestas al mensaje de FRIENDO: "¡Llegaré tarde, lo siento!"
2. Recibe respuestas de mensajes
Para generar respuestas inteligentes a un mensaje, obtén una instancia de SmartReply
y pasa
el historial de conversaciones a su método 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. // ... } }];
Si la operación se realiza correctamente, se pasará un objeto SmartReplySuggestionResult
a
el controlador de finalización. Este objeto contiene una lista de hasta tres
respuestas, que puedes presentar al usuario:
Swift
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
Objective-C
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
Ten en cuenta que es posible que ML Kit no devuelva resultados si el modelo no está seguro de la relevancia de las respuestas sugeridas, la conversación ingresada no está inglés o si el modelo detecta cuestiones sensibles.