คุณสามารถใช้ 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 โดยมีการประทับเวลาที่เร็วที่สุดก่อน
เมื่อใดก็ตามที่ผู้ใช้ส่งข้อความ ให้เพิ่มข้อความและการประทับเวลาของข้อความในประวัติการสนทนา:
Java
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
Kotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
เมื่อใดก็ตามที่ผู้ใช้ได้รับข้อความ ให้เพิ่มข้อความ การประทับเวลา และ ID ผู้ใช้ของผู้ส่งในประวัติการสนทนา ID ผู้ใช้สามารถเป็นสตริงใดๆ ที่ระบุผู้ส่งภายในการสนทนาได้โดยไม่ซ้ำกัน ID ผู้ใช้ไม่จำเป็นต้องสอดคล้องกับข้อมูลผู้ใช้ใดๆ และ ID ผู้ใช้ไม่จำเป็นต้องสอดคล้องกันระหว่างการสนทนาหรือการเรียกใช้ตัวสร้างการตอบกลับอัจฉริยะ
Java
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId));
Kotlin
conversation.add(FirebaseTextMessage.createForRemoteUser(
"Are you coming back soon?", System.currentTimeMillis(), userId))
วัตถุประวัติการสนทนาดูเหมือนตัวอย่างต่อไปนี้:
การประทับเวลา | ID ผู้ใช้ | ผู้ใช้ในพื้นที่? | ข้อความ |
---|---|---|---|
พฤ 21 ก.พ. 13:13:39 PST 2019 | จริง | คุณกำลังเดินทาง? | |
พฤ 21 ก.พ. 13:15:03 PST 2019 | เพื่อน0 | เท็จ | มาช้า ขอโทษด้วย! |
โปรดทราบว่าข้อความล่าสุดในตัวอย่างข้างต้นมาจากผู้ใช้ที่ไม่ได้อยู่ในเครื่อง นี่เป็นสิ่งสำคัญเนื่องจาก ML Kit แนะนำการตอบกลับที่ตั้งใจให้ส่งโดยผู้ใช้แอปของคุณ: ผู้ใช้ในเครื่อง คุณควรตรวจสอบให้แน่ใจว่าคุณได้ส่งบันทึกการสนทนาของ ML Kit ที่ลงท้ายด้วยข้อความที่ผู้ใช้ของคุณอาจต้องการตอบกลับ
2. รับข้อความตอบกลับ
ในการสร้างการตอบกลับข้อความอย่างชาญฉลาด ให้รับอินสแตนซ์ของ FirebaseSmartReply
และส่งประวัติการสนทนาไปยัง suggestReplies()
Java
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
// ...
}
});
Kotlin
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 รายการ ซึ่งคุณสามารถนำเสนอต่อผู้ใช้ของคุณ:
Java
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
String replyText = suggestion.getText();
}
Kotlin
for (suggestion in result.suggestions) {
val replyText = suggestion.text
}
โปรดทราบว่า ML Kit อาจไม่ส่งคืนผลลัพธ์หากโมเดลไม่มั่นใจในความเกี่ยวข้องของการตอบกลับที่แนะนำ การสนทนาอินพุตไม่ใช่ภาษาอังกฤษ หรือหากโมเดลตรวจพบเนื้อหาที่ละเอียดอ่อน