O Kit de ML pode gerar respostas curtas para mensagens usando um modelo no dispositivo.
Para gerar respostas inteligentes, você transmite ao Kit de ML um registro das mensagens recentes de uma conversa. Se o Kit de ML determinar que a conversa está em inglês e que ela não trata de um assunto potencialmente sensível, o Kit vai gerar até três respostas, que podem ser sugeridas ao usuário.
| Agrupadas | Não agrupada | |
|---|---|---|
| Nome da biblioteca | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply | 
| Implementação | O modelo é vinculado estaticamente ao app no momento da criação. | O modelo é baixado dinamicamente pelo Google Play Services. | 
| Impacto do tamanho do app | Aumento de tamanho de cerca de 5,7 MB. | Aumento de cerca de 200 KB. | 
| Tempo de inicialização | O modelo fica disponível imediatamente. | Talvez seja necessário aguardar o download do modelo antes do primeiro uso. | 
Faça um teste
- Teste o app de exemplo para ver um exemplo de uso dessa API.
Antes de começar
- No arquivo - build.gradleno nível do projeto, inclua o repositório Maven do Google nas seções- buildscripte- allprojects.
- Adicione as dependências das bibliotecas do Android do Kit de ML ao arquivo Gradle do módulo no nível do app, que geralmente é - app/build.gradle. Escolha uma das seguintes dependências com base nas suas necessidades:- Para agrupar o modelo e o app:
 - dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }- Para usar o modelo no Google Play Services:
 - dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1' }- Se você escolher usar o modelo no Google Play Services, configure seu app para fazer o download automático do modelo no dispositivo depois que ele for instalado da Play Store. Adicionando a seguinte declaração ao arquivo - AndroidManifest.xmldo app:- <application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="smart_reply" > <!-- To use multiple models: android:value="smart_reply,model2,model3" --> </application>- Também é possível verificar explicitamente a disponibilidade do modelo e solicitar o download usando a API ModuleInstallClient dos Serviços do Google Play. - Se você não ativar os downloads do modelo no momento da instalação ou solicitar o download explícito, o modelo será baixado na primeira vez em que você executar o gerador de respostas inteligentes. As solicitações feitas antes da conclusão do download não produzem resultados. - 1. Criar um objeto de histórico de conversas- Para gerar respostas inteligentes, você transmite para o Kit de ML uma - Listde objetos- TextMessageem ordem cronológica, com o carimbo de data/hora mais antigo primeiro.- Sempre que o usuário enviar uma mensagem, adicione-a com o carimbo de data/hora ao histórico de conversas: - Kotlin- conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis())) - Java- conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis())); - Sempre que o usuário receber uma mensagem, adicione a mensagem, o carimbo de data/hora e o ID do usuário do 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 não precisa estar consistente entre conversas ou invocações do gerador de respostas inteligentes. - Kotlin- conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId)) - Java- conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId)); - Um objeto de histórico de conversas é parecido com o exemplo a seguir: - Carimbo de data/hora - userID - isLocalUser - Mensagem - Thu Feb 21 13:13:39 PST 2019 - verdadeiro - are you on your way? - Thu Feb 21 13:15:03 PST 2019 - FRIEND0 - falso - Vou me atrasar, desculpe! - O ML Kit sugere respostas para a última mensagem em um histórico de conversa. A última mensagem precisa ser de um usuário não local. No exemplo acima, a última mensagem da conversa é do usuário não local FRIEND0. Quando você usa o Kit de ML com esse registro, ele sugere respostas à mensagem do FRIENDO: "Estou atrasado, desculpe!" - 2. Receber respostas de mensagens- Para gerar respostas inteligentes a uma mensagem, receba uma instância de - SmartReplyGeneratore transmita o histórico de conversas para o método- suggestReplies():- Kotlin- val smartReplyGenerator = SmartReply.getClient() smartReply.suggestReplies(conversation) .addOnSuccessListener { result -> if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) { // Task completed successfully // ... } } .addOnFailureListener { // Task failed with an exception // ... } - Java- SmartReplyGenerator smartReply = SmartReply.getClient(); smartReply.suggestReplies(conversation) .addOnSuccessListener(new OnSuccessListener - () { @Override public void onSuccess(SmartReplySuggestionResult result) { if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // 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 // ... } }); - Se a operação for bem-sucedida, um objeto - SmartReplySuggestionResultserá transmitido para o gerenciador de sucesso. Esse objeto contém uma lista de até três respostas sugeridas, que você pode apresentar ao usuário:- Kotlin- for (suggestion in result.suggestions) { val replyText = suggestion.text } - Java- for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); } - Talvez o Kit de ML não retorne resultados se o modelo não estiver confiante na relevância das respostas sugeridas, se a conversa de entrada não estiver em inglês ou se o modelo detectar um assunto sensível. 
