צור תגובות חכמות באמצעות ערכת ML ב- iOS

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

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

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

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

    מָהִיר

    import Firebase

    מטרה-ג

    @import Firebase;

1. צור אובייקט היסטוריית שיחות

כדי ליצור תגובות חכמות, אתה עובר ML קיט מערך כרונולוגי-הורה של 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];

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

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

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

מָהִיר

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

מטרה-ג

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

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