«کیت یادگیری ماشین» میتواند بااستفاده از مدل دروندستگاهی، پاسخهای کوتاهی برای پیامها تولید کند.
برای تولید پاسخهای هوشمند، گزارشی از پیامهای اخیر در مکالمه را به ML Kit ارسال میکنید. اگر «کیت یادگیری ماشین» تشخیص دهد که مکالمه به زبان انگلیسی است و مکالمه موضوع بالقوه حساسی ندارد، «کیت یادگیری ماشین» حداکثر سه پاسخ تولید میکند که میتوانید به کاربرتان پیشنهاد دهید.
| موجود در بستهبندی | بستهبندینشده | |
|---|---|---|
| نام کتابخانه | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply |
| پیادهسازی | مدل در زمان ساخت بهصورت ایستا به برنامهتان پیوند میشود. | مدل بهطور پویا ازطریق «خدمات Google Play» بارگیری میشود. |
| تأثیر اندازه برنامه | حدود ۵٫۷ مگابایت افزایش اندازه. | حدود ۲۰۰ کیلوبایت افزایش اندازه. |
| زمان راهاندازی | مدل بلافاصله دردسترس است. | ممکن است لازم باشد قبلاز اولین استفاده، منتظر بمانید تا مدل بارگیری شود. |
امتحان کنید
- با برنامه نمونه کار کنید تا نمونهای از کاربرد این API را ببینید.
قبلاز شروع
در فایل
build.gradleسطح پروژه، حتماً مخزن Maven مربوط به Google را در هر دو بخشbuildscriptوallprojectsاضافه کنید.وابستگیهای کتابخانههای Android «کیت یادگیری ماشین» را به فایل 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»، مدل را بهطور خودکار در دستگاه بارگیری کند. با افزودن بیانیه زیر به فایل
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 درخواست بارگیری کنید.
اگر بارگیری مدل در زمان نصب را فعال نکنید یا درخواست بارگیری صریح نکنید، مدل اولین باری که تولیدکننده پاسخ هوشمند را اجرا میکنید بارگیری میشود. درخواستهایی که قبلاز تکمیل بارگیری انجام میدهید، نتیجهای ندارند.
۱. ایجاد شیء سابقه مکالمه
برای تولید پاسخهای هوشمند، یک
Listمرتبشده براساس زمان از اشیاءTextMessageرا به ML Kit ارسال میکنید، بهطوریکه قدیمیترین مُهر زمان در ابتدا قرار میگیرد.هرگاه کاربر پیامی ارسال میکند، پیام و مُهر زمان آن را به سابقه مکالمه اضافه کنید:
Kotlin
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()))
جاوا
conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis()));
هرگاه کاربر پیامی دریافت کرد، پیام، مُهر زمان آن، و شناسه کاربر فرستنده را به سابقه مکالمه اضافه کنید. شناسه کاربر میتواند هر رشتهای باشد که فرستنده را بهطور منحصربهفرد در مکالمه شناسایی کند. شناسه کاربر لازم نیست با هیچکدام از دادههای کاربر مطابقت داشته باشد و شناسه کاربر لازم نیست بین مکالمه یا فراخوانیهای تولیدکننده پاسخ هوشمند یکسان باشد.
Kotlin
conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId))
جاوا
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 نادرست دیرم شده است، ببخشید! «کیت یادگیری ماشین» پاسخهایی را برای آخرین پیام در سابقه مکالمه پیشنهاد میدهد. آخرین پیام باید ازطرف کاربری غیرمحلی باشد. در مثال بالا، آخرین پیام در مکالمه از کاربر غیرمحلی FRIEND0 است. When you use pass ML Kit this log, it suggests replies to FRIENDO's message: "Running late, sorry!"
۲. دریافت پاسخ پیامها
برای تولید پاسخهای هوشمند به پیام، نمونهای از
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 // ... }
جاوا
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به گرداننده موفقیت ارسال میشود. این شیء حاوی فهرستی از حداکثر سه پاسخ پیشنهادی است که میتوانید به کاربرتان ارائه دهید:Kotlin
for (suggestion in result.suggestions) { val replyText = suggestion.text }
جاوا
for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); }
توجه داشته باشید که اگر مدل به میزان کافی از مرتبط بودن پاسخهای پیشنهادی مطمئن نباشد، مکالمه ورودی به زبان انگلیسی نباشد، یا مدل موضوع حساسی را شناسایی کند، ممکن است ML Kit نتایجی را برنگرداند.