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