צור תשובות חכמות עם ערכת ML באנדרואיד

אתה יכול להשתמש ב-ML Kit כדי ליצור תשובות להודעות באמצעות דגם במכשיר.

כדי ליצור תשובות חכמות, אתה מעביר ל-ML Kit יומן של הודעות אחרונות בשיחה. אם ML Kit קובע שהשיחה היא באנגלית, ושהשיחה אינה מכילה נושא שעלול להיות רגיש, ML Kit מייצרת עד שלוש תשובות, אותן תוכל להציע למשתמש שלך.

לפני שאתה מתחיל

  1. אם עדיין לא עשית זאת, הוסף את Firebase לפרויקט Android שלך .
  2. הוסף את התלות של ספריות אנדרואיד של ML Kit לקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל app/build.gradle ):
    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
      // ...
      implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0'
      implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7'
    }
    
  3. גם בקובץ build.gradle ברמת האפליקציה, השבת את הדחיסה של קבצי tflite :
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }
    

1. צור אובייקט היסטוריית שיחה

כדי ליצור תשובות חכמות, אתה מעביר ל-ML Kit List מסודרת כרונולוגית של אובייקטי FirebaseTextMessage , עם חותמת הזמן המוקדמת ביותר תחילה.

בכל פעם שהמשתמש שולח הודעה, הוסף את ההודעה וחותמת הזמן שלה להיסטוריית השיחה:

Java

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()));

קוטלין

conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()))

בכל פעם שהמשתמש מקבל הודעה, הוסף את ההודעה, חותמת הזמן שלה ואת מזהה המשתמש של השולח להיסטוריית השיחה. מזהה המשתמש יכול להיות כל מחרוזת המזהה באופן ייחודי את השולח בתוך השיחה. מזהה המשתמש אינו צריך להתאים לשום נתוני משתמש, ומזהה המשתמש אינו צריך להיות עקבי בין שיחה או קריאות של מחולל התשובות החכמות.

Java

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId));

קוטלין

conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId))

אובייקט היסטוריית שיחה נראה כמו הדוגמה הבאה:

חותמת זמן זהות המשתמש משתמש מקומי? הוֹדָעָה
יום ה' 21 בפברואר 13:13:39 PST 2019 נָכוֹן אתה בדרך?
יום ה' 21 בפברואר 13:15:03 PST 2019 FRIEND0 שֶׁקֶר באיחור, סליחה!

שימו לב שההודעה העדכנית ביותר בדוגמה למעלה היא ממשתמש לא מקומי. זה חשוב מכיוון ש-ML Kit מציעה תשובות שנועדו להישלח על ידי המשתמש של האפליקציה שלך: המשתמש המקומי. אתה צריך להיות בטוח שאתה מעביר ל-ML Kit יומן שיחות שמסתיים בהודעה שאולי המשתמש שלך ירצה להשיב לה.

2. קבל תשובות להודעה

כדי ליצור תשובות חכמות להודעה, קבל מופע של FirebaseSmartReply והעביר את היסטוריית השיחה לשיטת suggestReplies() שלה:

Java

FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
        .addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
            @Override
            public void onSuccess(SmartReplySuggestionResult result) {
                if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                    // The conversation's language isn't supported, so the
                    // 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
                // ...
            }
        });

קוטלין

val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
        .addOnSuccessListener { result ->
            if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                // The conversation's language isn't supported, so the
                // the result doesn't contain any suggestions.
            } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
                // Task completed successfully
                // ...
            }
        }
        .addOnFailureListener {
            // Task failed with an exception
            // ...
        }

אם הפעולה מצליחה, אובייקט SmartReplySuggestionResult מועבר למטפל בהצלחה. אובייקט זה מכיל רשימה של עד 3 הצעות לתשובות, אותן תוכל להציג למשתמש שלך:

Java

for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}

קוטלין

for (suggestion in result.suggestions) {
    val replyText = suggestion.text
}

שים לב שייתכן ש-ML Kit לא יחזיר תוצאות אם המודל אינו בטוח ברלוונטיות של התשובות המוצעות, שיחת הקלט אינה באנגלית, או אם המודל מזהה נושא רגיש.