สร้างสมาร์ทรีพลายด้วย 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 เลือกทรัพยากร 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>
    

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

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

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