۱. مرور کلی
آخرین بهروزرسانی: 2023-10-10
آنچه خواهید ساخت
در این آزمایشگاه کد، شما از Vertex AI Conversation و Dialogflow CX برای ساخت، استقرار و پیکربندی یک عامل مجازی استفاده خواهید کرد تا به افرادی که میخواهند خون اهدا کنند کمک کند و از واجد شرایط بودن آنها اطمینان حاصل کند. این عامل در طول اجرای Dialogflow CX از دادههای عمومی واقعی و مدلهای زبان بزرگ مولد (LLM) گوگل استفاده خواهد کرد.
از چه ویژگیهایی استفاده خواهید کرد؟
برای تکمیل آزمایشگاه کد، شما سه ویژگی متمایز را پیکربندی و استفاده خواهید کرد:
نمایندگان فروشگاه داده
ویژگی Vertex AI Conversation یک عامل ویژه Dialogflow به نام عامل ذخیره داده ایجاد میکند.
با این ویژگی، شما یک URL وبسایت، دادههای ساختاریافته یا دادههای بدون ساختار (ذخیرههای داده) ارائه میدهید، سپس گوگل محتوای شما را تجزیه و تحلیل میکند و یک عامل مجازی ایجاد میکند که توسط فروشگاههای داده و مدلهای زبانی بزرگ پشتیبانی میشود. مشتریان و کاربران نهایی شما میتوانند سپس با عامل گفتگو کنند و در مورد محتوا سؤال بپرسند. برای اطلاعات بیشتر در مورد این نوع عامل، به مقدمه Vertex AI Conversation مراجعه کنید.
ژنراتورها
ویژگی مولد، یک ویژگی Dialogflow CX است که به توسعهدهندگان اجازه میدهد از جدیدترین مدلهای زبان بزرگ مولد (LLM) گوگل و اعلانهای سفارشی برای تولید پاسخهای عامل در زمان اجرا استفاده کنند. یک مولد میتواند پاسخهای عمومی را که شامل دانش عمومی از یک مجموعه داده متنی بزرگ است که بر روی آن آموزش دیده است یا زمینهای از مکالمه را مدیریت کند.
پشتیبان مولد
ویژگی generative fallback از جدیدترین مدلهای زبان بزرگ generative (LLM) گوگل برای تولید پاسخهای عامل مجازی استفاده میکند، زمانی که ورودی کاربر نهایی با یک هدف یا پارامتر برای پر کردن فرم مطابقت ندارد. این ویژگی را میتوان با یک اعلان متنی پیکربندی کرد که به LLM نحوه پاسخ دادن را آموزش میدهد. میتوانید از یک اعلان متنی از پیش تعریف شده استفاده کنید یا اعلانهای خود را اضافه کنید. میتوانید generative fallback را در کنترلکنندههای رویداد بدون تطابق که در جریانها، صفحات یا در حین پر کردن پارامتر استفاده میشوند، فعال کنید. هنگامی که generative fallback برای یک رویداد بدون تطابق فعال میشود، هر زمان که آن رویداد فعال شود، Dialogflow سعی میکند یک پاسخ تولید شده تولید کند که به کاربر بازگردانده میشود. اگر تولید پاسخ ناموفق باشد، پاسخ عامل تجویز شده معمولی به جای آن صادر میشود. اگر مشتاقید در مورد generative fallback بیشتر بدانید، این codelab را امتحان کنید!
آنچه یاد خواهید گرفت
- نحوه ایجاد یک عامل ذخیره داده از دادههای بدون ساختار
- نحوه استفاده از کنترلکنندههای دانش برای اینکه کاربران نهایی بتوانند با یک عامل مجازی در مورد محتوای اضافه شده به یک مخزن داده گفتگو کنند.
- نحوه پیکربندی یک اعلان متنی ژنراتور و تبدیل آن به متنی با استفاده از متغیرهای اعلان داخلی ژنراتور.
- چگونه کلمات را به عنوان متغیرهای اعلان ژنراتور علامتگذاری کنیم و بعداً آنها را با پارامترهای جلسه در حین اجرا مرتبط کنیم تا از مقادیر آنها در حین اجرا استفاده شود.
- چگونه یک مولد را برای مدیریت پاسخهایی که شامل دانش از یک مجموعه داده متنی بزرگ و زمینه از مکالمه فعلی هستند، پیکربندی کنیم.
- نحوه تولید ایمیل رسمی با استفاده از ژنراتورها
- چگونه کارشناس خود را آزمایش کنید و سوالات مشتری را که منجر به پاسخهای تولید شده میشوند، شبیهسازی کنید
آنچه نیاز دارید
- یک پروژه ابری گوگل
- یک مرورگر مثل کروم
۲. فعال کردن APIها
قبل از اینکه بتوانید یک عامل ذخیره داده در Vertex AI Conversation ایجاد کنید، باید Dialogflow و همچنین APIهای Vertex AI Search و Conversation را فعال کنید.
برای فعال کردن Dialogflow API، مراحل زیر را دنبال کنید:
- در مرورگر خود، به صفحه جزئیات سرویس API مربوط به Dialogflow بروید.
- برای فعال کردن Dialogflow API در پروژه Google Cloud خود، روی دکمه Enable کلیک کنید.
برای فعال کردن API جستجو و مکالمه Vertex AI، این مراحل را دنبال کنید:
- در کنسول گوگل کلود، به کنسول Vertex AI Search and Conversation بروید.
- شرایط خدمات را بخوانید و با آنها موافقت کنید، سپس روی ادامه کلیک کنید و API را فعال کنید .
۳. یک برنامه چت جدید و یک مخزن داده برای برنامه خود ایجاد کنید
اکنون، یک برنامه چت جدید برای نماینده مجازی خود ایجاد خواهید کرد و آن را با یک منبع داده پیکربندی خواهید کرد. هدف از نمایندهای که خواهید ساخت، کمک به مشتریانی است که در مورد واجد شرایط بودن برای دریافت خون سؤال دارند. شما از خون اهدایی صلیب سرخ استرالیا به عنوان منبع اطلاعات استفاده خواهید کرد و یک مخزن داده بر اساس دادههای بدون ساختار از وبسایت واجد شرایط بودن برای دریافت خون ایجاد خواهید کرد.
- برای ایجاد یک برنامه چت جدید در Vertex AI Conversation، میتوانید یکی از روشهای زیر را انجام دهید:
- به کنسول Vertex AI Conversation بروید، سپس روی +New app در بالای کنسول کلیک کنید.
- به کنسول Dialogflow CX بروید، روی +Create new agent کلیک کنید و سپس گزینه Auto-generate را انتخاب کنید، سپس به مرحله زیر در کنسول Vertex AI Conversation هدایت میشوید.
- از کنسول Vertex AI Conversation، نوع برنامهای که میخواهید ایجاد کنید را Chat انتخاب کنید.
- نام شرکت «
Save a Lifeرا وارد کنید. این پارامتر برای تعریف شرکتی که نماینده شما نمایندگی میکند و دامنه فعالیت نماینده شما استفاده میشود. - نام
Blood Donation Agentرا مشخص کنید. - روی ادامه کلیک کنید.
- روی ایجاد فروشگاه داده جدید کلیک کنید.
- فضای ذخیرهسازی ابری را به عنوان منبع داده برای فروشگاه داده خود انتخاب کنید.
- پوشهی Google Cloud Storage زیر را که حاوی دادههای نمونه برای این codelab است، مشخص کنید و توجه داشته باشید که پیشوند
gs://لازم نیست:cloud-samples-data/dialogflow-cx/arc-lifeblood - نوع دادهای که وارد میکنید را «اسناد بدون ساختار» (Unstructured documents) انتخاب کنید.
- روی ادامه کلیک کنید.
- نام فروشگاه داده را مشخص کنید:
Australian Red Cross Lifeblood Unstructured. - برای ایجاد محل ذخیره داده، روی «ایجاد» کلیک کنید.
- در فهرست انبارهای داده، انبار دادهی تازه ایجاد شدهی
Australian Red Cross Lifeblood Unstructuredانتخاب کنید. - برای ایجاد برنامه چت خود، روی ایجاد کلیک کنید.
تبریک! شما ساخت برنامه چت مبتنی بر دانش خود را که آماده کمک به اهداکنندگان بالقوه است، به پایان رساندهاید، پس لحظهای را برای جشن گرفتن اختصاص دهید!
اما هنوز کارهای بیشتری برای دسترسی کاربران به عامل وجود دارد. در بخش بعدی، از یک کنترلکننده دانش برای فعال کردن گفتگو بین عامل و کاربران نهایی در مورد الزامات واجد شرایط بودن استفاده خواهید کرد.
۴. نماینده را برای پاسخ به سوالات متداول مربوط به واجد شرایط بودن خون پیکربندی کنید
اعلان فروشگاه تاریخ را ارائه دهید
در حالی که فرآیند جمعآوری اسناد در پسزمینه در حال اجرا است، بیایید با ویرایش اعلان ذخیره داده، به عامل یک نام تجاری (brand) بدهیم.
- از کنسول Vertex AI Conversation، روی نام برنامه چت خود کلیک کنید، که شما را برای آزمایش و سفارشیسازی بیشتر به کنسول Dialogflow CX هدایت میکند.
- در کنسول Dialogflow CX و از داخل نماینده خود، روی تنظیمات نماینده (گوشه بالا سمت راست صفحه) کلیک کنید، سپس به برگه ML بروید و در آخر برگه Generative AI را باز کنید.

- فرم زیر را پر کنید تا فرم ذخیره داده زیر ایجاد شود: نام شما
Donateاست و شما یکchatbotمفید و مودب درSave a life, a fictitious organizationهستید. وظیفه شما کمک بهhumans with eligibility informationاست.

فعال کردن پشتیبان مولد برای رویداد عدم تطابق Default Start Flow
- به برگه ساخت بروید و صفحه شروع را باز کنید.
- روی رویداد sys.no-match-default کلیک کنید. مگر اینکه کادر مربوطه از قبل علامت زده شده باشد، ویژگی generative fallback را فعال کنید.

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

مخزن دادهای که قبلاً ایجاد کردهاید، توسط Dialogflow برای شما انتخاب شده است.

به پایین اسکرول کنید تا به بخش «پاسخهای عامل» (Agent Responses) در زیر بخش «اجرا» (Fulfillment ) برسید. «اجرا» پاسخ عامل به کاربر نهایی است. Dialogflow از قبل «Agent says» را با پارامتر $request.knowledge.answers[0] پر کرده است که در زمان اجرا شامل بالاترین پاسخ به سوال کاربر است.

۵. عامل را آزمایش کنید
وقتی اسناد در دسترس قرار گرفتند و برای استفاده توسط نماینده شما آماده شدند، بررسی کنید که پاسخها چقدر خوب هستند.
برای باز کردن دوباره شبیهساز، روی Test Agent کلیک کنید.

سوالاتی را که انتظار دارید در صفحه سوالات متداول وبسایت پیدا کنید، بپرسید:
-
What age do I need to be to donate? -
Can pregnant women donate? -
I've just come back from a trip to Africa. Can I donate? -
How can I schedule an appointment?

توجه داشته باشید که پاسخها از سایت Lifeblood صلیب سرخ استرالیا بازیابی شدهاند. همانطور که در این صفحه ذکر شده است، حداقل و حداکثر سن برای اهدای خون وجود دارد. حداقل سن ۱۸ سال و حداکثر سن برای اهداکنندگان بار اول ۷۵ سال است. شواهد بیشتر مبنی بر اینکه ما اطلاعات را از مخزن دادهها استخراج میکنیم، توسط نماد ستاره کوچک ظاهر شده در پاسخ عامل و پاسخ اصلی JSON ارائه شده است.

در آخر، بیایید سعی کنیم با سوالی کاملاً بیربط به اهدای خون، مامور را به چالش بکشیم.
کاربر: "هوای ملبورن چطوره؟"
نماینده: «متاسفم، نمیتوانم در این مورد به شما کمک کنم. چطور میتوانم در مورد اطلاعات مربوط به واجد شرایط بودن به شما کمک کنم؟»
این پاسخ حاوی محتوای تولید شده توسط هوش مصنوعی است و از پیام متنی که Dialogflow ایجاد کرده و از تنظیمات رابط دانش ارائه شده قبلی شروع میشود، گرفته شده است: «نام شما Donate است و شما یک چتبات مفید و مودب در Save a Life هستید. وظیفه شما کمک به انسانها در ارائه اطلاعات مربوط به واجد شرایط بودن است» . این پیام متنی شامل نام شرکت، نام نماینده و از همه مهمتر آنچه در محدوده آن است که توسط Dialogflow برای تولید پاسخ نماینده استفاده میشود، میباشد.
آفرین! تا اینجا شما از مخزن داده برای کمک به افراد در پاسخ به سوالات متداول مربوط به اهدای خون استفاده کردهاید. در بخش بعدی آزمایشگاه کد، به نحوه اتصال یک پیام متنی مولد به همان محتوا برای تصمیمگیری آگاهانه خواهیم پرداخت.
۶. نماینده را برای آزمون صلاحیت آماده کنید
وظیفه بعدی ما طراحی عاملی است که بتواند واجد شرایط بودن کاربر برای اهدای خون را تعیین کند. الزامات سختگیرانهای وجود دارد که اهداکنندگان باید رعایت کنند، مانند سن، وزن، بیماریهای موجود، سفرهای اخیر و غیره. در محدوده این آزمایشگاه کد، ما فقط سن و وزن را در نظر خواهیم گرفت. یک مولد از مدلهای زبانی بزرگ (LLM) گوگل استفاده میکند تا به صورت پویا و بر اساس زمینه مکالمه و پایگاه دانش، تصمیمی آگاهانه بگیرد.
پیکربندی مسیرها و پارامترهای جدید
- صفحه شروع را باز کنید و روی ویرایش فروشگاههای داده کلیک کنید
- پاسخ عامل فعلی را به
$request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?

- روی دکمه ذخیره کلیک کنید
- اکنون باید عاملی را طراحی کنیم که پاسخهای «بله» و «خیر» را مدیریت کند. برای شروع، یک intent با نام confirmation.yes و یک intent با نام confirmation.no ایجاد کنید. این دستورالعملها را در مورد استفاده مجدد از intent دنبال کنید.
- سپس در صفحه شروع، مسیری برای intent با نام confirmation.yes ایجاد کنید که به صفحه جدید Eligibility Quiz منتقل شود.


- همانطور که قبلاً ذکر شد، ما آزمون را ساده خواهیم کرد و فقط سن و وزن کاربر را برای تعیین واجد شرایط بودن یا نبودن او برای اهدا در نظر خواهیم گرفت. صفحه آزمون واجد شرایط بودن را باز کنید و یک پارامتر فرم جدید age-weight اضافه کنید،
@sys.anyرا به عنوان نوع موجودیت انتخاب کنید. عبارت"What is your age and weight?"را به عنوان تکمیل اولیه درخواست وارد کنید. ما میخواهیم سن و وزن را به صورت یکجا جمعآوری کنیم. همه تغییرات را ذخیره کنید.

ایجاد و پیکربندی مولد واجد شرایط بودن
ویژگی مولد، یک ویژگی Dialogflow CX است که به توسعهدهندگان اجازه میدهد از جدیدترین مدلهای زبان بزرگ مولد (LLM) گوگل در طول اجرای Dialogflow CX استفاده کنند. مولدها برای تولید پاسخهای عامل در زمان اجرا. یک مولد میتواند پاسخهای عمومی را که شامل دانش عمومی از یک مجموعه داده متنی بزرگ است که بر روی آن آموزش دیده است یا زمینهای از مکالمه را مدیریت کند.
ما یک مولد جدید ایجاد خواهیم کرد که اطلاعات ارائه شده توسط کاربر (مانند سن و وزن) را با شرایط لازم برای تعیین اینکه آیا کاربر میتواند کمک مالی کند یا خیر، مقایسه میکند.
- در کنسول Dialogflow CX به تب Manage بروید، Generators را انتخاب کنید و روی Create new کلیک کنید.

- سپس، یک نام نمایشی توصیفی ارائه دهید و متن مورد نظر را بنویسید. تنظیمات کنترل کیفیت مدل پیشفرض را رها کنید. سپس برای ایجاد مولد، روی ذخیره کلیک کنید.
- نام نمایشی:
Blood Donation Eligibility - متن درخواست:
Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)
- نام نمایشی:
متن اعلان در طول اجرای مدل مولد در زمان اجرا به آن ارسال میشود. برای اینکه مدل بتواند پاسخ رضایتبخشی تولید کند، باید یک سوال یا درخواست واضح باشد. میتوانید از متغیرهای اعلان مولد داخلی در متن اعلان خود استفاده کنید:
-
$conversationمکالمه بین عامل و کاربر، به استثنای آخرین گفته کاربر. -
$last-user-utteranceکاربر.
اعلان متنی که پیکربندی کردهاید، از کاربر انتظار دارد که سن و وزن را در یک نوبت مکالمه (`$last-user-utterance``) ارائه دهد.
از ژنراتور در انجام کار استفاده کنید و تمام پارامترهای مورد نیاز را پیکربندی کنید
- در صفحه آزمون واجد شرایط بودن ، یک مسیر جدید اضافه کنید که پس از پر شدن همه پارامترها اجرا خواهد شد. شرط مورد نیاز
$page.params.status = "FINAL"را وارد کنید و روی ذخیره کلیک کنید.

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

- از پارامتر خروجی در پاسخ عامل استفاده کنید و مسیر را ذخیره کنید. اکنون آماده آزمایش همه چیز هستید.

۷. کارگزار خود را دوباره آزمایش کنید
برای باز کردن دوباره شبیهساز، روی Test Agent کلیک کنید.

در شبیهساز، مکالمه جدیدی را با نماینده شروع کنید. ابتدا در مورد شرایط سنی سوال کنید و سپس به آزمون واجد شرایط بودن بروید. ابتدا مسیر «واجد شرایط بودن» را بررسی کنید، بنابراین سن بین ۱۸ تا ۷۵ سال و وزن بالای ۵۰ کیلوگرم را وارد کنید.

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

عالیه، مولد داده همونطور که انتظار میرفت کار میکنه! یا نه؟ اگه کاربر سن رو وارد کنه اما وزن رو وارد نکنه (یا برعکس) چه اتفاقی میافته؟

۸. تنظیم سریع ژنراتور
به نظر نمیرسد جمعآوری سن و وزن در یک تابع ago کار کند، مگر اینکه هر دو پارامتر age و weight ارائه شوند. در عوض، باید فرمی ایجاد کنیم که هر دو مقدار را به عنوان پارامترهای موجودیت جمعآوری کند. برای اینکه prompt با تمام الزامات واجد شرایط بودن (مانند age و weight) مرتبط باشد، میتوانیم با اضافه کردن یک $ قبل از کلمه، از placeholders استفاده کنیم. بعداً این placeholders های generator prompt را با پارامترهای session در زمان اجرا مرتبط خواهیم کرد و در طول اجرا با مقادیر پارامتر session جایگزین میشوند.
- صفحه آزمون واجد شرایط بودن را باز کنید و دو پارامتر فرم جداگانه اضافه کنید: یکی برای وزن و دیگری برای سن.
@sys.number-integerرا به عنوان نوع موجودیت انتخاب کنید و پارامترهای مورد نیاز را علامت بزنید. سوالات اولیه مانند «How old are you?وWhat is your correct weight?را ارائه دهید. تمام تغییرات را ذخیره کنید.

- قبل از اینکه بتوانیم متن اعلان ژنراتور را تغییر دهیم، از آنجایی که قرار است دو متغیر سفارشی جدید اضافه کنیم، ابتدا باید ژنراتور را از تکمیل مسیر حذف کنیم. روی ذخیره کلیک کنید.

- به برگه مدیریت بروید، ژنراتورها را انتخاب کنید و متن اعلان ژنراتور واجد شرایط بودن برای اهدای خون را با موارد زیر بهروزرسانی کنید:
Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.روی ذخیره کلیک کنید.
توجه داشته باشید که ما نه تنها متن پیام را بر اساس پارامترهای فرم سن و وزن تنظیم کردهایم، بلکه جمله آخر را نیز تغییر دادهایم تا بتوانیم یک ایمیل رسمی برای کاربر ایجاد کنیم که حاوی نتیجه رسمی آزمون واجد شرایط بودن باشد.

- در صفحه آزمون واجد شرایط بودن ، مسیر را انتخاب کنید و بخش ژنراتورها را از پنل تکمیل سفارش گسترش دهید. سپس، روی افزودن ژنراتور کلیک کنید و ژنراتور واجد شرایط بودن اهدای خون را انتخاب کنید. پس از انتخاب ژنراتور، باید متغیرهای اعلان جدید را با پارامترهای جلسه مربوطه مرتبط کنید. علاوه بر این، باید پارامتر خروجی را دوباره تنظیم کنید. روی ذخیره کلیک کنید.

- دوباره از اپراتور تست بگیرید. بررسی صلاحیت اکنون هم سن و هم وزن را در نظر میگیرد و لحن پاسخ از حالت محاورهای به پاسخی مودبانهتر تغییر کرده است که بدون دخالت انسان آماده ارسال است.


۹. تبریک
آفرین که این آزمایشگاه کد رو تموم کردی!

امروز ما مولدها را در زمینه آزمونهای واجد شرایط بودن بررسی کردیم. شما دیدهاید که مولدها از LLMها برای تولید پاسخهای عامل استفاده میکنند و هنگامی که توسط یک پایگاه دانش پشتیبانی میشوند، میتوانند تصمیمات آگاهانهای نیز بگیرند. مطمئناً موارد استفاده بسیار دیگری وجود دارد که میتوان با استفاده از مولدها و انبارهای داده پیادهسازی کرد و ما بیصبرانه منتظر آشنایی با آنها هستیم!
تمیز کردن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع مورد استفاده در این codelab، میتوانید مراحل پاکسازی زیر را انجام دهید:
- برای جلوگیری از هزینههای غیرضروری گوگل کلود، در صورت عدم نیاز به پروژه، از کنسول گوگل کلود برای حذف آن استفاده کنید.
- اگر از یک پروژه Google Cloud موجود استفاده کردهاید، منابعی را که ایجاد کردهاید حذف کنید تا از اعمال هزینه به حسابتان جلوگیری شود. برای اطلاعات بیشتر، به مراحل حذف یک برنامه مراجعه کنید.
- اگر میخواهید APIهای Vertex AI Conversation و Dialogflow را غیرفعال کنید، به صفحه Discovery Engine API Service Details بروید و روی Disable API کلیک کنید و تأیید کنید، و به صفحه Dialogflow API Service Details بروید و روی Disable API کلیک کنید و تأیید کنید.
اطلاعات بیشتر
با استفاده از این راهنماها و منابع، به یادگیری در مورد هوش مصنوعی محاورهای و هوش مصنوعی مولد ادامه دهید:
- مستندات مربوط به Dialogflow CX
- مقدمهای بر مکالمه هوش مصنوعی Vertex
- ایجاد و استفاده از یک عامل ذخیره داده
- مستندات مربوط به مکالمه هوش مصنوعی ورتکس
- هوش مصنوعی مولد در گوگل کلود
مجوز
این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.