באמצעות ה-ML Kit אפשר ליצור תשובות קצרות להודעות באמצעות מודל במכשיר.
כדי ליצור תשובות חכמות, עליכם להעביר ל-ML Kit יומן של הודעות אחרונות בשיחה. אם למידת המכונה (ML) מזהה שהשיחה היא באנגלית, ואין לה נושא רגיש, יכול להיות שעד 3 תשובות ייווצרו על ידי המשתמש בעזרת ה-ML Kit.
רוצה לנסות?
- כדאי לשחק עם האפליקציה לדוגמה כדי לראות שימוש לדוגמה ב-API הזה.
לפני שמתחילים
- יש לכלול את ה-pods הבאים ב-ML Kit ב-Podfile:
pod 'GoogleMLKit/SmartReply', '3.2.0'
- אחרי ההתקנה או העדכון של ה-Pods של הפרויקט, פותחים את פרויקט Xcode באמצעות
.xcworkspace
שלו. ערכת ה-ML נתמכת ב-Xcode מגרסה 12.4 ואילך.
1. יצירת אובייקט בהיסטוריית השיחות
כדי ליצור תשובות מהירות, עדיף להעביר למידת מכונה ממערך כרונולוגי של 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];
דוגמה לאובייקט בהיסטוריית השיחות נראית כמו בדוגמה הבאה:
חותמת זמן | מזהה משתמש | isLocalUser | שליחת הודעה |
---|---|---|---|
יום חמישי 21 בפברואר 13:13:39 PST 2019 | נכון | האם את/ה בדרך? | |
יום חמישי 21 בפברואר 13:15:03 PST 2019 | חבר | לא נכון | אגיע באיחור, מצטערים! |
ערכת ML מציעה תשובות להודעה האחרונה בהיסטוריית השיחות. ההודעה האחרונה צריכה להגיע ממשתמש לא מקומי. בדוגמה שלמעלה, ההודעה האחרונה בשיחה היא של משתמש לא מקומי מסוג HELP0. כשמשתמשים בכרטיס היומן לכרטיס ML Kit, אפשר לראות את התשובות להודעה של HELPO: "איחרתי, מצטערים!"
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
יועבר לגורם המטפל בהשלמה. האובייקט מכיל רשימה של עד שלוש הצעות לתשובות, שתוכלו להציג למשתמש:
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 לא יחזיר תוצאות אם המודל לא בטוח בתשובות האפשריות, ששיחת הקלט לא באנגלית או שהמודל מזהה נושא רגיש.