ML Kit יכול ליצור תשובות קצרות להודעות באמצעות מודל שמותקן במכשיר.
כדי ליצור תשובות מהירות, צריך להעביר ל-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. |
זמן האתחול | המודל זמין באופן מיידי. | ייתכן שיהיה צורך להמתין להורדת המודל לפני השימוש הראשון. |
אני רוצה לנסות
- אפשר לנסות את האפליקציה לדוגמה כדי לראות דוגמה לשימוש ב-API הזה.
לפני שמתחילים
בקובץ
build.gradle
ברמת הפרויקט, חשוב לכלול את מאגר Maven של Google בקטע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.3' }
- כדי להשתמש במודל ב-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>
תוכלו גם לבדוק במפורש את זמינות המודל ולבקש הורדה באמצעות ModuleInstallClient API בשירותים של Google Play.
אם לא תפעילו הורדות של המודל בזמן ההתקנה או לא תבקשו הורדה מפורשת, תתבצע הורדה של המודל בפעם הראשונה שתפעילו את מחולל התשובות המהירות. בקשות שתשלחו לפני שההורדה הושלמו לא מניבות תוצאות.
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()));
בכל פעם שהמשתמש מקבל הודעה, כדאי להוסיף את ההודעה, את חותמת הזמן שלה ואת מזהה המשתמש של השולח להיסטוריית השיחות. מזהה המשתמש יכול להיות כל מחרוזת שמזהה באופן ייחודי את השולח בשיחה. מזהה המשתמש לא צריך להתאים לנתוני המשתמשים, ומזהה המשתמש לא חייב להיות עקבי בין השיחות או ההפעלות במחולל התשובות המהירות.
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 PST 2019 true האם אתה בדרך? ה' 21 בפברואר 13:15:03 PST 2019 FRIEND0 false סליחה, איחור! ML Kit מציע תשובות להודעה האחרונה בהיסטוריית השיחות. ההודעה האחרונה צריכה להגיע ממשתמש לא מקומי. בדוגמה שלמעלה, ההודעה האחרונה בשיחה היא מהמשתמש הלא מקומי REVIEW0. כשמשתמשים ב-pass של ML Kit על היומן הזה, המערכת מציעה תשובות להודעה של BYO: 'באיחור, סליחה!'
2. איך אפשר לקבל תשובות להודעות
כדי ליצור תשובות מהירות להודעה, אפשר לקבל מופע של
SmartReplyGenerator
ולהעביר את היסטוריית השיחה ל-methodsuggestReplies()
: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
מועבר ל-handler של ההצלחה. האובייקט מכיל רשימה של עד שלוש הצעות לתשובות, שאפשר להציג למשתמש:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
הערה: יכול להיות שהערכה של ML Kit לא תחזיר תוצאות אם המודל לא בטוח ברלוונטיות של התשובות המוצעות, אם שיחת הקלט לא כתובה באנגלית או אם המודל מזהה נושא רגיש.