יצירת תשובות מהירות באמצעות ML Kit ב-Android

אפשר להשתמש ב-ML Kit כדי ליצור תשובות להודעות במכשיר מודל טרנספורמר.

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

לפני שמתחילים

  1. אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Android.
  2. מוסיפים את יחסי התלות של ספריות ML Kit ל-Android לקובץ 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 אובייקטים, עם חותמת הזמן המוקדמת ביותר.

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

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

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

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

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

חותמת זמן User ID משתמש מקומי? הודעה
יום ה' 21 בפברואר 13:13:39 (שעון החוף המערבי) 2019 true בדרך?
יום ה' 21 בפברואר 13:15:03 (שעון החוף המערבי) 2019 FRIEND0 false סליחה, אאחר.

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

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

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

JavaKotlin
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 הצעות לתשובות, שאפשר להציג למשתמש:

JavaKotlin
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}
for (suggestion in result.suggestions) {
    val replyText = suggestion.text
}

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

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

עדכון אחרון: Feb 28, 2025

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

עדכון אחרון: Feb 28, 2025

Firebase gives you the tools and infrastructure you need to build better mobile and web apps, improve app quality, and grow your business.

עדכון אחרון: Jan 16, 2025