ML Kit può generare risposte brevi ai messaggi utilizzando un modello on-device.
Per generare risposte rapide, passi a ML Kit un log dei messaggi recenti in conversazione. Se ML Kit stabilisce che la conversazione è in inglese e la conversazione non tratta argomenti potenzialmente sensibili, ML Kit genera fino a tre risposte, che puoi suggerire all'utente.
In bundle | Non raggruppati | |
---|---|---|
Nome libreria | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
Implementazione | Il modello è collegato in modo statico alla tua app al momento della creazione. | Il modello viene scaricato in modo dinamico tramite Google Play Services. |
Impatto delle dimensioni dell'app | Aumento delle dimensioni di circa 5,7 MB. | Aumento delle dimensioni di circa 200 kB. |
Tempo di inizializzazione | Il modello è disponibile immediatamente. | Potrebbe essere necessario attendere il download del modello prima del primo utilizzo. |
Prova
- Prova l'app di esempio per per vedere un esempio di utilizzo di questa API.
Prima di iniziare
Nel file
build.gradle
a livello di progetto, assicurati di includere la proprietà Repository Maven in entrambe le sezionibuildscript
eallprojects
.Aggiungi le dipendenze per le librerie Android ML Kit agli file gradle a livello di app, che in genere è
app/build.gradle
. Scegli un'opzione tra le seguenti dipendenze in base alle tue esigenze:- Per raggruppare il modello con la tua app:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }
- Per usare il modello in 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 scegli di utilizzare il modello in Google Play Services, puoi configurare dell'app per scaricare automaticamente il modello sul dispositivo una volta dal Play Store. Aggiungendo la seguente dichiarazione al tuo file
AndroidManifest.xml
dell'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>
Puoi anche verificare esplicitamente la disponibilità del modello e richiedere il download tramite L'API ModuleInstallaClient di Google Play Services.
Se non attivi i download dei modelli al momento dell'installazione o richiedi un download esplicito, il modello viene scaricato la prima volta che esegui il generatore di risposte rapide. Le richieste effettuate prima del completamento del download non producono risultati.
1. Crea un oggetto cronologia conversazione
Per generare risposte rapide, devi passare a ML Kit un
List
ordinato in ordine cronologico diTextMessage
oggetti, con il timestamp più recente.Ogni volta che l'utente invia un messaggio, aggiungi il messaggio e il relativo timestamp alla cronologia delle conversazioni:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
Ogni volta che l'utente riceve un messaggio, aggiungi il messaggio, il relativo timestamp e l'ID utente del mittente nella cronologia della conversazione. L'ID utente può essere qualsiasi stringa identifica in modo univoco il mittente nella conversazione. L'ID utente non richiede in modo che corrispondano a qualsiasi dato utente e l'ID utente non deve essere coerente tra le conversazioni e le chiamate al generatore di risposte rapide.
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));
Un oggetto cronologia conversazione ha il seguente aspetto:
Timestamp userID isLocalUser Messaggio gio 21 feb 13:13:39 PST 2019 true sei sulla strada giusta? gio 21 feb 13:15:03 PST 2019 FRIEND0 falso Siamo in ritardo, mi dispiace! ML Kit suggerisce le risposte all'ultimo messaggio di una cronologia di conversazione. L'ultimo messaggio deve provenire da un utente non locale. Nell'esempio precedente, l'ultimo messaggio della conversazione proviene dall'utente non locale FRIENDS0. L'uso del pass ML Kit per questo log suggerisce risponde al messaggio di FRIENDSO: "In ritardo, scusa!"
2. Ricevere risposte ai messaggi
Per generare risposte rapide a un messaggio, recupera un'istanza di
SmartReplyGenerator
e passa la cronologia della conversazione al suo metodosuggestReplies()
: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 l'operazione riesce, viene passato un oggetto
SmartReplySuggestionResult
il gestore del successo. Questo oggetto contiene un elenco di massimo tre risposte suggerite, che puoi presentare all'utente:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
Tieni presente che ML Kit potrebbe non restituire risultati se il modello non è sicuro la pertinenza delle risposte suggerite, la conversazione di input non rientra in inglese, o se il modello rileva argomenti sensibili.