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

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

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

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

  1. אם לא עשית זאת עדיין, להוסיף Firebase לפרויקט Android שלך .
  2. מוסיפים את התלות עבור ספריות אנדרואיד קיט ML למודול שלך (ברמת האפליקציה) קובץ 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 קיט כרונולוגי-הורה List של FirebaseTextMessage אובייקטים, עם החותמת המוקדמת ראשונה.

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

ג'אווה

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

קוטלין

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

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

ג'אווה

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 חבר 0 שֶׁקֶר איחרתי, סליחה!

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

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

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

ג'אווה

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 תשובות מוצעות, שתוכל להציג בפני המשתמש שלך:

ג'אווה

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

קוטלין

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

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