אפשר להשתמש ב-ML Kit כדי ליצור תשובות להודעות במכשיר מודל טרנספורמר.
כדי ליצור תשובות מהירות, צריך להעביר ל-ML Kit יומן של ההודעות האחרונות שיחה. אם ערכת ML Kit מזהה שהשיחה היא באנגלית, השיחה לא מכילה נושא שעשוי להיות רגיש, למידת מכונה ייווצרו עד שלוש תשובות. אתם יכולים להציע אותן למשתמש.
לפני שמתחילים
- אם עדיין לא הוספתם את Firebase לאפליקציה, צריך לבצע את הפעולות הבאות במדריך לתחילת העבודה.
- כוללים את ספריות ML Kit ב-Podfile:
אחרי שמתקינים או מעדכנים את קבוצות ה-Pod של הפרויקט, חשוב לפתוח את ה-Xcode באמצעות ה-pod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
.xcworkspace
שלו. - מייבאים את Firebase לאפליקציה:
import Firebase
@import Firebase;
1. יצירת אובייקט של היסטוריית שיחות
כדי ליצור תשובות מהירות, צריך להעביר ל-ML Kit מערך כרונולוגי של
TextMessage
אובייקטים, עם חותמת הזמן המוקדמת ביותר. בכל פעם שהמשתמש שולח או מקבל הודעה, מוסיפים את ההודעה, את חותמת הזמן שלה ואת מזהה המשתמש של השולח להיסטוריית השיחות.
מזהה המשתמש יכול להיות כל מחרוזת שמזהה באופן ייחודי את השולח בתוך השיחה. מזהה המשתמש לא צריך להיות תואם לנתוני משתמש כלשהם, ומזהה המשתמש לא צריך להיות עקבי בין שיחות הפעלות של מחולל התשובות המהירות.
אם ההודעה נשלחה מהמשתמש שרוצים להציע לו תשובות, מגדירים
isLocalUser
עד True.
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)
NSMutableArray *conversation = [NSMutableArray array];
// Then, for each message sent and received:
FIRTextMessage *message = [[FIRTextMessage alloc]
initWithText:@"How are you?"
timestamp:[NSDate date].timeIntervalSince1970
userID:userId
isLocalUser:NO];
[conversation addObject:message];
אובייקט של היסטוריית שיחות נראה כך:
חותמת זמן | User ID | משתמש מקומי? | הודעה |
---|---|---|---|
יום ה' 21 בפברואר 13:13:39 (שעון החוף המערבי) 2019 | true | בדרך? | |
יום ה' 21 בפברואר 13:15:03 (שעון החוף המערבי) 2019 | FRIEND0 | false | סליחה, אאחר. |
שימו לב שההודעה האחרונה בדוגמה שלמעלה היא ממשתמש לא מקומי. הפעולה הזו חשובה כי ערכת ML Kit מציעה תשובות שאמורות להישלח משתמש באפליקציה: משתמש מקומי. עליך לוודא שעברת ML Kit יומן שיחה המסתיים בהודעה שאליה המשתמש שלך עשוי להגיע רוצה להשיב.
2. קבלת תשובות להודעות
כדי ליצור תשובות מהירות להודעה, צריך לקבל מופע של SmartReply
ולהעביר אותה
את היסטוריית השיחות לשיטה suggestReplies(for:completion:)
שלה:
let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.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
// the result doesn't contain any suggestions.
} else if (result.status == .success) {
// Successfully suggested smart replies.
// ...
}
}
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRSmartReply *smartReply = [naturalLanguage smartReply];
[smartReply suggestRepliesForMessages:inputText
completion:^(FIRSmartReplySuggestionResult * _Nullable result,
NSError * _Nullable error) {
if (error || !result) {
return;
}
if (result.status == FIRSmartReplyResultStatusNotSupportedLanguage) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == FIRSmartReplyResultStatusSuccess) {
// Successfully suggested smart replies.
// ...
}
}];
]
אם הפעולה מצליחה, אובייקט SmartReplySuggestionResult
מועבר אל
את ה-handler של ההשלמה. האובייקט הזה מכיל רשימה של עד 3 הצעות לתשובות, שתוכלו להציג למשתמש:
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
NSLog(@"Suggested reply: %@", suggestion.text);
}
שימו לב: ייתכן ש-ML Kit לא יחזיר תוצאות אם המודל לא בטוח הרלוונטיות של ההצעות לתשובות, שיחת הקלט לא באנגלית, או אם המודל מזהה נושא רגיש.