คุณสามารถใช้ ML Kit เพื่อสร้างข้อความตอบกลับโดยใช้ในอุปกรณ์ โมเดล
หากต้องการสร้างสมาร์ทรีพลาย คุณจะต้องส่งบันทึกข้อความล่าสุดใน ML Kit ไปยัง การสนทนา ถ้า ML Kit ระบุว่าการสนทนาเป็นภาษาอังกฤษ การสนทนาไม่มีเรื่องที่อาจมีความละเอียดอ่อน ML Kit จะสร้างคำตอบสูงสุด 3 คำตอบ ซึ่งคุณสามารถแนะนำให้ผู้ใช้ได้
ก่อนเริ่มต้น
- หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Android
- เพิ่มทรัพยากร Dependency สำหรับไลบรารี 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
ให้ ML Kit ตามลำดับเวลา
จาก FirebaseTextMessage
รายการ โดยมีการประทับเวลาแรกสุดก่อน
เมื่อใดก็ตามที่ผู้ใช้ส่งข้อความ ให้เพิ่มข้อความและการประทับเวลาของข้อความลงใน ประวัติการสนทนา:
Java
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()));
Kotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
"heading out now", System.currentTimeMillis()))
เมื่อใดก็ตามที่ผู้ใช้ได้รับข้อความ ให้เพิ่มข้อความ การประทับเวลา และ รหัสผู้ใช้ของผู้ส่งไปยังประวัติการสนทนา User-ID อาจเป็นสตริงใดก็ได้ที่ ระบุผู้ส่งในการสนทนาโดยไม่ซ้ำกัน โดยไม่จําเป็นต้องใช้รหัสผู้ใช้ ให้สอดคล้องกับข้อมูลผู้ใช้ และ User-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))
ออบเจ็กต์ประวัติการสนทนามีลักษณะดังตัวอย่างต่อไปนี้
การประทับเวลา | User 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 อาจไม่แสดงผลลัพธ์หากโมเดลไม่มั่นใจใน ความเกี่ยวข้องของการตอบกลับที่แนะนำ การสนทนาที่เป็นอินพุตไม่ได้อยู่ใน ภาษาอังกฤษ หรือหากโมเดลตรวจพบหัวข้อที่มีความละเอียดอ่อน