ML Kit สร้างข้อความตอบกลับสั้นๆ โดยใช้โมเดลในอุปกรณ์ได้
หากต้องการสร้างฟีเจอร์ช่วยตอบ คุณจะต้องส่งบันทึกข้อความล่าสุดในการสนทนาให้กับ ML Kit หาก ML Kit ระบุว่าการสนทนาเป็นภาษาอังกฤษและการสนทนานั้นไม่มีเรื่องที่มีความละเอียดอ่อน ML Kit จะสร้างการตอบกลับสูงสุด 3 รายการซึ่งคุณแนะนำให้ผู้ใช้ได้
รวมกลุ่ม | ไม่ได้จัดกลุ่ม | |
---|---|---|
ชื่อไลบรารี | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
การใช้งาน | โมเดลจะลิงก์แบบคงที่กับแอปของคุณ ณ เวลาบิลด์ | ระบบจะดาวน์โหลดโมเดลแบบไดนามิกผ่านบริการ Google Play |
ผลกระทบของขนาดแอป | ขนาดเพิ่มขึ้นประมาณ 5.7 MB | เพิ่มขนาดได้ประมาณ 200 KB |
เวลาเริ่มต้น | โมเดลจะพร้อมใช้งานทันที | อาจต้องรอดาวน์โหลดโมเดลก่อนใช้งานครั้งแรก |
ลองเลย
- ลองใช้แอปตัวอย่างเพื่อดูตัวอย่างการใช้งาน API นี้
ก่อนเริ่มต้น
ในไฟล์
build.gradle
ระดับโปรเจ็กต์ ให้ตรวจสอบว่ามีที่เก็บ Maven ของ Google ไว้ในส่วนbuildscript
และallprojects
เพิ่มทรัพยากร 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.3' }
- วิธีใช้โมเดลในบริการ 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
รายการตามลำดับเวลา โดยส่งการประทับเวลาเร็วที่สุดก่อนเมื่อใดก็ตามที่ผู้ใช้ส่งข้อความ ให้เพิ่มข้อความและการประทับเวลาของข้อความนั้นลงในประวัติการสนทนา โดยทำดังนี้
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
Java
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
เมื่อใดก็ตามที่ผู้ใช้ได้รับข้อความ ให้เพิ่มข้อความ การประทับเวลา และรหัสผู้ใช้ของผู้ส่งในประวัติการสนทนา รหัสผู้ใช้อาจเป็นสตริงใดก็ได้ ที่ระบุผู้ส่งอย่างชัดเจนภายในการสนทนา User ID ไม่จำเป็นต้องสอดคล้องกับข้อมูลผู้ใช้ และ 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 false ขออภัยในความไม่สะดวกที่เกิดขึ้นล่าช้า 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 อาจไม่แสดงผลลัพธ์หากโมเดลไม่มั่นใจในความเกี่ยวข้องของคำตอบที่แนะนำ บทสนทนาในการป้อนข้อมูลไม่เป็นภาษาอังกฤษ หรือหากโมเดลตรวจพบเนื้อหาที่ละเอียดอ่อน