คุณสามารถใช้ ML Kit เพื่อสร้างการตอบกลับข้อความโดยใช้รุ่นในอุปกรณ์ได้
หากต้องการสร้างการตอบกลับอัจฉริยะ คุณต้องส่งบันทึกข้อความล่าสุดในการสนทนาให้กับ ML Kit หาก ML Kit พิจารณาว่าการสนทนาเป็นภาษาอังกฤษ และการสนทนานั้นไม่มีหัวข้อที่อาจละเอียดอ่อน ML Kit จะสร้างการตอบกลับสูงสุดสามครั้ง ซึ่งคุณสามารถแนะนำให้ผู้ใช้ของคุณได้
ก่อนที่คุณจะเริ่ม
- หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ
- เพิ่มการพึ่งพาสำหรับไลบรารี ML Kit Android ให้กับไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ
app/build.gradle
):apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { // ... implementation 'com.google.firebase:firebase-ml-natural-language:22.0.0' implementation 'com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7' }
- นอกจากนี้ในไฟล์
build.gradle
ระดับแอปของคุณ ให้ปิดการบีบอัดไฟล์tflite
:android { // ... aaptOptions { noCompress "tflite" } }
1. สร้างวัตถุประวัติการสนทนา
ในการสร้างการตอบกลับอัจฉริยะ คุณจะต้องส่ง List
ออบเจ็กต์ FirebaseTextMessage
ที่เรียงลำดับตามลำดับเวลาของ ML Kit โดยให้ประทับเวลาแรกสุดก่อน
เมื่อใดก็ตามที่ผู้ใช้ส่งข้อความ ให้เพิ่มข้อความและการประทับเวลาลงในประวัติการสนทนา:
ชวา
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
คอตลิน
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
เมื่อใดก็ตามที่ผู้ใช้ได้รับข้อความ ให้เพิ่มข้อความ การประทับเวลา และ ID ผู้ใช้ของผู้ส่งลงในประวัติการสนทนา ID ผู้ใช้อาจเป็นสตริงใดก็ได้ที่ระบุผู้ส่งภายในการสนทนาโดยไม่ซ้ำกัน ID ผู้ใช้ไม่จำเป็นต้องสอดคล้องกับข้อมูลผู้ใช้ใดๆ และ ID ผู้ใช้ไม่จำเป็นต้องสอดคล้องกันระหว่างการสนทนาหรือการเรียกใช้โปรแกรมสร้างการตอบกลับอัจฉริยะ
ชวา
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
คอตลิน
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
วัตถุประวัติการสนทนามีลักษณะเหมือนตัวอย่างต่อไปนี้:
การประทับเวลา | รหัสผู้ใช้ | ผู้ใช้ท้องถิ่น? | ข้อความ |
---|---|---|---|
พฤ. 21 ก.พ. 13:13:39 PST 2019 | จริง | คุณกำลังไปหรือเปล่า? | |
พฤ. 21 ก.พ. 13:15:03 PST 2019 | เพื่อน0 | เท็จ | ลงช้า ขออภัย! |
โปรดทราบว่าข้อความล่าสุดในตัวอย่างข้างต้นมาจากผู้ใช้ที่ไม่ได้อยู่ในเครื่อง นี่เป็นสิ่งสำคัญเนื่องจาก ML Kit แนะนำการตอบกลับที่ตั้งใจจะส่งโดยผู้ใช้แอปของคุณ ซึ่งก็คือผู้ใช้ในเครื่อง คุณควรแน่ใจว่าคุณได้ส่งบันทึกการสนทนาของ ML Kit ที่ลงท้ายด้วยข้อความที่ผู้ใช้ของคุณอาจต้องการตอบกลับ
2. รับการตอบกลับข้อความ
หากต้องการสร้างการตอบกลับข้อความอย่างชาญฉลาด ให้รับอินสแตนซ์ของ FirebaseSmartReply
และส่งประวัติการสนทนาไปยังเมธอด suggestReplies()
ชวา
FirebaseSmartReply smartReply = FirebaseNaturalLanguage.getInstance().getSmartReply();
smartReply.suggestReplies(conversation)
.addOnSuccessListener(new OnSuccessListener<SmartReplySuggestionResult>() {
@Override
public void onSuccess(SmartReplySuggestionResult result) {
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
// ...
}
});
คอตลิน
val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
.addOnSuccessListener { result ->
if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
// Task completed successfully
// ...
}
}
.addOnFailureListener {
// Task failed with an exception
// ...
}
หากการดำเนินการสำเร็จ ออบเจ็กต์ SmartReplySuggestionResult
จะถูกส่งไปยังตัวจัดการความสำเร็จ ออบเจ็กต์นี้ประกอบด้วยรายการคำตอบที่แนะนำสูงสุด 3 รายการ ซึ่งคุณสามารถนำเสนอต่อผู้ใช้ของคุณได้:
ชวา
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
คอตลิน
for (suggestion in result.suggestions) {
val replyText = suggestion.text
}
โปรดทราบว่า ML Kit อาจไม่ส่งคืนผลลัพธ์หากโมเดลไม่มั่นใจในความเกี่ยวข้องของการตอบกลับที่แนะนำ บทสนทนาที่ป้อนไม่ได้เป็นภาษาอังกฤษ หรือหากโมเดลตรวจพบเนื้อหาที่ละเอียดอ่อน