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