สร้างช่วยตอบด้วย ML Kit บน Android

คุณสามารถใช้ ML Kit เพื่อสร้างข้อความตอบกลับโดยใช้ในอุปกรณ์ โมเดล

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

ก่อนเริ่มต้น

  1. หากคุณยังไม่ได้ดำเนินการ เพิ่ม Firebase ลงในโปรเจ็กต์ Android
  2. เพิ่มทรัพยากร 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'
    }
  3. และปิดใช้การบีบอัดในไฟล์ build.gradle ระดับแอปด้วย จาก tflite ไฟล์:
    android {
        // ...
        aaptOptions {
            noCompress "tflite"
        }
    }

1. สร้างออบเจ็กต์ประวัติการสนทนา

หากต้องการสร้างสมาร์ทรีพลาย คุณต้องส่ง List ให้ ML Kit ตามลำดับเวลา จาก FirebaseTextMessage รายการ โดยมีการประทับเวลาแรกสุดก่อน

เมื่อใดก็ตามที่ผู้ใช้ส่งข้อความ ให้เพิ่มข้อความและการประทับเวลาของข้อความลงใน ประวัติการสนทนา:

JavaKotlin
conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()));
conversation.add(FirebaseTextMessage.createForLocalUser(
        "heading out now", System.currentTimeMillis()))

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

JavaKotlin
conversation.add(FirebaseTextMessage.createForRemoteUser(
        "Are you coming back soon?", System.currentTimeMillis(), userId));
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():

JavaKotlin
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 รายการ ซึ่งสามารถนำเสนอแก่ผู้ใช้ได้

JavaKotlin
for (SmartReplySuggestion suggestion : result.getSuggestions()) {
    String replyText = suggestion.getText();
}
for (suggestion in result.suggestions) {
    val replyText = suggestion.text
}

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

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

อัปเดตแล้ว Feb 28, 2025

STAGE uses Firebase and Flutter to cut release time in half

อัปเดตแล้ว Oct 3, 2024

ML Kit for Firebase provided ready-to-use ML solutions for app developers. New apps should use the standalone ML Kit library for on-device ML and Firebase ML for cloud-based ML.

อัปเดตแล้ว Feb 28, 2025