ML Kit może generować krótkie odpowiedzi na wiadomości przy użyciu modelu na urządzeniu.
Aby generować inteligentne odpowiedzi, musisz przekazać ML Kit dziennik ostatnich wiadomości w rozmowy. Jeśli ML Kit ustali, że rozmowa jest po angielsku, rozmowa nie ma potencjalnie poufnej sprawy, ML Kit generuje maksymalnie 3 odpowiedzi, które możesz zasugerować użytkownikowi.
Łączenie w pakiety | Niegrupowane | |
---|---|---|
Nazwa biblioteki | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
Implementacja | Model jest statycznie połączony z aplikacją w momencie kompilacji. | Model jest pobierany dynamicznie przez Usługi Google Play. |
Wpływ rozmiaru aplikacji | Zwiększenie rozmiaru o około 5,7 MB. | Zwiększenie rozmiaru o około 200 KB. |
Czas inicjowania | Model jest dostępny od razu. | Przed jego pierwszym użyciem konieczne może być poczekać na pobranie modelu. |
Wypróbuj
- Wypróbuj przykładową aplikację, aby: zobaczysz przykład użycia tego interfejsu API.
Zanim zaczniesz
W pliku
build.gradle
na poziomie projektu umieść tag Google Repozytorium Maven w sekcjachbuildscript
iallprojects
.Dodaj zależności bibliotek ML Kit na Androida do biblioteki modułu pliku Gradle na poziomie aplikacji, który zwykle ma wartość
app/build.gradle
. Wybierz jedną z opcji: następujące zależności w zależności od potrzeb:- Aby połączyć model z aplikacją:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }
- Aby używać modelu w Usługach Google Play:
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' }
Jeśli zdecydujesz się używać modelu w Usługach Google Play, możesz skonfigurować aplikacja automatycznie pobiera model na urządzenie, ze Sklepu Play. Dodając tę deklarację do plik
AndroidManifest.xml
aplikacji:<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>
Możesz też bezpośrednio sprawdzić dostępność modelu i poprosić o pobranie go Interfejs ModuleInstallClient API Usług Google Play.
Jeśli nie włączysz pobierania modelu w czasie instalacji lub nie poprosisz o pobieranie dla pełnoletnich, model jest pobierany przy pierwszym uruchomieniu generatora inteligentnych odpowiedzi. Żądania wysłane przed ukończeniem pobierania nie dają żadnych wyników.
1. Tworzenie obiektu historii rozmowy
Aby generować inteligentne odpowiedzi, musisz przekazać ML Kit w kolejności chronologicznej
List
zTextMessage
obiektów, z najwcześniejszą sygnaturą czasową.Za każdym razem, gdy użytkownik wysyła wiadomość, dodaj wiadomość i jej sygnaturę czasową do pola historia rozmowy:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
Za każdym razem, gdy użytkownik otrzyma wiadomość, dodaj jej treść, jej sygnaturę czasową identyfikator użytkownika nadawcy. Identyfikatorem użytkownika może być dowolny ciąg, jednoznacznie identyfikuje nadawcę w wątku. Identyfikator użytkownika nie musi: powiązane z danymi użytkownika, a identyfikator użytkownika nie musi być spójny. między rozmową a wywołaniami generatora inteligentnych odpowiedzi.
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));
Obiekt historii rozmowy wygląda jak w tym przykładzie:
Sygnatura czasowa userID isLocalUser Wiadomość Czw. Lut 2019, 13:13:39 PST 2019 prawda jesteś w drodze? Cz 21 lutego 13:15:03 PST 2019 FRIEND0 fałsz Spóźnię się. ML Kit sugeruje odpowiedzi na ostatnią wiadomość w historii rozmów. Ostatnia wiadomość powinien pochodzić od użytkownika nielokalnego. W powyższym przykładzie ostatnia wiadomość w wątku pochodzi od nielokalnego użytkownika FRIEND0. Gdy użyjesz tego dziennika, system ML Kit podpowie odpowiada na wiadomość od użytkownika FRIENDO: „Spóźnię się, przepraszam!”
2. Otrzymuj odpowiedzi na wiadomości
Aby wygenerować inteligentne odpowiedzi na wiadomość, pobierz instancję
SmartReplyGenerator
i przekazać historię rozmowy do metodysuggestReplies()
: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 // ... } }); Jeśli operacja się powiedzie, obiekt
SmartReplySuggestionResult
zostanie przekazany do do obsługi skutecznych rozwiązań. Ten obiekt zawiera listę maksymalnie 3 sugerowanych odpowiedzi. które możesz zaprezentować użytkownikowi:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
Pamiętaj, że ML Kit może nie zwracać wyników, jeśli model nie ma pewności trafność sugerowanych odpowiedzi, rozmówca nie jest angielskim lub jeśli model wykryje wrażliwy obiekt.