ML Kit สามารถสร้างข้อความตอบกลับสั้นๆ โดยใช้โมเดลในอุปกรณ์
หากต้องการสร้างสมาร์ทรีพลาย คุณจะต้องส่งบันทึกข้อความล่าสุดใน ML Kit ไปยัง การสนทนา ถ้า ML Kit ระบุว่าการสนทนาเป็นภาษาอังกฤษ การสนทนาไม่มีเรื่องที่อาจมีความละเอียดอ่อน ML Kit จะสร้างคำตอบสูงสุด 3 คำตอบ ซึ่งคุณสามารถแนะนำให้ผู้ใช้ได้
ลองเลย
- ลองใช้แอปตัวอย่างเพื่อ ดูตัวอย่างการใช้ API นี้
ก่อนเริ่มต้น
- ใส่พ็อด ML Kit ต่อไปนี้ใน Podfile
pod 'GoogleMLKit/SmartReply', '3.2.0'
- หลังจากที่คุณติดตั้งหรืออัปเดตพ็อดของโปรเจ็กต์แล้ว ให้เปิดโปรเจ็กต์ Xcode โดยใช้
.xcworkspace
ทั้งนี้ ML Kit รองรับ Xcode เวอร์ชัน 12.4 ขึ้นไป
1. สร้างออบเจ็กต์ประวัติการสนทนา
หากต้องการสร้างสมาร์ทรีพลาย คุณต้องส่งอาร์เรย์ ML Kit ตามลำดับเวลา
ออบเจ็กต์ TextMessage
รายการ โดยมีการประทับเวลาแรกสุดก่อน เมื่อใดก็ตามที่ผู้ใช้
ส่งหรือรับข้อความ เพิ่มข้อความ การประทับเวลา และข้อความ
รหัสผู้ใช้ของผู้ส่งไปยังประวัติการสนทนา
User ID อาจเป็นสตริงใดๆ ที่ระบุผู้ส่งโดยไม่ซ้ำกันภายใน การสนทนา User-ID ไม่จำเป็นต้องสอดคล้องกับข้อมูลผู้ใช้ และรหัสผู้ใช้ไม่จำเป็นต้องสอดคล้องกันระหว่างการสนทนา หรือ คำขอของโปรแกรมสร้างสมาร์ทรีพลาย
หากผู้ใช้ที่คุณต้องการแนะนำการตอบกลับเป็นผู้ส่งข้อความ ให้ตั้งค่า
isLocalUser
เป็นจริง
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];
ออบเจ็กต์ประวัติการสนทนามีลักษณะดังตัวอย่างต่อไปนี้
การประทับเวลา | userID | isLocalUser | ข้อความ |
---|---|---|---|
พฤ. 21 ก.พ. 13:13:39 PST 2019 | จริง | คุณกำลังเดินทางหรือเปล่า | |
พฤ. 21 ก.พ. 13:15:03 น. PST 2019 | เพื่อน0 | เท็จ | ขออภัยในความไม่สะดวก |
ML Kit แนะนำการตอบกลับข้อความสุดท้ายในประวัติการสนทนา ข้อความสุดท้าย ควรมาจากผู้ใช้ที่ไม่ได้อยู่ในท้องถิ่น ในตัวอย่างข้างต้น ข้อความสุดท้ายในการสนทนา มาจาก FRIEND0 ที่ไม่ใช่ผู้ใช้ท้องถิ่น เมื่อใช้บันทึก ML Kit นี้จะแนะนำ ตอบกลับข้อความของ FRIENDO: "ไปสายแล้ว ขอโทษนะ"
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
ไปยัง
ตัวแฮนเดิลการเสร็จสมบูรณ์ ออบเจ็กต์นี้มีรายการที่แนะนำไม่เกิน 3 รายการ
ซึ่งสามารถนำเสนอแก่ผู้ใช้ได้ ดังนี้
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 อาจไม่แสดงผลลัพธ์หากโมเดลไม่มั่นใจใน ความเกี่ยวข้องของการตอบกลับที่แนะนำ การสนทนาที่เป็นอินพุตไม่ได้อยู่ใน ภาษาอังกฤษ หรือหากโมเดลตรวจพบหัวข้อที่มีความละเอียดอ่อน