ML Kit może generować krótkie odpowiedzi na wiadomości przy użyciu modelu na urządzeniu.
Aby wygenerować inteligentne odpowiedzi, przekazujesz ML Kitowi log ostatnich wiadomości w rozmowie. Jeśli ML Kit stwierdzi, że rozmowa jest prowadzona w języku angielskim i nie dotyczy potencjalnie wrażliwych tematów, wygeneruje maksymalnie 3 odpowiedzi, które możesz zaproponować użytkownikowi.
Łączenie w pakiety | Nieopakowane | |
---|---|---|
Nazwa biblioteki | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
Implementacja | Model jest statycznie powiązany z aplikacją w momencie kompilacji. | Model jest dynamicznie pobierany za pomocą Usług Google Play. |
Wpływ rozmiaru aplikacji | Rozmiar zwiększył się o około 5,7 MB. | Rozmiar zwiększy się o około 200 KB. |
Czas inicjowania | Model jest dostępny od razu. | Przed pierwszym użyciem może być konieczne poczekanie na pobranie modelu. |
Wypróbuj
- Aby zobaczyć przykład użycia tego interfejsu API, wypróbuj przykładową aplikację.
Zanim zaczniesz
W pliku
build.gradle
na poziomie projektu dodaj repozytorium Maven firmy Google w sekcjachbuildscript
iallprojects
.Dodaj zależności do bibliotek ML Kit na Androida do pliku Gradle modułu na poziomie aplikacji (zwykle
app/build.gradle
). Wybierz jedną z tych zależności:- 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żyć modelu w Usługach Google Play, możesz skonfigurować aplikację tak, aby po jej zainstalowaniu ze Sklepu Play automatycznie pobierała model na urządzenie. Dodaj do pliku
AndroidManifest.xml
aplikacji następującą deklarację:<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ż sprawdzić dostępność modelu i poprosić o pobieranie za pomocą interfejsu ModuleInstallClient API usług Google Play.
Jeśli nie włączysz pobierania modelu w czasie instalacji ani nie poprosisz o pobieranie modelu w wyraźny sposób, model zostanie pobrany przy pierwszym uruchomieniu generatora inteligentnych odpowiedzi. Prośby wysłane przed zakończeniem pobierania nie przynoszą żadnych wyników.
1. Tworzenie obiektu historii rozmów
Aby wygenerować inteligentne odpowiedzi, przekazujesz ML Kit uporządkowany chronologicznie
List
obiektówTextMessage
, zaczynając od obiektu o najstarszej sygnaturze czasowej.Za każdym razem, gdy użytkownik wysyła wiadomość, dodaj ją wraz z sygnaturą czasową do historii rozmów:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
Gdy użytkownik otrzyma wiadomość, dodaj ją wraz z sygnaturą czasową i identyfikatorem użytkownika nadawcy do historii rozmowy. Identyfikator użytkownika może być dowolnym ciągiem znaków, który jednoznacznie identyfikuje nadawcę w rozmowie. Identyfikator użytkownika nie musi odpowiadać żadnym danym użytkownika, a identyfikator użytkownika nie musi być spójny w rozmowie ani w wywołaniach 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 konwersacji wygląda tak:
Sygnatura czasowa userID isLocalUser Wiadomość Czwartek, 21 lutego 2019 r., 13:13:39 czasu PST prawda Jesteś w drodze? Czw., 21 lutego 2019 r., 13:15:03 czasu pacyficznego FRIEND0 fałsz Przepraszam, spóźnię się. ML Kit sugeruje odpowiedzi na ostatnią wiadomość w historii rozmowy. Ostatnia wiadomość powinna pochodzić od użytkownika spoza Twojego regionu. W przykładzie powyżej ostatnia wiadomość w rozmowie pochodzi od użytkownika FRIEND0, który nie znajduje się w Twojej lokalizacji. Gdy użyjesz tego pliku dziennika w ML Kit, zasugeruje on odpowiedzi na wiadomość FRIENDO: „Przepraszam, spóźniam się”.
2. Otrzymywanie odpowiedzi na wiadomości
Aby wygenerować inteligentne odpowiedzi na wiadomość, pobierz instancję
SmartReplyGenerator
i przekaż 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, do metody obsługi sukcesu przekazywany jest obiekt
SmartReplySuggestionResult
. Ten obiekt zawiera listę maksymalnie 3 sugerowanych odpowiedzi, które możesz przedstawić 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 jest pewny trafności sugerowanych odpowiedzi, rozmowa wejściowa nie jest w języku angielskim lub model wykryje tematykę wrażliwą.