ML Kit میتواند بااستفاده از مدل دروندستگاهی، پاسخهای کوتاهی برای پیامها تولید کند.
برای تولید پاسخهای هوشمند، گزارشی از پیامهای اخیر در مکالمه را به ML Kit میدهید. اگر ML Kit تشخیص دهد که مکالمه به زبان انگلیسی است و مکالمه موضوع حساس بالقوه ندارد، 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اضافه کنید.وابستگیهای کتابخانههای ML Kit 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>همچنین میتوانید دردسترس بودن مدل را بهطور صریح بررسی کنید و ازطریق خدمات Google Play ModuleInstallClient API درخواست بارگیری کنید.
اگر بارگیری مدل در زمان نصب را فعال نکنید یا درخواست بارگیری صریح نکنید، مدل اولین باری که تولیدکننده پاسخ هوشمند را اجرا میکنید بارگیری میشود. درخواستهایی که قبلاز تکمیل بارگیری انجام میدهید نتیجهای نخواهند داشت.
۱. ایجاد شیء سابقه مکالمه
برای تولید پاسخهای هوشمند،
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 نادرست دیرم شده است، ببخشید! ML Kit پاسخهایی را برای آخرین پیام در سابقه مکالمه پیشنهاد میدهد. آخرین پیام باید ازسوی کاربری غیرمحلی باشد. در مثال بالا، آخرین پیام در مکالمه از کاربر غیرمحلی FRIEND0 است. وقتی از این گزارش ML Kit مجوز استفاده میکنید، پاسخهایی برای پیام FRIENDO پیشنهاد میدهد: «دیر میرسم، ببخشید!»
۲. دریافت پاسخ پیام
برای تولید پاسخهای هوشمند به پیام، نمونهای از
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 نتایجی برنگرداند.