Smart Reply no Android com ML Kit

Sugerindo respostas inteligentes a partir do contexto da conversa

Jeziel Lago
3 min readApr 6, 2019
Uso do smart reply no app textPlus — ML Kit expands into NLP with Language Identification and Smart Reply

Já faz algum tempo que a Google apresentou o Firebase ML Kit, um SDK que surgiu com o objetivo de levar a experiência de machine learning do Google para aplicativos Android e iOS, reunindo um conjunto de ferramentas bastante poderoso e muito fácil de usar.

Recentemente, novas features foram incluídas no ML Kit com o foco em Linguagem Natural:

  • Identificação de Idioma em um Texto
  • Respostas Inteligentes (Smart Reply).

O primeiro, como o próprio nome já diz, conseguimos identificar o idioma de um determinado texto. Enquanto o recurso de Smart Reply nos dar a facilidade de sugerir automaticamente respostas para uma conversa.

Ao longo do texto entraremos em mais detalhes sobre o Smart Reply e veremos como é simples a sua implementação.

Smart Reply

O principal objetivo do Smart Reply é gerar automaticamente respostas relevantes às mensagens, ajudando os seus usuários a responder rapidamente e facilitando a resposta em dispositivos com recursos de entrada limitados, como um smartwatch, por exemplo.

Vale ressaltar que no momento essa funcionalidade só está disponível no idioma Inglês.

Como funciona?

Para gerar respostas inteligentes, você envia ao ML Kit uma lista de mensagens recentes em uma conversa. Se o ML Kit determinar que a conversa está em inglês e a conversa não tiver um assunto potencialmente sensível, o ML Kit gera até três respostas, as quais você pode sugerir ao usuário.

Como usar?

Antes de começar, precisamos configurar as dependências necessárias para que o ML Kit possa nos disponibilizar os recursos do Smart Reply. Veja os passos a seguir:

  1. O primeiro passo para usar o ML Kit é adicionar o Firebase ao seu projeto.
  2. Adicione as dependências do Smart Reply no app/build.gradle:

3. Desabilite a compressão de arquivos tflite para que o modelo possa funcionar sem problemas

Com essa parte de configuração finalizada, vamos de fato fazer a implementação!

É importante entender que as sugestões de respostas serão geradas a partir das mensagens mais recentes em uma conversa. Logo, temos mais de uma pessoa envolvida e logo a seguir você verá porquê precisamos falar disso.

Para fazer as sugestões, o ML Kit precisa de uma lista de mensagens, basicamente uma lista de objetos do tipo FirebaseTextMessage. Na criação de cada mensagem, devemos indicar se o remetente é o usuário local ou se a mensagem é de um usuário remoto. A classe FirebaseTextMessage possui dois métodos para isso. Veja o exemplo a seguir.

Sempre que o usuário (local) receber uma mensagem, devemos adicionar a criar uma mensagem com o registro de data e hora e o ID do usuário remetente ao histórico de conversas. O ID do usuário pode ser qualquer string que identifique exclusivamente o remetente na conversa. O ID do usuário não precisa corresponder a nenhum dado do usuário e o ID do usuário não precisa ser consistente entre conversas ou invocações do Smart Reply.

Gerando respostas inteligentes

Após criar uma lista com as mensagens, podemos invocar o Smart Reply para obter as sugestões de resposta. Para isso, vamos criar uma instância de FirebaseSmartReply e chamar o método suggestedReplies passando a lista de mensagens. Veja o exemplo completo abaixo:

Se o ML Kit conseguir retornar sugestões para nossas mensagens, podemos acessar essas sugestões com result.suggestions e apresentar as sugestões de respostas para o usuário. Sem muita complicação né?

Se quiser conferir mais detalhes, preparei um projeto de exemplo que está lá no meu GitHub https://github.com/jeziellago/smart-reply-mlkit.

Gostou desse artigo? Não deixe de compartilhar no seu Twitter, no seu LinkedIn, no Slack, enfim … Muito obrigado por chegar até aqui!

--

--