สร้างสมาร์ทรีพลายด้วย ML Kit บน Android

ML Kit สร้างคำตอบสั้นๆ สำหรับข้อความได้โดยใช้โมเดลในอุปกรณ์

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

รวมกลุ่มไม่ได้รวมกลุ่ม
ชื่อคลังcom.google.mlkit:smart-replycom.google.android.gms:play-services-mlkit-smart-reply
การใช้งานโมเดลจะลิงก์กับแอปแบบคงที่ ณ เวลาที่สร้างระบบจะดาวน์โหลดโมเดลแบบไดนามิกผ่านบริการ Google Play
ผลกระทบต่อขนาดแอปเพิ่มขนาดประมาณ 5.7 MBเพิ่มขนาดประมาณ 200 KB
เวลาเริ่มต้นโมเดลพร้อมใช้งานทันทีคุณอาจต้องรอให้โมเดลดาวน์โหลดก่อนใช้งานครั้งแรก

ลองเลย

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

  1. ในไฟล์ build.gradle ระดับโปรเจ็กต์ ให้ตรวจสอบว่าได้ใส่ที่เก็บ Maven ของ Google ไว้ทั้งในส่วน buildscript และ allprojects

  2. เพิ่ม Dependency สำหรับคลัง ML Kit สำหรับ Android ลงในไฟล์ Gradle ระดับแอปของโมดูล ซึ่งมักจะเป็น app/build.gradle เลือก 1 ในข้อกำหนดต่อไปนี้ตามความต้องการของคุณ

    • วิธีรวมโมเดลกับแอป
    dependencies {
      // ...
      // Use this dependency to bundle the model with your app
      implementation 'com.google.mlkit:smart-reply:17.0.4'
    }
    
    • วิธีใช้โมเดลในบริการ Google Play
    dependencies {
      // ...
      // Use this dependency to use the dynamically downloaded model in Google Play Services
      implementation 'com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1'
    }
    

    หากเลือกใช้โมเดลใน Google Play Services คุณจะกำหนดค่าแอปให้ดาวน์โหลดโมเดลลงในอุปกรณ์โดยอัตโนมัติได้หลังจากที่ติดตั้งแอปจาก Play Store แล้ว โดยเพิ่มการประกาศต่อไปนี้ลงในไฟล์ AndroidManifest.xml ของแอป

    <application ...>
          ...
          <meta-data
              android:name="com.google.mlkit.vision.DEPENDENCIES"
              android:value="smart_reply" >
          <!-- To use multiple models: android:value="smart_reply,model2,model3" -->
    </application>
    

    นอกจากนี้ คุณยังตรวจสอบความพร้อมใช้งานของโมเดลและขอดาวน์โหลดได้อย่างชัดเจนผ่าน ModuleInstallClient API ของบริการ Google Play

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

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

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

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

    Kotlin

    conversation.add(TextMessage.createForLocalUser(
            "heading out now", System.currentTimeMillis()))

    Java

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

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

    Kotlin

    conversation.add(TextMessage.createForRemoteUser(
            "Are you coming back soon?", System.currentTimeMillis(), userId))

    Java

    conversation.add(TextMessage.createForRemoteUser(
            "Are you coming back soon?", System.currentTimeMillis(), userId));

    ออบเจ็กต์ประวัติการสนทนามีลักษณะดังตัวอย่างต่อไปนี้

    การประทับเวลา userID isLocalUser ข้อความ
    พฤหัสบดีที่ 21 ก.พ. 13:13:39 น. PST 2019 จริง คุณกำลังเดินทางอยู่ใช่ไหม
    พฤหัสบดีที่ 21 ก.พ. 13:15:03 น. PST 2019 FRIEND0 เท็จ ขออภัยที่ไปสาย

    ML Kit จะแนะนำการตอบกลับข้อความล่าสุดในประวัติการสนทนา ข้อความสุดท้ายควรมาจากผู้ใช้ที่ไม่ใช่ในเครื่อง ในตัวอย่างข้างต้น ข้อความสุดท้ายในการสนทนามาจากผู้ใช้ภายนอก FRIEND0 เมื่อคุณใช้ ML Kit ส่งบันทึกนี้ ระบบจะแนะนำการตอบกลับข้อความของ FRIENDO ว่า "ขออภัยที่ช้าไป"

    2. รับการตอบกลับข้อความ

    หากต้องการสร้างข้อความช่วยตอบสำหรับข้อความ ให้รับอินสแตนซ์ของ SmartReplyGenerator และส่งประวัติการสนทนาไปยังเมธอด suggestReplies() ดังนี้

    Kotlin

    val smartReplyGenerator = SmartReply.getClient()
    smartReply.suggestReplies(conversation)
            .addOnSuccessListener { result ->
                if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                    // The conversation's language isn't supported, so
                    // the result doesn't contain any suggestions.
                } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) {
                    // Task completed successfully
                    // ...
                }
            }
            .addOnFailureListener {
                // Task failed with an exception
                // ...
            }

    Java

    SmartReplyGenerator smartReply = SmartReply.getClient();
    smartReply.suggestReplies(conversation)
            .addOnSuccessListener(new OnSuccessListener() {
                @Override
                public void onSuccess(SmartReplySuggestionResult result) {
                    if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                        // The conversation's language isn't supported, so
                        // 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
                    // ...
                }
            });

    หากการดำเนินการสำเร็จ ระบบจะส่งออบเจ็กต์ SmartReplySuggestionResult ไปยังตัวแฮนเดิลสําเร็จ ออบเจ็กต์นี้มีรายการคำตอบที่แนะนำสูงสุด 3 รายการ ซึ่งคุณสามารถแสดงต่อผู้ใช้ได้

    Kotlin

    for (suggestion in result.suggestions) {
        val replyText = suggestion.text
    }

    Java

    for (SmartReplySuggestion suggestion : result.getSuggestions()) {
        String replyText = suggestion.getText();
    }

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