Generowanie inteligentnych odpowiedzi za pomocą ML Kit na Androida

ML Kit może generować krótkie odpowiedzi na wiadomości za pomocą modelu na urządzeniu.

Aby wygenerować inteligentne odpowiedzi, przekaż ML Kit dziennik ostatnich wiadomości w rozmowie. Jeśli ML Kit stwierdzi, że rozmowa jest prowadzona w języku angielskim i nie dotyczy potencjalnie drażliwych tematów, ML Kit wygeneruje maksymalnie 3 odpowiedzi, które możesz zaproponować użytkownikowi.

Łączenie w pakietyBiblioteka
Nazwa bibliotekicom.google.mlkit:smart-replycom.google.android.gms:play-services-mlkit-smart-reply
ImplementacjaModel jest statycznie połączony z aplikacją w czasie kompilacji.Model jest pobierany dynamicznie za pomocą Usług Google Play.
Wpływ na rozmiar aplikacjiZwiększenie rozmiaru o około 5,7 MB.Zwiększenie rozmiaru o około 200 KB.
Czas inicjowaniaModel jest dostępny od razu.Przed pierwszym użyciem może być konieczne poczekanie na pobranie modelu.

Wypróbuj

Zanim zaczniesz

  1. W pliku build.gradle na poziomie projektu dodaj repozytorium Google Maven do sekcji buildscript i allprojects.

  2. Dodaj zależności bibliotek ML Kit na Androida do pliku Gradle na poziomie modułu, który zwykle znajduje się w app/build.gradle. Wybierz jedną z tych 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ć aplikację tak, aby automatycznie pobierała model na urządzenie po zainstalowaniu aplikacji ze Sklepu Play. Dodając tę deklarację do pliku 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ż wyraźnie sprawdzić dostępność modelu i poprosić o pobranie za pomocą interfejsu ModuleInstallClient API w Usługach Google Play.

    Jeśli nie włączysz pobierania modelu podczas instalacji ani nie poprosisz o wyraźne pobranie, model zostanie pobrany przy pierwszym uruchomieniu generatora inteligentnych odpowiedzi. Żądania wysyłane przed zakończeniem pobierania nie przyniosą żadnych rezultatów.

    1. Utwórz obiekt historii rozmowy

    Aby wygenerować inteligentne odpowiedzi, przekaż ML Kit uporządkowaną chronologicznie List obiektów TextMessage, z najwcześniejszą sygnaturą czasową na początku.

    Gdy użytkownik wyśle 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()));

    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 w różnych rozmowach lub 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 rozmowy wygląda tak jak w tym przykładzie:

    Sygnatura czasowa userID isLocalUser Wiadomość
    Thu Feb 21 13:13:39 PST 2019 prawda are you on your way?
    Thu Feb 21 13:15:03 PST 2019 FRIEND0 fałsz Running late, sorry!

    ML Kit sugeruje odpowiedzi na ostatnią wiadomość w historii rozmowy. Ostatnia wiadomość powinna pochodzić od użytkownika innego niż lokalny. W powyższym przykładzie ostatnia wiadomość w rozmowie pochodzi od użytkownika innego niż lokalny, czyli FRIEND0. Gdy przekażesz ML Kit ten dziennik, zasugeruje on odpowiedzi na wiadomość FRIENDO: „Running late, sorry!”

    2. Pobierz odpowiedzi na wiadomości

    Aby wygenerować inteligentne odpowiedzi na wiadomość, pobierz instancję SmartReplyGenerator i przekaż historię rozmowy do jej metody 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
                    // ...
                }
            });

    Jeśli operacja się powiedzie, do 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 zwracać wyników, jeśli model nie jest pewny trafności sugerowanych odpowiedzi, rozmowa wejściowa nie jest prowadzona w języku angielskim lub jeśli model wykryje drażliwe tematy.

O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.

Ostatnia aktualizacja: 2026-05-09 UTC.