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

    • วิธีรวมโมเดลไว้ในแอป
    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 คุณสามารถกำหนดค่าแอปให้ดาวน์โหลดโมเดลลงในอุปกรณ์โดยอัตโนมัติหลังจากติดตั้งแอปจาก 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()));

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

    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 ข้อความ
    Thu Feb 21 13:13:39 PST 2019 จริง คุณกำลังเดินทางอยู่ใช่ไหม
    Thu Feb 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 อาจไม่แสดงผลลัพธ์หากโมเดลไม่มั่นใจในความเกี่ยวข้องของการตอบกลับที่แนะนำ การสนทนาที่ป้อนไม่ใช่ภาษาอังกฤษ หรือหากโมเดลตรวจพบเรื่องที่ละเอียดอ่อน