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