پوشش هدف را افزایش دهید و خطاها را با ظرافت با بازگشت مولد مدیریت کنید

1. بررسی اجمالی

آخرین به روز رسانی: 07-08-2023

چیزی که خواهی ساخت

در این آزمایشگاه کد، یک عامل مجازی ساده را در Dialogflow CX ایجاد، مستقر و پیکربندی خواهید کرد تا به غواصان مسافرتی با رزرو گروهی و چارترهای خصوصی کمک کند. عامل مجازی از هوش مصنوعی Generative و آخرین مدل‌های زبان بزرگ (LLM) گوگل برای تولید پاسخ‌های عامل مجازی استفاده خواهد کرد.

چیزی که یاد خواهید گرفت

  • نحوه فعال کردن API های مربوطه
  • چگونه Dialogflow به طور خودکار مقادیر پارامترهای فرم صفحه را از پارامترهای intent پر می کند
  • نحوه پیکربندی کنترل کننده رویداد در Dialogflow
  • نحوه فعال کردن برگشت مولد در کنترل کننده های رویداد بدون تطابق مورد استفاده در جریان ها و در طول پر کردن پارامترها
  • نحوه پیکربندی پیام متنی خود برای رسیدگی به موقعیت‌های مکالمه اصلی و همچنین عامل
  • نحوه نوشتن توضیحات هدف و پارامترهای خوب برای تولید کنترل کننده های reprompt برای پارامترهای مورد نیاز (علاوه بر بازپرداخت های تعریف شده توسط کاربر)
  • چگونه نماینده خود را آزمایش کنید و سوالات مشتری را شبیه سازی کنید که باعث بازگشت مجدد می شود

آنچه شما نیاز دارید

  • یک پروژه Google Cloud
  • مرورگری مانند کروم

2. راه اندازی

قبل از اینکه بتوانید از ویژگی بازگشتی مولد در Dialogflow CX استفاده کنید، باید Dialogflow API را فعال کنید.

Dialogflow API را با استفاده از Cloud Console فعال کنید

  1. کنسول Google Cloud را در مرورگر خود باز کنید.
  2. در کنسول Google Cloud، برای مرور APIها و سرویس‌هایی که می‌توان فعال کرد، به کتابخانه API بروید.
  3. با استفاده از نوار جستجو در بالای صفحه کتابخانه API، Dialogflow API را جستجو کنید، سپس روی سرویس به دست آمده کلیک کنید.
  4. روی دکمه Enable کلیک کنید تا Dialogflow API در پروژه Google Cloud شما فعال شود.

استفاده از gcloud CLI (جایگزین)

از طرف دیگر، API را می توان با استفاده از دستور gcloud زیر فعال کرد:

gcloud services enable dialogflow.googleapis.com

اگر API با موفقیت فعال شد، باید پیامی شبیه به زیر مشاهده کنید:

Operation "operations/..." finished successfully.

کد را دریافت کنید

شما عامل مجازی را از ابتدا ایجاد نخواهید کرد، ما عاملی را در اختیار شما قرار می دهیم که باید آن را از کنسول Dialogflow CX بازیابی کنید و سپس آن را بهبود بخشید.

برای دانلود سورس کد:

  1. یک برگه مرورگر جدید باز کنید، به مخزن عامل بروید و آن را از یک خط فرمان کلون کنید.
  2. عامل اولیه به عنوان یک بسته JSON صادر شده است. فایل را از حالت فشرده خارج کنید، تنظیمات عامل را بررسی کنید، نگاهی به تعریف جریان Liveaboards.json بیندازید و در نهایت صفحات جریان، اهداف و موجودیت ها را مرور کنید.

3. یک عامل جدید ایجاد کنید

کنسول Dialogflow را باز کنید

شما از کنسول Dialogflow CX به همراه پروژه Google Cloud خود برای انجام مراحل باقی مانده در این کد لبه استفاده خواهید کرد.

  1. در مرورگر خود، به کنسول Dialogflow CX بروید.
  2. پروژه Google Cloud را که می خواهید استفاده کنید انتخاب کنید یا پروژه جدیدی برای استفاده ایجاد کنید.
  3. شما باید لیستی از عوامل را در کنسول Dialogflow CX ببینید.

اگر این اولین باری است که از Dialogflow CX استفاده می کنید، برای اطلاعات بیشتر در مورد پیکربندی پروژه و تنظیمات بسته به نیاز خود به Dialogflow CX Documentation مراجعه کنید.

یک عامل جدید Dialogflow CX ایجاد کنید

  1. برای بازیابی عامل دانلود شده از مخزن GitHub، باید یک عامل جدید ایجاد کنید. از کنسول Dialogflow CX، روی Create new agent در گوشه سمت راست بالای صفحه کلیک کنید.

Create a brand new agent

  1. گزینه Build your own agent را انتخاب کنید.

Choose the option

  1. فرم را با تنظیمات عامل زیر تکمیل کنید و برای ایجاد عامل بر روی Create کلیک کنید.
  • به عنوان نام نمایشی انتخاب کنید: Divebooker
  • به عنوان مکان انتخاب کنید: us-central1
  • منطقه زمانی مورد نظر خود را انتخاب کنید
  • en - English به عنوان زبان پیش فرض انتخاب کنید
  1. Dialogflow به طور خودکار عامل را برای شما باز می کند. ما هنوز تمام نشده ایم!

عامل Divebooker را بازیابی کنید

  1. به صفحه فهرست عوامل بازگردید، عاملی را که به تازگی ایجاد کرده اید شناسایی کنید. روی گزینه کلیک کنید 78d2781c655810e7.png و سپس روی دکمه Restore کلیک کنید.
  2. گزینه Upload را انتخاب کنید و سپس فایل ZIP را که قبلاً از مخزن GitHub دانلود کرده اید رها یا انتخاب کنید.
  3. برای وارد کردن عاملی که ارائه کرده ایم، روی دکمه Restore کلیک کنید

Click the Restore button to import the agent we have provided

آفرین! شما در حال ساخت عامل مجازی رزرو غواصی خود هستید که آماده کمک به مشتریان شما است. در بخش بعدی، آن را آزمایش خواهید کرد و خواهید دید که چقدر در پاسخ به سوالات کاربران و کمک به درخواست های رزرو خوب است.

4. عامل را تست کنید

Dialogflow یک شبیه ساز داخلی برای چت کردن با عوامل شما و کشف اشکالات ارائه می دهد. برای هر نوبت، می‌توانید مقادیر صحیح را برای قصد راه‌اندازی، پاسخ عامل، صفحه فعال و پارامترهای جلسه بررسی کنید.

ما چند سناریو را آزمایش خواهیم کرد و برای هر سناریو به دلیل اینکه عامل پاسخ خاصی می دهد نگاه می کنیم. بیایید با اولی شروع کنیم.

نیت حل نشده

  1. در کنسول Dialogflow و از داخل نماینده خود، روی Test Agent کلیک کنید تا شبیه ساز باز شود.

Click Test Agent to open the Simulator

  1. یک تبریک به نماینده خود مانند Hello تایپ کنید و بپرسید what is a liveaboard? . سوال با هیچ هدفی مطابقت ندارد، یک اعلان عمومی مانند "متاسفم نمی دانم چگونه کمک کنم" نمایش داده می شود. می‌توانید بررسی کنید که رویداد داخلی sys.no-match-default با بررسی پاسخ اصلی در Simulator فراخوانی شده است.

Greet the agent and ask what a liveabord is

تقریباً تا انتهای پاسخ JSON به پایین بروید. توجه داشته باشید که هنگام جستجوی یک هدف منطبق، Dialogflow متوجه می شود که این یک NO_MATCH است و یک رویداد بدون تطابق را افزایش می دهد.

Check that sys.no-match-default event was raised by Dialogflow

  1. به تب Build بروید و صفحه شروع جریان Liveaboards را باز کنید.

Switch to the Build tab and open the Start Page of the Liveaboards flow.

به‌طور پیش‌فرض، هر جریانی دارای کنترل‌کننده‌های رویداد برای رویدادهای داخلی بدون تطابق و بدون ورودی است. این کنترل کننده های رویداد به طور خودکار هنگام ایجاد یک جریان ایجاد می شوند و نمی توان آنها را حذف کرد.

  1. روی کنترل کننده رویداد sys.no-match-default کلیک کنید و به قسمت پاسخ های عامل به پایین بروید. Dialogflow فهرستی از پاسخ‌های جایگزین را ارائه می‌کند، اما می‌توانید انواع مختلفی از پیام‌های پاسخ را نیز تعریف کنید تا به کاربر نهایی چیزی بیش از پاسخ‌های متنی ارائه کنید.

Look at the pre-defined agent responses

بیایید اکنون به سمت مسیر شاد حرکت کنیم!

مسیر مبارک

در این مورد دوم، وانمود کنید که غواصی هستید که می‌خواهد یک سفر دریایی غواصی برای یک گروه 12 نفره به جزایر گالاپاگوس سال آینده در ماه جولای رزرو کند.

  1. در پنل Simulator روی نماد Reset کلیک کنید تا مکالمه جدیدی با نماینده شروع شود.

Reset to start a new conversation

Consider changing to vertical view for a better UX

  1. به نماینده بگویید که می خواهید یک چارتر به جزایر گالاپاگوس رزرو کنید و جزئیات سفر خود را ارائه دهید. نیازی نیست دقیقاً از همان دستورات زیر استفاده کنید، آزمایش کنید!

Test the happy path

  1. صفحه شروع را باز کنید و روی head.send.group.request route کلیک کنید. به قسمت Transition بروید که به Dialogflow می‌گوید وقتی این intent مطابقت دارد، صفحه تغییر کند.

Transition to Collect Further Info page

  1. تعریف مسیر را ببندید و صفحه جمع آوری اطلاعات بیشتر را گسترش دهید. به تکمیل ورودی و لیست پارامترها توجه کنید.

Collect Further Info page

برای هر صفحه در Dialogflow CX می توانید یک فرم تعریف کنید، که لیستی از پارامترهایی است که باید از کاربر نهایی برای صفحه جمع آوری شود. توجه داشته باشید که نماینده مقصد سفر را نپرسید زیرا ما آن را به عنوان بخشی از ورودی اولیه ارسال کردیم و مقصد نیز یک پارامتر قصد است. هنگامی که یک صفحه در ابتدا فعال می شود و در طول دوره فعال آن، هر پارامتر فرم با همان نام پارامتر intent به طور خودکار روی مقدار پارامتر جلسه تنظیم می شود و درخواست مربوطه نادیده می گیرد.

  1. به تب Manage بروید و روی head.send group request request در قسمت Intents کلیک کنید. به عبارات آموزشی ارائه شده برای این منظور و قسمت های مشروح عبارات آموزشی نگاه کنید.

Look at the training phrases provided for this intent and the annotated parts of the training phrases.

  1. عبارت آموزشی "من باید سفری به کاستاریکا برای 15 غواص ترتیب دهم" را در نظر بگیرید. "کاستاریکا" با مقصد و "15" با تعداد مهمان حاشیه نویسی شده است. وقتی بخش‌هایی از یک عبارت آموزشی را حاشیه‌نویسی می‌کنید، Dialogflow تشخیص می‌دهد که این بخش‌ها فقط نمونه‌هایی از مقادیر واقعی هستند که توسط کاربران نهایی در زمان اجرا ارائه می‌شوند. به همین دلیل است که برای ورودی اولیه "آیا به جزایر گالاپاگوس منشور ارائه می دهید؟" Dialogflow پارامتر مقصد را از "جزایر گالاپاگوس" استخراج کرد.

در مرحله بعد به بررسی خواهیم کرد که اگر زمانی که از یک پارامتر فرم خواسته شود یک ورودی معتبر به عامل ارائه ندهیم چه اتفاقی می افتد.

ورودی نامعتبر است

  1. در پنل Simulator روی نماد Reset کلیک کنید تا مکالمه جدیدی با نماینده شروع شود.
  2. قصد خود را برای رزرو گروهی ابراز کنید، این بار به نماینده نگویید کجا می خواهید بروید و زمانی که از شما برای پاسخ مقصدی با مقدار تصادفی که کاستاریکا، گالاپاگوس یا مکزیک نیست، پاسخ دهید.

Enter an invalid destination

  1. در تب Manage روی Entity Types در قسمت Resources کلیک کنید. به دو تب توجه کنید: در زیر تب System می‌توانید موجودیت‌های سیستمی را که در حال حاضر توسط نماینده شما استفاده می‌شود، پیدا کنید. برگه Custom لیستی از موجودیت های سفارشی ایجاد شده برای تطبیق داده های خاص این عامل را ارائه می دهد.

Destination custom entity

  1. روی موجودیت مقصد کلیک کنید تا متوجه شوید که موجودیت با چه مقادیری مطابقت دارد. "اروپا" یکی از مدخل ها نیست و مترادف هم نیست.
  2. در نمودار جریان، صفحه جمع آوری اطلاعات بیشتر را که حاوی پارامترهای فرم است، گسترش دهید. روی پارامتر مقصد کلیک کنید.
  3. در پانل پارامتر به پایین به بخش Reprompt event handlers بروید، سپس روی No-match handler event default کلیک کنید.

این کنترل کننده رویداد در سطح پارامتر به طور خاص برای رسیدگی به ورودی نامعتبر کاربر نهایی در طول پر کردن فرم در نظر گرفته شده است. از آنجا که "Europe" یک ورودی غیرمنتظره است، یک رویداد sys.no-match-default فراخوانی شد و کنترل کننده reprompt مربوطه که برای این رویداد تعریف شده بود فراخوانی شد. بخش Agent می گوید دو پیام درخواست مجدد جایگزین را فهرست می کند.

Static alternative re-prompt messages when the end-user enters an invalid destination.

کار عالی! این موارد تست سناریوهای رایجی را نشان می‌دهند که انتظار می‌رود عامل به درستی از عهده آن برآید. اغلب کاربران سوالاتی را می پرسند که ربات ها قادر به پاسخگویی به آنها نیستند یا درخواست هایی را مطرح می کنند که ربات ها قادر به انجام آن نیستند. طراحی برای دم بلند بسیار پیچیده است، یعنی مسیرهای فرسوده ای که اکثر کاربران دنبال می کنند. به همه چیزهایی که ممکن است در یک مکالمه اشتباه رخ دهد و همه مسیرهای غیرمنتظره یا پشتیبانی نشده ای که کاربران ممکن است طی کنند فکر کنید.

پیشرفت در تشخیص خودکار گفتار (ASR) به این معنی است که ما تقریباً همیشه دقیقاً می دانیم که کاربران چه گفته اند. با این حال، تعیین منظور کاربران هنوز یک چالش است. جملات را اغلب نمی توان به تنهایی درک کرد. آنها را فقط می توان در زمینه درک کرد. در بخش بعدی این نرم‌افزار، بررسی خواهیم کرد که چگونه جدیدترین مدل‌های زبان بزرگ (LLM) گوگل می‌توانند به بازگرداندن دیالوگ به مسیر اصلی و پیشبرد مکالمه کمک کنند.

5. جایگزینی مولد را فعال کنید

ویژگی بازگشتی مولد چیست؟

ویژگی بازگشتی مولد یک ویژگی Dialogflow CX است که از مدل‌های زبان بزرگ Google (LLM) برای تولید پاسخ‌های عامل مجازی استفاده می‌کند.

چگونه کمک می کند؟

در بین موارد استفاده کلیدی، تعدادی درخواست تا حدودی رایج کاربر وجود دارد، مانند تکرار آنچه که نماینده گفته است در صورتی که کاربر متوجه نشود، نگه داشتن خط زمانی که کاربر درخواست می کند و خلاصه کردن مکالمه. در اولین آزمایشی که انجام دادیم، نماینده نتوانست به سوال "لایو برد چیست؟" پاسخ دهد. زیرا ما هدفی برای آن ایجاد نکرده‌ایم و جریانی را برای رسیدگی به انواع سؤالات عمومی مربوط به غواصی و لایو برد طراحی کرده‌ایم.

حتی با اهداف قوی، هنوز جای خطا وجود دارد. کاربران ممکن است با سکوت (خطای بدون ورودی) یا گفتن چیزی غیرمنتظره (یک خطای عدم تطابق) از اسکریپت خارج شوند. در حالی که جلوگیری از وقوع خطاها بهتر از رسیدگی به خطاها پس از وقوع آنها است، نمی توان از خطاها به طور کامل اجتناب کرد. اعلان‌های عمومی مانند «متاسفم نمی‌دانم چگونه کمک کنم» یا راه‌حل‌های مشابه حداقلی اغلب به اندازه کافی خوب نیستند. درخواست‌های خطا باید از اصل تعاون الهام گرفته شود که بر اساس آن، ارتباطات کارآمد بر این فرض تکیه می‌کند که جریانی پنهان از همکاری بین شرکت‌کنندگان در گفتگو وجود دارد.

در بخش بعدی به نحوه پیکربندی ویژگی بازگشتی مولد برای افزایش پوشش هدف و ساده کردن رسیدگی به خطا برای تجربه بهتر مشتری خواهیم پرداخت.

بازگردانی مولد را برای رویداد بدون تطابق کل جریان فعال کنید

می‌توانید بازگردانی مولد را در کنترل‌کننده‌های رویداد بدون تطابق که در جریان‌ها، صفحات یا در طول پر کردن پارامتر استفاده می‌شوند، فعال کنید. هنگامی که بازگشت مولد برای یک رویداد بدون تطابق فعال است، هر زمان که آن رویداد راه‌اندازی شود، Dialogflow تلاش می‌کند تا یک پاسخ تولید شده را تولید کند که به کاربر گفته شود. اگر تولید پاسخ ناموفق باشد، به جای آن، پاسخ عامل تجویز شده معمولی صادر خواهد شد.

می‌توانید بازگردانی مجدد را در عامل خود در کنترل‌کننده‌های رویداد بدون تطابق فعال کنید، که می‌تواند در انجام جریان، صفحه یا پارامتر استفاده شود.

ما شروع به فعال کردن بازگشت تولیدی برای کل رویداد پیش‌فرض جریان Liveaboards می‌کنیم.

  1. صفحه شروع جریان را گسترش دهید.
  2. روی sys.no-match-default زیر Event handlers کلیک کنید.
  3. تیک Enable Generative fallback را در زیر Agent Respons ها بزنید، سپس روی Save کلیک کنید

Check Enable generative fallback under Agent responses

Save to enable generative fallback on the Liveaboards Start Page

بازگردانی مولد را در رویدادهای خاص بدون تطابق فعال کنید

اکنون می‌خواهیم پس‌انداز تولیدی را فعال کنیم تا وقتی نماینده تعداد مسافران را درخواست می‌کند، ورودی‌های نامعتبر را مدیریت کند:

  1. صفحه جمع آوری اطلاعات بیشتر را که حاوی پارامترهای فرم است باز کنید. روی پارامتر تعداد مهمانان کلیک کنید.
  2. به کنترل کننده رویداد هدف No-match بروید (به پایین به بخش Reprompt event handlers بروید، سپس روی کنترل کننده رویداد پیش فرض No-match کلیک کنید)

Navigate to the target No-match event handler (scroll down to the Reprompt event handlers section, then click the No-match default event handler)

  1. تیک Enable Generative Backback را در زیر Agent Responses بزنید

Enable generative fallback on parameter number-of-guest

  1. در نهایت روی Save کلیک کنید
  2. اکنون مراحل دقیق را برای فعال کردن بازگشت مجدد برای مقصد و آدرس ایمیل تکرار کنید

کار عالی! شما برای مدیریت مقاصد غیرمنتظره و مقادیر پارامتر نامعتبر، بک آپ تولیدی را فعال کرده اید. در مرحله بعد، نحوه پیکربندی ویژگی بازگشتی مولد را با یک اعلان متنی که به LLM دستور می دهد چگونه پاسخ دهد، خواهیم دید.

6. بازگردانی مولد را پیکربندی کنید

ویژگی بازگشتی مولد یک درخواست را به یک مدل زبان بزرگ ارسال می کند تا پاسخ تولید شده را تولید کند. درخواست به شکل یک پیام متنی است که ترکیبی از زبان طبیعی و اطلاعات مربوط به وضعیت فعلی نماینده و مکالمه است. این ویژگی را می توان به روش های مختلفی پیکربندی کرد:

  1. یک اعلان خاص (از قبل تعریف شده) را انتخاب کنید تا برای تولید پاسخ استفاده شود.
  2. یک درخواست سفارشی تعریف کنید.

یک درخواست از قبل تعریف شده را انتخاب کنید

  1. در کنسول Dialogflow CX روی تنظیمات عامل کلیک کنید

Go to Agent Settings

  1. به برگه ML و سپس زیر تب Generative AI بروید.

Generative AI sub-tab

این ویژگی با دو فرمان الگو از جعبه بیرون می‌آید، الگوی پیش‌فرض (که قابل مشاهده نیست) و الگوی مثالی که شما را راهنمایی می‌کند تا درخواست‌های خود را بنویسید.

  1. الگوی Example را انتخاب کنید و روی دکمه Edit در سمت راست منوی بازشو کلیک کنید تا آن را بررسی کنید.

Click the Edit button on the right side of the template dropdown to inspect it.

با اعلان از پیش تعریف شده، عامل مجازی می تواند موقعیت های اصلی مکالمه را مدیریت کند. به عنوان مثال:

  • سلام و خداحافظی با کاربر.
  • در صورتی که کاربر متوجه نشد آنچه را که عامل گفته است تکرار کنید.
  • وقتی کاربر درخواست کرد خط را نگه دارید.
  • گفتگو را خلاصه کنید.

بیایید سعی کنیم یک متن خاص برای عامل Divebooker تعریف کنیم!

7. درخواست خود را تعریف کنید

  1. دستور زیر را کپی کرده و در قسمت Text prompt پیست کنید
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:
  1. ذخیره به عنوان یک الگوی جدید را برای ذخیره درخواست جدید به عنوان یک الگوی جدید انتخاب کنید (نام قالب جدید را انتخاب کنید) و ذخیره را در گوشه پایین سمت راست پانل انتخاب کنید.

Create a custom text prompt specific for the agent and save as a new template

  1. برای اینکه در واقع درخواست تازه ایجاد شده را به دستور فعال تبدیل کنید، باید تنظیمات را نیز ذخیره کنید .

Save the new settings

هنگام نوشتن پیام متنی خود، واضح، مختصر و تجویزی باشید. نحوه ایجاد اعلان به LLM می تواند تا حد زیادی بر کیفیت پاسخ LLM تأثیر بگذارد. LLM ها برای پیروی از دستورالعمل ها آموزش دیده اند، و بنابراین هرچه درخواست شما بیشتر شبیه دستورالعمل دقیق باشد، احتمالاً نتایج بهتری خواهید گرفت. بر اساس نتایجی که به دست می آورید، یک اعلان بسازید، سپس برای بهبود آن تکرار کنید.

برای ایجاد دستورات موثر، بهترین شیوه های زیر را دنبال کنید:

  1. شرح واضح و مختصری از وظیفه ای که می خواهید LLM انجام دهد ارائه دهید. نه بیشتر نه کمتر. آن را کامل و کوتاه نگه دارید.
  2. علاوه بر این، درخواست باید خاص و به خوبی تعریف شده باشد و از زبان مبهم یا مبهم اجتناب شود.
  3. وظایف پیچیده را به قطعات کوچکتر و قابل کنترل تر تقسیم کنید. با تقسیم کار به مراحل کوچکتر، می توانید به مدل کمک کنید تا روی یک چیز در یک زمان تمرکز کند و احتمال خطا یا سردرگمی را کاهش دهید.
  4. برای بهبود کیفیت پاسخ، نمونه هایی را در درخواست خود اضافه کنید. LLM از مثال‌هایی که در مورد نحوه پاسخگویی به آن‌ها وجود دارد، در متن یاد می‌گیرد.

هنگام ایجاد یک اعلان، علاوه بر توصیف زبان طبیعی در مورد اینکه چه نوع زمینه ای باید ایجاد شود، از متغیرهای زیر نیز می توان استفاده کرد:

  • $conversation مکالمه بین عامل و کاربر، به استثنای آخرین اظهارات کاربر. می‌توانید پیشوندهای نوبت (به عنوان مثال: "Human"، "AI" یا "You"، "Agent") را در اعلان متن تطبیق دهید.
  • $last-user-utterance آخرین گفته کاربر.
  • $flow-description شرح جریان جریان فعال.
  • $route-descriptions توضیحات هدف مقاصد فعال.

اکنون که یک اعلان متن اولیه داریم، وظیفه بعدی این است که اطمینان حاصل کنیم که جریان و اهداف دارای توضیحات خوبی هستند.

8. توضیحات جریان و هدف را اضافه کنید

شرح جریان را اضافه کنید

  1. برای افزودن توضیحات به جریان Liveaboards ، با نگه داشتن ماوس خود بر روی جریان در بخش جریان ، به تنظیمات جریان دسترسی پیدا کنید.

Access the flow settings by hovering your mouse over the flow in the Flows section.

  1. روی گزینه ها کلیک کنید 78d2781c655810e7.png دکمه
  2. تنظیمات جریان را انتخاب کنید و شرح زیر (یا مشابه) را اضافه کنید: search, find and book liveaboards .

Add a description to the Liveaboards flow

  1. روی ذخیره کلیک کنید

توضیحات هدف را اضافه کنید

  1. حال بیایید یک توضیح خوب به هدف head.send.group.request اضافه کنیم. به تب Manage بروید، Intents را در قسمت Resources انتخاب کنید و head.send.group.request intent را انتخاب کنید.
  2. توضیحات زیر را اضافه کنید: assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands

توجه داشته باشید که توضیحات حاوی اطلاعات مهمی مانند حداقل و حداکثر تعداد مسافران مجاز در یک قایق است. این را در نظر داشته باشید!

  1. روی ذخیره کلیک کنید

و شما تمام شده اید! شما بازگشتی مولد را در کنترل‌کننده‌های رویداد بدون تطابق برای انجام جریان و پارامتر فعال کرده‌اید. شما همچنین پیام متنی خود را تعریف کرده‌اید که ویژگی بازگشتی مولد به یک مدل زبان بزرگ برای تولید پاسخ‌های مولد منتقل می‌شود.

در بخش بعدی، نماینده خود را مجدداً آزمایش خواهید کرد تا ببینید چگونه می‌تواند به سؤالات چالش برانگیز قبلی پاسخ دهد.

9. نماینده خود را مجدداً آزمایش کنید

اکنون که بازگردانی مجدد مولد را در عامل مجازی پیکربندی و فعال کرده اید، می توانید سوالات چالش برانگیز مشابهی را بپرسید و ببینید که چگونه پاسخ ها را مدیریت می کند.

روی Test Agent کلیک کنید تا شبیه ساز دوباره باز شود.

Test agent again

دوباره از نماینده در مورد لایو برد و غواصی لایو برد بپرسید. از این به بعد توجه داشته باشید که چگونه هر دیالوگ دارای پیام هایی تعریف شده توسط کاربر و همچنین پاسخ های تولید شده در کادرهای قرمز رنگ است.

Retest the agent and ask again what is a liveaboard

آیا به جای یک درخواست عمومی، پاسخ آموزنده خوبی دریافت کردید؟ عالیه پس از ارائه یک توضیح واضح و مختصر از وظایفی که می‌خواهید نماینده انجام دهد (در متن اعلان و در توضیحات جریان)، ربات شما اکنون در پاسخ به سؤالات دقیق بدون ایجاد اهداف خاص بسیار هوشمندتر است. مشتری شما قدردانی می کند که نماینده می تواند به جای پاسخ غیرقابل عمل به آنها پاسخ آگاهانه تری بدهد.

خجالتی نباشید و نماینده را به چالش بکشید، بپرسید که آیا می تواند به شما کمک کند دوره غواصی را پیدا کنید زیرا هنوز یک غواص گواهینامه ندارید.

 Ask the agent if it can help you find a scuba diving course

درست است، در حال حاضر ما نماینده ای را برای کمک به دوره های غواصی طراحی نکرده ایم. نماینده از کجا می داند؟ در اعلان متن ما به وضوح مشخص کرده ایم که عامل می تواند و چه چیزی نمی تواند کمک کند. " در حال حاضر شما نمی توانید در زمینه غواصی و دوره های آموزشی زمینی به مشتریان کمک کنید. نمی توانید فروشگاه های محلی غواصی و استراحتگاه های غواصی را توصیه کنید."

اکنون سناریوی شاد را دوباره آزمایش کنید و گفتگو را غنی کنید. بیایید ببینیم که چگونه تجربه تغییر کرده است.

Retest the happy scenario and be creative in the dialogue

Retest the happy scenario and be creative in the dialogue

هنگامی که Dialogflow با یک intent مطابقت دارد یا سعی می کند پارامتری را طبق طراحی جریان جمع آوری کند، تحقق های تعریف شده در زمان طراحی را نمایش می دهد. هنگامی که کاربر از اسکریپت خارج می شود و خلاصه ای از جزئیات سفر را درخواست می کند یا ارائه شماره تلفن خود را پیشنهاد می کند، ویژگی بازگشتی مولد وارد عمل می شود.

خوب! شما سناریوی شاد را مجدداً آزمایش کردید و امیدوارم که گفتگوی دلپذیر و طبیعی با نماینده تا حد امکان نزدیک به تجربه ای که با یک نماینده زنده دارید داشته باشید.

متأسفانه، ممکن است همه چیز در یک مکالمه اشتباه پیش برود. بیایید یک آزمایش متفاوت انجام دهیم، این بار وقتی تعداد مهمانان از شما پرسیده می شود، عددی بزرگتر از 15 را بگویید.

Provide a number of guests greater than 15

Provide a number of guests greater than 15

در اینجا باید به چند نکته اشاره کرد:

  1. چرا 20 عدد معتبری نیست؟ زیرا ما محدودیتی برای تعداد مهمانان مجاز به عنوان بخشی از توضیحات هدف تعیین کرده‌ایم: " نماینده اطلاعاتی مانند مدت زمان حرکت، مقصد، تعداد مهمان‌ها را جمع‌آوری می‌کند (حداقل 4 حداکثر 15 نفر)**** ، اطلاعات تماس*" . پاسخ تولیدی که LLM داده است «متأسفیم، ما فقط می‌توانیم با رزرو گروهی حداکثر 15 مهمان کمک کنیم» کاملاً با محدودیت‌هایی که در مورد تعداد مهمانان داده‌ایم مطابقت دارد. برای اعمال بیشتر این موضوع، تعداد مهمان ها یک موجودیت سفارشی RegExp است که فقط با اعداد موجود در محدوده 4 تا 15 مطابقت دارد.
  2. گفتگو ادامه دارد زیرا در نهایت کاربر همچنان مشتاق است پیشنهادی برای 15 غواص دریافت کند. این اغلب در طول مکالمات طبیعی اتفاق می افتد، ما اغلب نظر خود را تغییر می دهیم! توجه کنید که عامل چگونه همکاری می کند و به آرامی کاربر را به سمت مسیر موفقیت آمیز هدایت می کند.

طراحی مکالمه شامل نوشتن اسکریپت یک نیمه از یک دیالوگ است، به این امید که آنقدر قوی باشد که هر کسی بتواند وارد عمل شود و نیمه دیگر را اجرا کند. هنگام طراحی برای دم بلند، توسعه‌دهندگان باید روی آنچه کاربر می‌تواند در هر مرحله از گفتگوی شما بگوید تمرکز کنند تا مسیرها، کنترل‌کننده‌ها و پارامترهای شما را تعریف کنند. به همین دلیل است که ما ویژگی بازگشتی مولد را به Dialogflow CX اضافه کرده‌ایم: به توسعه‌دهندگان اجازه می‌دهیم روی اصول طراحی مکالمه تمرکز کنند و کمتر روی جزئیات پیاده‌سازی تمرکز کنند تا تجربیات مکالمه قوی را برای کاربران فراهم کنند.

بیایید یک آزمایش دیگر انجام دهیم، این بار دوباره ربات را با مکانی که در لیست مقاصد موجود مانند مالدیو نیست به چالش بکشیم. سپس نگاهی گذرا به اتفاقات پشت صحنه خواهیم انداخت.

Challenge the bot again with a place which is not in the list of available destinations like the Maldives

توجه داشته باشید که از آنجایی که ما برای پارامتر مقصد نیز بک آپ ژنراتیو را در رویداد no-match فعال کرده‌ایم، درخواستی برای تولید پاسخ تولید شده به یک مدل زبان بزرگ ارسال می‌شود. پاسخ‌های از پیش تعیین‌شده منظم (تحت نظر Agent می‌گوید) نادیده گرفته می‌شوند.

جعبه‌های متن زیر به شما کمک می‌کنند تا بهتر بفهمید که چگونه متغیرهایی به شکل‌گیری درخواست ارسال شده به مدل زبان بزرگ کمک می‌کنند.

این اعلان متن سفارشی است که ما در Dialogflow پیکربندی کرده‌ایم و متغیرهایی که به صورت پررنگ برجسته شده‌اند:

You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:

در کادر متنی زیر، ورودی دریافت شده توسط مدل زبان بزرگ و خروجی را که حاوی پاسخ تولید شده است که به کاربر گفته می شود، اضافه کرده ام:

llm_input:
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help search, find and book liveaboards.

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands.

The conversation between the human and you so far was:
Human: Hi, my name's Alessia
AI Hi Alessia, what can I help you with today?
Human: Can you help me find a nice boat for myself and my family?
AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly.
Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico

Then the human asked:
The kids want to go to the Maldives

llm_output:
You say:
I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.

مشابه آزمایشی که قبلا انجام شده است، پاسخی که به کاربر ارسال می‌شود توسط مدل ایجاد می‌شود و بر اطلاعاتی که به عنوان بخشی از توضیحات هدف ارائه کرده‌ایم متکی است: " مقصد باید یکی از موارد زیر در اقیانوس آرام باشد: کاستاریکا، مکزیک، جزایر گالاپاگوس "

لیست عبارات ممنوعه را اصلاح کنید

ویژگی بازگشتی مولد را می توان به روش های مختلفی پیکربندی کرد:

  1. یک اعلان خاص (از قبل تعریف شده) را انتخاب کنید تا برای تولید پاسخ استفاده شود.
  2. یک درخواست سفارشی تعریف کنید.
  3. لیست عبارات ممنوعه را تغییر دهید.

تا اینجا ما دو راه اول را بررسی کردیم. بیایید مورد سوم را بررسی کنیم.

  1. در تنظیمات عامل ، به برگه ML و سپس زبانه فرعی هوش مصنوعی Generative بروید.
  2. در قسمت عبارات ممنوعه جملات زیر را به لیست اضافه کنید:
  3. Dangerous country
  4. Hateful place
  5. Medical assistance
  6. روی ذخیره کلیک کنید.
  7. روی نماد Reset کلیک کنید و آخرین سناریو را دوباره آزمایش کنید. به جای ارائه یک مقصد غواصی زیبا در سراسر جهان، یکی از عبارات ممنوعه را وارد کنید.

Test one of the banned phrases

درخواست و پاسخ تولید شده با لیست عبارات ممنوعه بررسی می شوند. عبارات ممنوع عباراتی هستند که برای هوش مصنوعی مولد ممنوع هستند. اگر ورودی شامل عبارات ممنوعه یا عباراتی باشد که ناامن تلقی می شوند، تولید ناموفق خواهد بود و به جای آن پاسخ تجویز شده منظم (تحت عنوان Agent در همان اجرا می گوید) صادر می شود.

چیزهای عالی! ما مجموعه‌ای از موقعیت‌های مکالمه را پوشش داده‌ایم که در آن پاسخ‌های مولد واقعاً می‌توانند تفاوت ایجاد کنند. با خیال راحت به تست زدن ادامه دهید!

10. تبریک می گویم

آفرین برای تکمیل کد لبه! زمان برای خنک شدن!

Cbo Chill

شما با موفقیت یک عامل مجازی ایجاد کرده‌اید و بازگردانی مولد را در کنترل‌کننده‌های رویداد no-match مورد استفاده در جریان‌ها و در طول پر کردن پارامترها فعال کرده‌اید.

ویژگی بازگشتی مولد همراه با توضیحات جریان و هدف خوب می‌تواند پاسخ‌های خاص و مشارکتی نماینده را در مقابل درخواست‌های عمومی مانند "متاسفم، مطمئن نیستم چگونه کمک کنم" یا "متأسفم، شما گزینه نامعتبری را وارد کرده‌اید" ارائه می‌دهد. اعلان‌های خطا ایجاد شده توسط مدل‌های زبان بزرگ می‌توانند به آرامی کاربران را به سمت مسیرهای موفق هدایت کنند یا انتظارات آنها را در مورد آنچه ممکن است و غیرممکن است بازنشانی کنند.

به راحتی می توانید موقعیت های مکالمه دیگر را آزمایش کنید و سایر عملکردهای موجود مربوط به Dialogflow CX و هوش مصنوعی مولد را بررسی کنید.

پاک کردن

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این کد لبه، می توانید پاکسازی زیر را انجام دهید:

  • به کنسول Dialogflow CX بروید و همه عواملی را که ایجاد کرده اید حذف کنید.
  • در کنسول Google Cloud، به صفحه APIs and Services بروید و Dialogflow API را غیرفعال کنید.

در ادامه مطلب

با این راهنماها و منابع به یادگیری در مورد هوش مصنوعی مکالمه و هوش مصنوعی مولد ادامه دهید:

مجوز

این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.