בעזרת ML Kit אפשר ליצור תשובות קצרות להודעות באמצעות מודל שנמצא במכשיר.
כדי ליצור תשובות מהירות, צריך להעביר ל-ML Kit יומן של ההודעות האחרונות שיחה. אם ערכת ML Kit מזהה שהשיחה היא באנגלית, השיחה לא מכילה נושא שעשוי להיות רגיש, למידת מכונה יוצרים עד שלוש תשובות, ואתם יכולים להציע אותן למשתמש.
בחבילה | לא חלק מהחבילה | |
---|---|---|
שם הספרייה | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
הטמעה | המודל מקושר באופן סטטי לאפליקציה בזמן ה-build. | הורדת המודל מתבצעת באופן דינמי דרך Google Play Services. |
ההשפעה של גודל האפליקציה | הגדלה של כ-5.7MB. | הגדלה של כ-200KB. |
זמן האתחול | המודל זמין באופן מיידי. | יכול להיות שתצטרכו להמתין להורדת המודל לפני השימוש הראשון. |
רוצה לנסות?
- מומלץ לשחק עם האפליקציה לדוגמה כדי .
לפני שמתחילים
בקובץ
build.gradle
ברמת הפרויקט, חשוב לכלול את במאגר Maven בקטעbuildscript
וגם בקטעallprojects
.הוספת יחסי התלות של ספריות ML Kit Android למודול של המודול ברמת האפליקציה, שהוא בדרך כלל
app/build.gradle
. יש לבחור אחד מ- בהתאם לצרכים שלכם:- כדי לצרף את המודל לאפליקציה:
dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }
- כדי להשתמש במודל ב-Google Play Services:
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' }
אם בוחרים להשתמש במודל ב-Google Play Services, אפשר להגדיר האפליקציה תוריד את המודל באופן אוטומטי למכשיר אחרי שהאפליקציה ישירות מחנות Play. על ידי הוספת ההצהרה הבאה אל קובץ
AndroidManifest.xml
של האפליקציה:<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>
אפשר גם לבדוק באופן מפורש את זמינות המודל ולבקש הורדה דרך API של ModuleInstallClient ב-Google Play Services.
אם לא תפעילו הורדות של מודלים בזמן ההתקנה או תבקשו הורדה מפורשת, מתבצעת הורדה של המודל בפעם הראשונה שמפעילים את מחולל התשובות המהירות. בקשות שמבוצעות לפני סיום ההורדה לא מובילות לתוצאות.
1. יצירת אובייקט של היסטוריית שיחות
כדי ליצור תשובות מהירות, צריך להעביר ל-ML Kit
List
בסדר כרונולוגי מתוךTextMessage
אובייקטים, עם חותמת הזמן המוקדמת ביותר.בכל פעם שהמשתמש שולח הודעה, הוסף את ההודעה ואת חותמת הזמן שלה אל היסטוריית שיחות:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
בכל פעם שהמשתמש מקבל הודעה, הוסיפו את ההודעה, את חותמת הזמן שלה ואת מזהה המשתמש של השולח בהיסטוריית השיחות. User ID יכול להיות כל מחרוזת מזהה באופן ייחודי את השולח בשיחה. לא צריך את User ID בהתאם לנתוני המשתמש, ומזהה המשתמש לא חייב להיות עקבי בין שיחה לבין הפעלה של מחולל התשובות המהירות.
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));
אובייקט של היסטוריית שיחות נראה כמו בדוגמה הבאה:
חותמת זמן userID isLocalUser הודעה יום ה' 21 בפברואר 13:13:39 (שעון החוף המערבי) 2019 true בדרך? יום ה' 21 בפברואר 13:15:03 (שעון החוף המערבי) 2019 FRIEND0 false איחור, מצטערים! ML Kit מציע תשובות להודעה האחרונה בהיסטוריית השיחות. ההודעה האחרונה צריך להיות ממשתמש לא מקומי. בדוגמה שלמעלה, ההודעה האחרונה בשיחה הוא ממשתמש שאינו מקומי TABLE0. כשמשתמשים ביומן הזה להעברת ML Kit, הוא מציע תשובות להודעה של GAMEO: "איחור, סליחה!"
2. קבלת תשובות להודעות
כדי ליצור תשובות מהירות להודעות, צריך להוריד מופע של
SmartReplyGenerator
ומעבירים את היסטוריית השיחות לשיטה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 // ... } }); אם הפעולה מצליחה, אובייקט
SmartReplySuggestionResult
מועבר אל הגורם המטפל להצלחה. האובייקט הזה מכיל רשימה של עד שלוש הצעות לתשובות, שאפשר להציג למשתמש:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
שימו לב: ייתכן ש-ML Kit לא יחזיר תוצאות אם המודל לא בטוח הרלוונטיות של ההצעות לתשובות, שיחת הקלט לא באנגלית, או אם המודל מזהה נושא רגיש.