Puede usar ML Kit para generar respuestas de mensajes usando un modelo en el dispositivo.
Para generar respuestas inteligentes, pasa a ML Kit un registro de mensajes recientes en una conversación. Si ML Kit 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 puede sugerir a su usuario.
Antes de que empieces
- Si aún no lo ha hecho, agregue Firebase a su proyecto de Android .
- Agregue las dependencias para las bibliotecas de Android ML Kit a su archivo Gradle de módulo (nivel de aplicación) (generalmente
app/build.gradle
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7' }
- También en su archivo
build.gradle
a nivel de aplicación, deshabilite la compresión de archivostflite
:android { // ... aaptOptions { noCompress "tflite" } }
1. Crea un objeto de historial de conversación
Para generar respuestas inteligentes, pasa a ML Kit una List
ordenada cronológicamente de objetos FirebaseTextMessage
, con la marca de tiempo más antigua primero.
Cada vez que el usuario envíe un mensaje, agregue el mensaje y su marca de tiempo al historial de la conversación:
Java
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
kotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
Siempre que el usuario reciba un mensaje, agregue el mensaje, su marca de tiempo y la ID de usuario del remitente al historial de conversaciones. El ID de usuario puede ser cualquier cadena que identifique de forma única al remitente dentro de la conversación. El ID de usuario no necesita corresponder a ningún dato de usuario, y el ID de usuario no necesita ser consistente entre conversaciones o invocaciones del generador de respuestas inteligentes.
Java
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
kotlin
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
Un objeto de historial de conversación se parece al siguiente ejemplo:
marca de tiempo | ID de usuario | ¿Usuario local? | Mensaje |
---|---|---|---|
jue 21 de febrero 13:13:39 PST 2019 | verdadero | ¿estas tu en tu camino? | |
jue 21 de febrero 13:15:03 PST 2019 | AMIGO0 | falso | Llegando tarde, lo siento! |
Tenga en cuenta que el mensaje más reciente en el ejemplo anterior es de un usuario no local. Esto es importante porque ML Kit sugiere respuestas destinadas a ser enviadas por el usuario de su aplicación: el usuario local. Debe asegurarse de pasarle a ML Kit un registro de conversación que termine con un mensaje al que su usuario podría querer responder.
2. Obtenga respuestas de mensajes
Para generar respuestas inteligentes a un mensaje, obtenga una instancia de FirebaseSmartReply
y pase el historial de la conversación a su método suggestReplies()
:
Java
FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
.addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
@Override
public void onSuccess(SmartReplySuggestionResult result) {
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
kotlin
val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
.addOnSuccessListener { result ->
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
.addOnFailureListener {
// Task failed with an exception
// ...
}
Si la operación tiene éxito, se pasa un objeto SmartReplySuggestionResult
al controlador de éxito. Este objeto contiene una lista de hasta 3 respuestas sugeridas, que puede presentar a su usuario:
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
kotlin
for (suggestion in result.suggestions) {
val replyText = suggestion.text
}
Tenga en cuenta que es posible que ML Kit no arroje resultados si el modelo no confía en la relevancia de las respuestas sugeridas, la conversación de entrada no está en inglés o si el modelo detecta un tema delicado.