צור תשובות חכמות עם ערכת ML ב-iOS

אתה יכול להשתמש ב-ML Kit כדי ליצור תשובות להודעות באמצעות דגם במכשיר.

כדי ליצור תשובות חכמות, אתה מעביר ל-ML Kit יומן של הודעות אחרונות בשיחה. אם ML Kit קובע שהשיחה היא באנגלית, ושהשיחה אינה מכילה נושא שעלול להיות רגיש, ML Kit מייצרת עד שלוש תשובות, אותן תוכל להציע למשתמש שלך.

לפני שאתה מתחיל

  1. אם עדיין לא הוספת את Firebase לאפליקציה שלך, עשה זאת על ידי ביצוע השלבים במדריך לתחילת העבודה .
  2. כלול את ספריות ML Kit ב-Podfile שלך:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    לאחר שתתקין או תעדכן את ה-Pods של הפרויקט שלך, הקפד לפתוח את פרויקט Xcode שלך ​​באמצעות .xcworkspace שלו.
  3. באפליקציה שלך, ייבא את Firebase:

    מָהִיר

    import Firebase

    Objective-C

    @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)

Objective-C

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];

אובייקט היסטוריית שיחה נראה כמו הדוגמה הבאה:

חותמת זמן זהות המשתמש משתמש מקומי? הוֹדָעָה
יום ה' 21 בפברואר 13:13:39 PST 2019 נָכוֹן אתה בדרך?
יום ה' 21 בפברואר 13:15:03 PST 2019 FRIEND0 שֶׁקֶר באיחור, סליחה!

שימו לב שההודעה העדכנית ביותר בדוגמה למעלה היא ממשתמש לא מקומי. זה חשוב מכיוון ש-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.
        // ...
    }
}

Objective-C

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 מועבר למטפל ההשלמה. אובייקט זה מכיל רשימה של עד 3 הצעות לתשובות, אותן תוכל להציג למשתמש שלך:

מָהִיר

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

Objective-C

for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

שים לב שייתכן ש-ML Kit לא יחזיר תוצאות אם המודל אינו בטוח ברלוונטיות של התשובות המוצעות, שיחת הקלט אינה באנגלית, או אם המודל מזהה נושא רגיש.