Zestaw ML Kit może generować krótkie odpowiedzi na wiadomości przy użyciu modelu na urządzeniu.
Aby wygenerować inteligentne odpowiedzi, przekazujesz do ML Kit dziennik ostatnich wiadomości w rozmowie. Jeśli ML Kit ustali, że rozmowa jest prowadzona w języku angielskim i nie dotyczy potencjalnie drażliwych tematów, wygeneruje maksymalnie 3 odpowiedzi, które możesz zasugerować użytkownikowi.
| Łączenie w pakiety | Odłączone | |
|---|---|---|
| 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 czasie kompilacji. | Model jest pobierany dynamicznie przez Usługi Google Play. |
| Wpływ rozmiaru aplikacji | Rozmiar wzrośnie o około 5,7 MB. | Rozmiar wzrasta o około 200 KB. |
| Czas inicjowania | Model jest dostępny od razu. | Przed pierwszym użyciem może być konieczne pobranie modelu. |
Wypróbuj
- Wypróbuj przykładową aplikację, aby zobaczyć, jak można używać tego interfejsu API.
Zanim zaczniesz
W pliku
build.gradlena poziomie projektu dodaj repozytorium Google Maven w sekcjachbuildscriptiallprojects.Dodaj zależności dla bibliotek ML Kit na Androida do pliku gradle na poziomie aplikacji modułu, który zwykle ma nazwę
app/build.gradle. Wybierz jedną z tych zależności w zależności od potrzeb:- Aby dołączyć model do aplikacji:
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ć aplikację tak, aby automatycznie pobierała model na urządzenie po zainstalowaniu aplikacji ze Sklepu Play. Dodając tę deklarację do pliku
AndroidManifest.xmlaplikacji:<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 za pomocą interfejsu ModuleInstallClient API usług Google Play.
Jeśli nie włączysz pobierania modelu podczas instalacji ani nie poprosisz o pobranie, model zostanie pobrany przy pierwszym uruchomieniu generatora inteligentnych odpowiedzi. Żądania wysłane przed zakończeniem pobierania nie przyniosą żadnych wyników.
1. Tworzenie obiektu historii rozmów
Aby wygenerować inteligentne odpowiedzi, przekazujesz do ML Kit chronologicznie uporządkowany obiekt
ListobiektówTextMessage, z najwcześniejszą sygnaturą czasową na początku.Za każdym razem, gdy użytkownik wysyła wiadomość, dodaj ją i jej sygnaturę czasową do historii 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 ją, jej sygnaturę czasową i identyfikator 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 ani być spójny między rozmowami lub 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 rozmów wygląda tak:
Sygnatura czasowa userID isLocalUser Wiadomość Thu Feb 21 13:13:39 PST 2019 prawda czy jesteś w drodze? Thu Feb 21 13:15:03 PST 2019 FRIEND0 fałsz Spóźnię się, przepraszam! Zestaw ML Kit sugeruje odpowiedzi na ostatnią wiadomość w historii rozmowy. Ostatnia wiadomość powinna pochodzić od użytkownika spoza lokalnej domeny. W przykładzie powyżej ostatnia wiadomość w rozmowie pochodzi od użytkownika spoza domeny lokalnej (FRIEND0). Gdy przekażesz ten dziennik do ML Kit, zasugeruje on odpowiedzi na wiadomość od ZNAJOMEGO: „Spóźnię się, przepraszam!”.
2. Otrzymywanie odpowiedzi na wiadomości
Aby wygenerować inteligentne odpowiedzi na wiadomość, pobierz instancję
SmartReplyGeneratori 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 modułu obsługi sukcesu zostanie przekazany obiekt
SmartReplySuggestionResult. Ten obiekt zawiera listę maksymalnie 3 sugerowanych odpowiedzi, które możesz wyświetlić 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 zwrócić wyników, jeśli model nie jest pewien trafności sugerowanych odpowiedzi, rozmowa wejściowa nie jest w języku angielskim lub model wykryje drażliwy temat.