สร้างการตอบกลับอัจฉริยะด้วย ML Kit บน 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'
    
    หลังจากที่คุณติดตั้งหรืออัปเดต Pod ของโปรเจ็กต์แล้ว อย่าลืมเปิดโปรเจ็กต์ Xcode โดยใช้ .xcworkspace
  3. ในแอปของคุณ ให้นำเข้า Firebase:

    สวิฟท์

    import Firebase

    วัตถุประสงค์-C

    @import Firebase;

1. สร้างวัตถุประวัติการสนทนา

หากต้องการสร้างการตอบกลับอัจฉริยะ คุณจะต้องส่ง ML Kit ซึ่งเป็นอาร์เรย์ของออบเจ็กต์ TextMessage ที่เรียงลำดับตามลำดับเวลา โดยให้ประทับเวลาเร็วที่สุดก่อน เมื่อใดก็ตามที่ผู้ใช้ส่งหรือรับข้อความ ให้เพิ่มข้อความ การประทับเวลา และ ID ผู้ใช้ของผู้ส่งข้อความลงในประวัติการสนทนา

ID ผู้ใช้อาจเป็นสตริงใดก็ได้ที่ระบุผู้ส่งภายในการสนทนาโดยไม่ซ้ำกัน ID ผู้ใช้ไม่จำเป็นต้องสอดคล้องกับข้อมูลผู้ใช้ใดๆ และ ID ผู้ใช้ไม่จำเป็นต้องสอดคล้องกันระหว่างการสนทนาหรือการเรียกใช้โปรแกรมสร้างการตอบกลับอัจฉริยะ

หากข้อความถูกส่งโดยผู้ใช้ที่คุณต้องการแนะนำให้ตอบกลับ ให้ตั้งค่า 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)

วัตถุประสงค์-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 เพื่อน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.
        // ...
    }
}

วัตถุประสงค์-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)")
}

วัตถุประสงค์-C

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

โปรดทราบว่า ML Kit อาจไม่ส่งคืนผลลัพธ์หากโมเดลไม่มั่นใจในความเกี่ยวข้องของการตอบกลับที่แนะนำ บทสนทนาที่ป้อนไม่ได้เป็นภาษาอังกฤษ หรือหากโมเดลตรวจพบเนื้อหาที่ละเอียดอ่อน