בעזרת ML Kit אפשר ליצור תשובות קצרות להודעות באמצעות מודל שנמצא במכשיר.
כדי ליצור תשובות מהירות, צריך להעביר ל-ML Kit יומן של ההודעות האחרונות שיחה. אם ערכת ML Kit מזהה שהשיחה היא באנגלית, השיחה לא מכילה נושא שעשוי להיות רגיש, למידת מכונה ייווצרו עד שלוש תשובות. אתם יכולים להציע אותן למשתמש.
רוצה לנסות?
- מומלץ לשחק עם האפליקציה לדוגמה כדי .
לפני שמתחילים
- כוללים ב-Podfile את רצפי ה-ML Kit הבאים:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- אחרי שמתקינים או מעדכנים את קבוצות ה-Pod של הפרויקט, פותחים את פרויקט Xcode באמצעות
.xcworkspace
יש תמיכה ב-ML Kit ב-Xcode מגרסה 12.4 ואילך.
1. יצירת אובייקט של היסטוריית שיחות
כדי ליצור תשובות מהירות, צריך להעביר ל-ML Kit מערך כרונולוגי של
TextMessage
אובייקטים, עם חותמת הזמן המוקדמת ביותר. בכל פעם שהמשתמש
שולח או מקבל הודעה, מוסיפים את ההודעה, את חותמת הזמן שלה ואת ההודעה
מזהה המשתמש של השולח בהיסטוריית השיחות.
מזהה המשתמש יכול להיות כל מחרוזת שמזהה באופן ייחודי את השולח בתוך שיחה. מזהה המשתמש לא צריך להיות תואם לנתוני משתמש כלשהם, ומזהה המשתמש לא צריך להיות עקבי בין שיחות הפעלות של מחולל התשובות המהירות.
אם ההודעה נשלחה מהמשתמש שרוצים להציע לו תשובות, מגדירים
isLocalUser
עד True.
Swift
var conversation: [TextMessage] = [] // Then, for each message sent and received: let message = TextMessage( text: "How are you?", timestamp: Date().timeIntervalSince1970, userID: "userId", isLocalUser: false) conversation.append(message)
Objective-C
NSMutableArray *conversation = [NSMutableArray array]; // Then, for each message sent and received: MLKTextMessage *message = [[MLKTextMessage alloc] initWithText:@"How are you?" timestamp:[NSDate date].timeIntervalSince1970 userID:userId isLocalUser:NO]; [conversation addObject:message];
אובייקט של היסטוריית שיחות נראה כמו בדוגמה הבאה:
חותמת זמן | userID | isLocalUser | הודעה |
---|---|---|---|
יום ה' 21 בפברואר 13:13:39 (שעון החוף המערבי) 2019 | true | בדרך? | |
יום ה' 21 בפברואר 13:15:03 (שעון החוף המערבי) 2019 | FRIEND0 | false | איחור, מצטערים! |
ML Kit מציע תשובות להודעה האחרונה בהיסטוריית השיחות. ההודעה האחרונה צריך להיות ממשתמש לא מקומי. בדוגמה שלמעלה, ההודעה האחרונה בשיחה הוא ממשתמש שאינו מקומי LEFT0. כשמשתמשים ביומן הזה להעברת ML Kit, הוא מציע תשובות להודעה של ENDO: "איחור, סליחה!"
2. קבלת תשובות להודעות
כדי ליצור תשובות מהירות להודעה, צריך לקבל מופע של SmartReply
ולהעביר אותה
את היסטוריית השיחות לשיטה suggestReplies(for:completion:)
שלה:
Swift
SmartReply.smartReply().suggestReplies(for: conversation) { result, error in guard error == nil, let result = result else { return } if (result.status == .notSupportedLanguage) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.status == .success) { // Successfully suggested smart replies. // ... } }
Objective-C
MLKSmartReply *smartReply = [MLKSmartReply smartReply]; [smartReply suggestRepliesForMessages:inputText completion:^(MLKSmartReplySuggestionResult * _Nullable result, NSError * _Nullable error) { if (error || !result) { return; } if (result.status == MLKSmartReplyResultStatusNotSupportedLanguage) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.status == MLKSmartReplyResultStatusSuccess) { // Successfully suggested smart replies. // ... } }];
אם הפעולה מצליחה, אובייקט SmartReplySuggestionResult
מועבר אל
את ה-handler של ההשלמה. האובייקט הזה מכיל רשימה של עד שלוש הצעות
תגובות, שאותן אפשר להציג למשתמש:
Swift
for suggestion in result.suggestions { print("Suggested reply: \(suggestion.text)") }
Objective-C
for (MLKSmartReplySuggestion *suggestion in result.suggestions) { NSLog(@"Suggested reply: %@", suggestion.text); }
שימו לב: ייתכן ש-ML Kit לא יחזיר תוצאות אם המודל לא בטוח הרלוונטיות של ההצעות לתשובות, שיחת הקלט לא באנגלית, או אם המודל מזהה נושא רגיש.