این آموزش نحوه ساخت یک برنامه گوگل چت را نشان میدهد که به سوالات مبتنی بر مکالمات در فضاهای چت با هوش مصنوعی مولد که توسط Vertex AI با Gemini پشتیبانی میشود، پاسخ میدهد. این برنامه چت از API رویدادهای فضای کاری گوگل به همراه Pub/Sub برای تشخیص و پاسخ به سوالات ارسال شده در فضاهای چت به صورت بلادرنگ، حتی زمانی که به آن اشاره نمیشود، استفاده میکند.
برنامه چت از تمام پیامهای ارسالی در این فضا به عنوان منبع داده و پایگاه دانش استفاده میکند: وقتی کسی سوالی میپرسد، برنامه چت پاسخهای قبلاً به اشتراک گذاشته شده را بررسی میکند و سپس یکی را به اشتراک میگذارد. اگر پاسخی پیدا نشود، میگوید که نمیتواند پاسخ دهد. در هر پاسخ، کاربران میتوانند روی یک دکمه اقدام جانبی کلیک کنند تا یک مدیر فضا را @mention کنند و از او پاسخ بخواهند. با استفاده از Gemini AI، برنامه چت گوگل با آموزش مداوم مکالمات در فضاهایی که به آنها اضافه شده است، پایگاه دانش خود را تطبیق داده و رشد میدهد.
نحوهی عملکرد اپلیکیشن چت در فضای پذیرش و پشتیبانی کارمندان به این صورت است:

شکل ۱. چارلی برنامه چت دستیار دانش هوش مصنوعی را به یک فضای چت اضافه میکند. 
شکل ۲. دانا میپرسد که آیا شرکت آموزش سخنرانی عمومی ارائه میدهد یا خیر. 
شکل ۳. برنامه چت دستیار دانش هوش مصنوعی، Vertex AI with Gemini را وادار میکند تا بر اساس تاریخچه مکالمات فضای چت به سوال دانا پاسخ دهد و سپس پاسخ را به اشتراک میگذارد.
پیشنیازها
یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
دسترسی به سرویسهای ابری گوگل برای انجام موارد زیر:
- یک پروژه گوگل کلود ایجاد کنید.
- یک حساب پرداخت گوگل کلود را به پروژه کلود متصل کنید. برای اطلاع از اینکه آیا دسترسی دارید یا خیر، به مجوزهای مورد نیاز برای فعال کردن پرداخت مراجعه کنید.
- از فراخوانیهای احراز هویت نشدهی تابع گوگل کلود استفاده کنید، که میتوانید با تعیین اینکه آیا سازمان گوگل کلود شما از اشتراکگذاری محدود دامنه استفاده میکند یا خیر، آن را تأیید کنید.
در صورت لزوم، از مدیر Google Cloud خود برای دسترسی یا اجازه سوال کنید.
اگر از رابط خط فرمان گوگل کلود (Google Cloud CLI) استفاده میکنید، یک محیط توسعه Node.js که برای کار با رابط خط فرمان gcloud پیکربندی شده باشد. به بخش راهاندازی محیط توسعه Node.js مراجعه کنید.
اهداف
- یک برنامه چت بسازید که از هوش مصنوعی مولد برای پاسخ به سؤالات مبتنی بر دانش به اشتراک گذاشته شده در مکالمات فضای چت استفاده کند.
- با هوش مصنوعی مولد:
- سوالات کارمندان را تشخیص داده و به آنها پاسخ دهید.
- به طور مداوم از مکالمات مداوم در یک فضای چت یاد بگیرید.
- حتی زمانی که مستقیماً به برنامه چت پیام ارسال نمیشود، به صورت آنی به پیامها در فضای چت گوش دهید و پاسخ دهید.
- پیامها را با نوشتن در پایگاه داده Firestore و خواندن از آن، ذخیره کنید.
- با اشاره به مدیران فضا در صورت عدم یافتن پاسخ برای یک سوال، همکاری در فضای چت را تسهیل کنید.
معماری
نمودار زیر معماری منابع Google Workspace و Google Cloud مورد استفاده توسط برنامه چت دستیار دانش هوش مصنوعی را نشان میدهد.
برنامه چت دستیار دانش هوش مصنوعی به این صورت عمل میکند:
یک کاربر، برنامه چت دستیار دانش هوش مصنوعی را به یک فضای چت اضافه میکند:
برنامه چت از کاربری که آن را به فضای چت اضافه کرده است، میخواهد تا احراز هویت و مجوز را پیکربندی کند.
برنامه چت با فراخوانی متد
spaces.messages.listدر API چت، پیامهای فضا را دریافت میکند و سپس پیامهای دریافت شده را در یک پایگاه داده Firestore ذخیره میکند.برنامه چت، متد
subscriptions.createرا در Google Workspace Events API فراخوانی میکند تا شروع به گوش دادن به رویدادهایی مانند پیامهای موجود در فضا کند. نقطه پایانی اعلان اشتراک، یک تاپیک Pub/Sub است که از Eventarc برای ارسال رویداد به برنامه چت استفاده میکند.برنامه چت یک پیام معرفی برای این فضا ارسال میکند.
یک کاربر در فضای چت پیامی ارسال میکند:
برنامه چت، پیام را به صورت بلادرنگ از موضوع Pub/Sub دریافت میکند.
برنامه چت، پیام را به پایگاه داده Firestore اضافه میکند.
اگر کاربری بعداً پیام را ویرایش یا حذف کند، برنامه چت رویداد بهروزرسانی یا حذفشده را بهصورت بلادرنگ دریافت میکند و سپس پیام را در پایگاه داده Firestore بهروزرسانی یا حذف میکند.
برنامه چت این پیام را با Gemini به Vertex AI ارسال میکند:
این اعلان به Vertex AI با Gemini دستور میدهد تا بررسی کند که آیا پیام شامل سؤالی است یا خیر. اگر چنین باشد، Gemini بر اساس تاریخچه پیامهای فضای چت که در Firestore نگهداری میشود، به سؤال پاسخ میدهد و سپس برنامه Google Chat پیام را به فضای چت ارسال میکند. اگر چنین نباشد، پاسخ ندهید.
اگر هوش مصنوعی Vertex با Gemini به سوال پاسخ دهد، برنامه چت با فراخوانی متد
spaces.messages.createدر API چت و با استفاده از احراز هویت برنامه، پاسخ را ارسال میکند.اگر هوش مصنوعی Vertex با Gemini نتواند به سوال پاسخ دهد، برنامه چت پیامی ارسال میکند که میگوید نمیتواند پاسخی برای آن سوال در تاریخچه فضای چت پیدا کند.
پیامها همیشه شامل یک دکمه اقدام جانبی هستند که کاربران میتوانند روی آن کلیک کنند، که باعث میشود برنامه چت با @mention کردن یک مدیر فضایی از او بخواهد پاسخ دهد.
برنامه چت یک اعلان چرخه عمر از API رویدادهای Google Workspace دریافت میکند که نشان میدهد اشتراک فضای چت در شرف انقضا است:
- برنامه چت با فراخوانی متد
subscriptions.patchدر Google Workspace Events API، درخواستی برای تمدید اشتراک ارسال میکند.
- برنامه چت با فراخوانی متد
برنامه چت از فضای چت حذف میشود:
برنامه چت با فراخوانی متد
subscriptions.deleteدر Google Workspace Events API، اشتراک را حذف میکند.برنامه چت، دادههای فضای چت را از Firestore حذف میکند.
محصولات مورد استفاده توسط دستیار دانش هوش مصنوعی، برنامه چت را بررسی کنید
برنامه چت دستیار دانش هوش مصنوعی از محصولات زیر در گوگل ورکاسپیس و گوگل کلود استفاده میکند:
- رابط برنامهنویسی کاربردی هوش مصنوعی ورتکس با جمینی: یک پلتفرم هوش مصنوعی مولد که توسط جمینی پشتیبانی میشود. برنامه چت دستیار دانش هوش مصنوعی از رابط برنامهنویسی کاربردی هوش مصنوعی ورتکس با جمینی برای تشخیص، درک و پاسخ به سوالات کارمندان استفاده میکند.
- API چت : یک API برای توسعه برنامههای گوگل چت که رویدادهای تعاملی چت، مانند پیامها را دریافت و به آنها پاسخ میدهد. دستیار دانش هوش مصنوعی برنامه چت از API چت برای موارد زیر استفاده میکند:
- رویدادهای تعاملی ارسال شده توسط چت را دریافت و به آنها پاسخ دهید.
- پیامهای ارسالی را در یک فضا فهرست کنید.
- پاسخ به سوالات کاربران را در یک فضا ارسال کنید.
- ویژگیهایی را پیکربندی کنید که نحوه نمایش آن در چت را تعیین میکنند، مانند نام و تصویر آواتار.
- رابط برنامهنویسی کاربردی رویدادهای Google Workspace : این رابط برنامهنویسی کاربردی به شما امکان میدهد در رویدادها مشترک شوید و اعلانهای تغییر را در برنامههای Google Workspace مدیریت کنید. برنامه چت دستیار دانش هوش مصنوعی از رابط برنامهنویسی کاربردی رویدادهای Google Workspace برای گوش دادن به پیامهای ارسال شده در یک فضای چت استفاده میکند تا بتواند سؤالات را حتی زمانی که به آنها اشاره نشده است، شناسایی و پاسخ دهد.
- فایراستور : یک پایگاه داده اسناد بدون سرور. برنامه چت دستیار دانش هوش مصنوعی از فایراستور برای ذخیره دادههای مربوط به پیامهای ارسالی در فضای چت استفاده میکند.
- Pub/Sub : Pub/Sub یک سرویس پیامرسانی ناهمزمان و مقیاسپذیر است که سرویسهای تولیدکننده پیام را از سرویسهای پردازشکننده آن پیامها جدا میکند. برنامه چت دستیار دانش هوش مصنوعی از Pub/Sub برای دریافت رویدادهای اشتراک از فضاهای چت استفاده میکند.
- Eventarc : Eventarc به شما امکان میدهد معماریهای رویدادمحور را بدون نیاز به پیادهسازی، سفارشیسازی یا نگهداری زیرساختهای زیربنایی بسازید. برنامه چت دستیار دانش هوش مصنوعی از Eventarc برای هدایت رویدادها از Pub/Sub به فضای چت و از عملکرد ابری که رویدادهای اشتراک را دریافت و پردازش میکند، استفاده میکند.
- توابع ابری : یک سرویس محاسباتی سبک و بدون سرور که به شما امکان میدهد توابع تک منظوره و مستقلی ایجاد کنید که میتوانند به تعاملات چت و رویدادهای اشتراک بدون نیاز به مدیریت سرور یا محیط اجرا پاسخ دهند. برنامه چت دستیار دانش هوش مصنوعی از دو تابع ابری به نامهای زیر استفاده میکند:
-
app: میزبان نقطه پایانی HTTP است که Chat رویدادهای تعاملی را به آن ارسال میکند و به عنوان یک پلتفرم محاسباتی برای اجرای منطقی که این رویدادها را پردازش و به آنها پاسخ میدهد، عمل میکند. -
eventsApp: رویدادهای فضای چت مانند پیامهای یک اشتراک Pub/Sub را دریافت و پردازش میکند.
-
محیط را آماده کنید
این بخش نحوه ایجاد و پیکربندی یک پروژه Google Cloud برای برنامه Chat را نشان میدهد.
ایجاد یک پروژه گوگل کلود
کنسول گوگل کلود
- در کنسول گوگل کلود، به Menu > IAM & Admin > Create a Project بروید.
- در قسمت نام پروژه ، یک نام توصیفی برای پروژه خود وارد کنید.
اختیاری: برای ویرایش شناسه پروژه ، روی ویرایش کلیک کنید. شناسه پروژه پس از ایجاد پروژه قابل تغییر نیست، بنابراین شناسهای را انتخاب کنید که نیازهای شما را در طول عمر پروژه برآورده کند.
- در فیلد «مکان» ، روی «مرور» کلیک کنید تا مکانهای بالقوه برای پروژه شما نمایش داده شود. سپس، روی «انتخاب» کلیک کنید.
- روی ایجاد کلیک کنید. کنسول Google Cloud به صفحه داشبورد هدایت میشود و پروژه شما ظرف چند دقیقه ایجاد میشود.
رابط خط فرمان جیکلاود
در یکی از محیطهای توسعه زیر، به رابط خط فرمان گوگل کلود ( gcloud ) دسترسی پیدا کنید:
- Cloud Shell : برای استفاده از یک ترمینال آنلاین با رابط خط فرمان gcloud که از قبل تنظیم شده است، Cloud Shell را فعال کنید.
فعال کردن پوسته ابری - پوسته محلی : برای استفاده از یک محیط توسعه محلی، رابط خط فرمان gcloud را نصب و راهاندازی کنید .
برای ایجاد یک پروژه ابری، از دستورgcloud projects createاستفاده کنید: به جای PROJECT_ID ، شناسه پروژهای که میخواهید ایجاد کنید را وارد کنید.gcloud projects create PROJECT_ID
فعال کردن پرداخت برای پروژه ابری
کنسول گوگل کلود
- در کنسول گوگل کلود، به بخش صورتحساب (Billing) بروید. ) > صورتحساب (Billing) > پروژههای من (My Projects) کلیک کنید.
- در بخش «انتخاب سازمان» ، سازمانی را که با پروژه Google Cloud شما مرتبط است، انتخاب کنید.
- در ردیف پروژه، منوی اقدامات ( ) را باز کنید، روی تغییر صورتحساب کلیک کنید و حساب صورتحساب ابری را انتخاب کنید.
- روی تنظیم حساب کلیک کنید.
رابط خط فرمان جیکلاود
- برای فهرست کردن حسابهای صورتحساب موجود، دستور زیر را اجرا کنید:
gcloud billing accounts list - یک حساب صورتحساب را با یک پروژه Google Cloud مرتبط کنید:
gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_IDموارد زیر را جایگزین کنید:
-
PROJECT_IDشناسه پروژه برای پروژه ابری است که میخواهید صورتحساب را برای آن فعال کنید. -
BILLING_ACCOUNT_IDشناسه حساب پرداخت برای پیوند با پروژه Google Cloud است.
-
فعال کردن APIها
کنسول گوگل کلود
در کنسول گوگل کلود، APIهای Google Chat، Vertex AI API، Cloud Functions API، Firestore API، Cloud Build API، Pub/Sub API، Google Workspace Events API، Eventarc API و Cloud Run Admin API را فعال کنید.
تأیید کنید که APIها را در پروژه Cloud صحیح فعال میکنید، سپس روی Next کلیک کنید.
تأیید کنید که API های صحیح را فعال میکنید، سپس روی فعال کردن کلیک کنید.
رابط خط فرمان جیکلاود
در صورت لزوم، پروژه Cloud فعلی را روی پروژهای که ایجاد کردهاید تنظیم کنید:
gcloud config set project PROJECT_IDبه جای PROJECT_ID شناسه پروژه ابری که ایجاد کردهاید را قرار دهید.
APIهای Google Chat، Vertex AI API، Cloud Functions API، Firestore API، Cloud Build API، Pub/Sub API، Google Workspace Events API، Eventarc API و Cloud Run Admin API را فعال کنید:
gcloud services enable chat.googleapis.com \ aiplatform.googleapis.com \ cloudfunctions.googleapis.com \ firestore.googleapis.com \ cloudbuild.googleapis.com \ pubsub.googleapis.com \ workspaceevents.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com
تنظیم احراز هویت و مجوز
احراز هویت و مجوز به برنامه چت اجازه میدهد تا به منابع موجود در Google Workspace و Google Cloud دسترسی داشته باشد.
در این آموزش، شما برنامه Google Chat را به صورت داخلی منتشر میکنید، بنابراین استفاده از اطلاعات placeholder اشکالی ندارد. قبل از انتشار خارجی برنامه Google Chat، اطلاعات placeholder را با اطلاعات واقعی برای صفحه رضایتنامه جایگزین کنید.
صفحه رضایت OAuth را پیکربندی کنید، محدودهها را مشخص کنید و برنامه خود را ثبت کنید
در کنسول گوگل کلود، به Menu > برویدGoogle Auth platform > برندسازی .
اگر قبلاً تنظیمات را انجام دادهایدGoogle Auth platformمیتوانید تنظیمات صفحه رضایت OAuth زیر را در Branding ، Audience و Data Access پیکربندی کنید. اگر پیامی با این مضمون مشاهده کردید Google Auth platform هنوز پیکربندی نشده است ، روی شروع کار کلیک کنید:
- در بخش اطلاعات برنامه ، در قسمت نام برنامه ، عبارت
AI knowledge assistantرا تایپ کنید. - در ایمیل پشتیبانی کاربر ، آدرس ایمیل خود یا یک گروه گوگل مناسب را انتخاب کنید.
- روی بعدی کلیک کنید.
- در قسمت مخاطبان ، گزینه داخلی (Internal) را انتخاب کنید. اگر نمیتوانید داخلی (Internal) را انتخاب کنید، خارجی (External) را انتخاب کنید.
- روی بعدی کلیک کنید.
- در قسمت اطلاعات تماس ، یک آدرس ایمیل وارد کنید که از طریق آن بتوانید از هرگونه تغییر در پروژه خود مطلع شوید.
- روی بعدی کلیک کنید.
- در قسمت Finish ، سیاست دادههای کاربر سرویسهای API گوگل را مرور کنید و در صورت موافقت، گزینه «من با سیاستهای دادههای کاربر سرویسهای API گوگل موافقم» را انتخاب کنید.
- روی ادامه کلیک کنید.
- روی ایجاد کلیک کنید.
- اگر نوع کاربر را External انتخاب کردهاید، کاربران آزمایشی را اضافه کنید:
- روی مخاطب کلیک کنید.
- در قسمت کاربران آزمایشی ، روی افزودن کاربران کلیک کنید.
- آدرس ایمیل خود و سایر کاربران آزمایشی مجاز را وارد کنید، سپس روی ذخیره کلیک کنید.
- در بخش اطلاعات برنامه ، در قسمت نام برنامه ، عبارت
روی دسترسی به دادهها > افزودن یا حذف محدودهها کلیک کنید. یک پنل با لیستی از محدودهها برای هر API که در پروژه Google Cloud خود فعال کردهاید، ظاهر میشود.
در قسمت «افزودن دستی محدودهها» ، محدوده زیر را وارد کنید:
-
https://www.googleapis.com/auth/chat.messages
-
روی افزودن به جدول کلیک کنید.
روی بهروزرسانی کلیک کنید.
پس از انتخاب محدودههای مورد نیاز برنامه، در صفحه دسترسی به دادهها ، روی ذخیره کلیک کنید.
ایجاد اعتبارنامههای شناسه کلاینت OAuth
در کنسول گوگل کلود، به Menu > APIs & Services > Credentials بروید.
روی ایجاد اعتبارنامهها > شناسه کلاینت OAuth کلیک کنید.
روی نوع برنامه > برنامه وب کلیک کنید.
در فیلد نام ، نامی برای اعتبارنامه تایپ کنید. این نام فقط در کنسول Google Cloud نمایش داده میشود.
در زیر Authorized redirect URIs ، روی Add URI کلیک کنید.
در URI های 1 ، موارد زیر را تایپ کنید:
https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2موارد زیر را جایگزین کنید:
- REGION : ناحیه تابع ابری، مانند
us-central1. بعداً، وقتی دو تابع ابری را ایجاد میکنید، باید ناحیه آنها را روی این مقدار تنظیم کنید. - PROJECT_ID : شناسه پروژه ابری که ایجاد کردهاید.
- REGION : ناحیه تابع ابری، مانند
روی ایجاد کلیک کنید.
از پنجره ایجاد شده توسط کلاینت OAuth ، روی دانلود JSON کلیک کنید.
فایل دانلود شده را با نام
credentials.jsonذخیره کنید. بعداً، وقتی دو تابع ابری را ایجاد میکنید، فایلcredentials.jsonرا در هر استقرار وارد میکنید.روی تأیید کلیک کنید.
ایجاد موضوع میخانه/زیرموضوع
موضوع Pub/Sub با API رویدادهای Google Workspace کار میکند تا در رویدادهای یک فضای چت مانند پیامها مشترک شود و به صورت بلادرنگ به برنامه چت اطلاع دهد.
نحوه ایجاد موضوع Pub/Sub به این صورت است:
کنسول گوگل کلود
در کنسول گوگل کلود، به Menu > Pub/Sub بروید.
روی ایجاد موضوع کلیک کنید.
در شناسه موضوع ، عبارت
events-apiرا تایپ کنید.انتخاب «افزودن اشتراک پیشفرض» را لغو کنید.
در بخش رمزگذاری (Encryption) ، کلید رمزگذاری مدیریتشده توسط گوگل (Google-management encryption key) را انتخاب کنید.
روی ایجاد کلیک کنید. موضوع Pub/Sub ظاهر میشود.
برای اینکه این موضوع Pub/Sub و Google Workspace Events API با هم کار کنند، به کاربر Chat IAM اجازه دهید تا در موضوع Pub/Sub پست ارسال کند:
در پنل events-api ، در قسمت PERMISSIONS ، روی Add Principal کلیک کنید.
در قسمت افزودن مدیران اصلی ، در بخش مدیران جدید ، عبارت
chat-api-push@system.gserviceaccount.comرا تایپ کنید.در بخش «اختصاص نقشها» ، در «انتخاب یک نقش» ، «انتشار/زیرمجموعه» > «انتشار/زیرمجموعه» را انتخاب کنید.
روی ذخیره کلیک کنید.
رابط خط فرمان جیکلاود
یک موضوع Pub/Sub با شناسه موضوع
events-apiایجاد کنید:gcloud pubsub topics create events-apiبه کاربر Chat IAM اجازه ارسال پست در موضوع Pub/Sub را بدهید:
gcloud pubsub topics add-iam-policy-binding events-api \ --member='serviceAccount:chat-api-push@system.gserviceaccount.com' \ --role='roles/pubsub.publisher'
ایجاد پایگاه داده Firestore
پایگاه داده Firestore باقی میماند و دادهها را از فضاهای چت، مانند پیامها، بازیابی میکند. شما مدل داده را تعریف نمیکنید، که به طور ضمنی در کد نمونه توسط فایلهای model/message.js و services/firestore-service.js تنظیم شده است.
پایگاه داده برنامه چت دستیار دانش هوش مصنوعی از یک مدل داده NoSQL مبتنی بر اسناد که در مجموعههای سازماندهی شدهاند، استفاده میکند. برای کسب اطلاعات بیشتر، به مدل داده Firestore مراجعه کنید.
نمودار زیر نمای کلی از مدل داده برنامه چت دستیار دانش هوش مصنوعی را نشان میدهد:
ریشه شامل دو مجموعه است:
spaces، که در آن هر سند نشاندهنده یک فضای چت است که برنامه چت به آن اضافه شده است. هر پیام توسط یک سند در زیرمجموعهmessagesنمایش داده میشود.users، که در آن هر سند نشان دهنده کاربری است که برنامه چت را به فضای چت اضافه کرده است.
مشاهده تعاریف مجموعه، سند و فیلد
spaces
یک فضای چت که شامل برنامه چت دستیار دانش هوش مصنوعی است.
| فیلدها | |
|---|---|
Document ID | Stringشناسه منحصر به فرد یک فضای خاص. بخشی از نام منبع فضا در API چت. |
messages | Subcollection of Documents ( پیامهای ارسالشده در فضای چت. متناظر با Document ID یک message در Firebase. |
spaceName | Stringنام منحصر به فرد فضا در Chat API. معادل با نام منبع فضا در Chat API است. |
messages
پیامهای ارسالی در فضای چت
| فیلدها | |
|---|---|
Document ID | Stringشناسه منحصر به فرد یک پیام خاص. |
name | Stringنام منحصر به فرد یک پیام در Chat API. معادل با نام منبع پیام در Chat API است. |
text | Stringمتن پیام. |
time | String ( Timestamp format)زمانی که پیام ایجاد شده است. |
users
کاربرانی که برنامه چت دستیار دانش هوش مصنوعی را به فضای چت اضافه کردهاند.
| فیلدها | |
|---|---|
Document ID | Stringشناسه منحصر به فرد یک کاربر خاص. |
accessToken | Stringتوکن دسترسی اعطا شده در طول احراز هویت کاربر OAuth 2.0 که برای فراخوانی APIهای Google Workspace استفاده میشود. |
refreshToken | Stringتوکن بهروزرسانی که در طول احراز هویت کاربر در OAuth 2.0 اعطا شده است. |
نحوه ایجاد پایگاه داده Firestore به شرح زیر است:
کنسول گوگل کلود
در کنسول گوگل کلود، به Menu > Firestore بروید.
روی ایجاد پایگاه داده کلیک کنید.
از قسمت انتخاب حالت Firestore ، روی حالت Native کلیک کنید.
روی ادامه کلیک کنید.
پیکربندی پایگاه داده:
در قسمت Name your database ، شناسه پایگاه داده را به صورت پیشفرض (Database ID
(default)بگذارید.در قسمت نوع مکان ، منطقه (Region) را انتخاب کنید.
در قسمت Region ، منطقهای را برای پایگاه داده خود مشخص کنید، مانند
us-central1. برای بهترین عملکرد، همان مکان یا مکانی نزدیک به Cloud Functions برنامه چت را انتخاب کنید.
روی ایجاد پایگاه داده کلیک کنید.
رابط خط فرمان جیکلاود
ایجاد یک پایگاه داده Firestore در حالت Native:
gcloud firestore databases create \ --location=LOCATION \ --type=firestore-nativeبه جای LOCATION نام منطقهی Firestore مانند
us-central1را قرار دهید. برای بهترین عملکرد، همان مکان یا مکانی نزدیک به توابع ابری برنامهی چت را انتخاب کنید.
ایجاد و استقرار برنامه چت
اکنون که پروژه Google Cloud شما ایجاد و پیکربندی شده است، آماده ساخت و استقرار برنامه چت هستید. در این بخش، موارد زیر را انجام میدهید:
- دو تابع ابری ایجاد و مستقر کنید. یکی برای پاسخ به رویدادهای تعامل چت و دیگری برای پاسخ به رویدادهای Pub/Sub.
- یک برنامه چت در صفحه پیکربندی Google Chat API ایجاد و مستقر کنید.
ایجاد و استقرار توابع ابری
در این بخش، شما دو تابع ابری با نامهای زیر ایجاد و مستقر میکنید:
-
app: کد برنامه چت را میزبانی و اجرا میکند که به رویدادهای دریافتی از چت به عنوان درخواستهای HTTP پاسخ میدهد. -
eventsApp: رویدادهای فضای چت مانند پیامهای Pub/Sub را دریافت و پردازش میکند.
این توابع ابری در کنار هم، منطق برنامهی دستیار دانش هوش مصنوعی چت را تشکیل میدهند.
در صورت تمایل، قبل از ایجاد توابع ابری، لحظهای را برای بررسی و آشنایی با کد نمونه میزبانی شده در GitHub اختصاص دهید.
ایجاد و استقرار app
کنسول گوگل کلود
کد را از گیتهاب به صورت یک فایل زیپ دانلود کنید.
فایل زیپ دانلود شده را از حالت فشرده خارج کنید.
پوشه استخراج شده شامل کل مخزن نمونههای Google Workspace است.
در پوشهی استخراجشده، به دایرکتوری
google-chat-samples-main/node/ai-knowledge-assistantبروید.در پوشه
google-chat-samples/node/ai-knowledge-assistant، فایلcredentials.jsonرا که هنگام ایجاد اعتبارنامههای OAuth client ID برای احراز هویت و مجوز دانلود کردهاید، اضافه کنید.محتویات پوشهی
ai-knowledge-assistantرا در یک فایل زیپ فشرده کنید.فایل زیپ باید شامل فایلها و پوشههای زیر باشد:
-
.gcloudignore -
.gitignore -
README.md -
deploy.sh -
env.js -
events_index.js -
http_index.js -
index.js -
credentials.json -
package-lock.json -
package.json -
controllers/ -
model/ -
services/ -
test/
-
در کنسول گوگل کلود، به Menu > Cloud Functions بروید.
مطمئن شوید که پروژه Google Cloud برای برنامه چت شما انتخاب شده است.
روی کلیک کنید تا تابع ایجاد شود .
در صفحه ایجاد تابع ، تابع خود را تنظیم کنید:
- در محیط ، گزینه Cloud Run Function را انتخاب کنید.
- در قسمت نام تابع ، عبارت
appتایپ کنید. - در بخش Region ، یک منطقه مانند
us-central1را انتخاب کنید. این منطقه باید با منطقهای که در URI تغییر مسیر مجاز هنگام ایجاد اعتبارنامههای OAuth client ID برای احراز هویت و مجوز تنظیم کردهاید، مطابقت داشته باشد. - در قسمت نوع فعالسازی ، HTTPS را انتخاب کنید.
- در بخش «احراز هویت» ، گزینه «مجاز کردن فراخوانیهای احراز هویت نشده» را انتخاب کنید.
- روی بعدی کلیک کنید.
در زمان اجرا ، Node.js 20 را انتخاب کنید.
در قسمت Entry point ، متن پیشفرض را حذف کرده و
appوارد کنید.در کد منبع ، آپلود فایل زیپ را انتخاب کنید.
در Destination bucket ، یک bucket ایجاد یا انتخاب کنید:
- روی مرور کلیک کنید.
- یک سطل انتخاب کنید.
- روی انتخاب کلیک کنید.
گوگل کلود فایل زیپ را آپلود کرده و فایلهای کامپوننت موجود در این باکت را استخراج میکند. سپس Cloud Functions فایلهای کامپوننت را در Cloud Function کپی میکند.
در فایل Zip ، فایل زیپی که از گیتهاب دانلود، استخراج و دوباره فشرده کردهاید را آپلود کنید:
- روی مرور کلیک کنید.
- به مسیر زیر بروید و فایل زیپ را انتخاب کنید.
- روی باز کردن کلیک کنید.
روی استقرار کلیک کنید.
صفحه جزئیات توابع ابری باز میشود و تابع شما با دو نشانگر پیشرفت ظاهر میشود: یکی برای ساخت و دیگری برای سرویس. وقتی هر دو نشانگر پیشرفت ناپدید شوند و با یک علامت تیک جایگزین شوند، تابع شما مستقر و آماده است.
کد نمونه را برای تنظیم ثابتها ویرایش کنید:
- در صفحه جزئیات عملکرد ابری ، روی ویرایش کلیک کنید.
- روی بعدی کلیک کنید.
- در بخش کد منبع ، ویرایشگر درونخطی (Inline editor) را انتخاب کنید.
- در ویرایشگر درونخطی، فایل
env.jsرا باز کرده و ویرایش کنید:- مقدار project را برابر با شناسه پروژه ابری خود قرار دهید.
- مقدار location را روی ناحیه تابع Cloud مانند
us-central1تنظیم کنید.
روی استقرار کلیک کنید.
رابط خط فرمان جیکلاود
کد را از گیتهاب کپی کنید:
git clone https://github.com/googleworkspace/google-chat-samples.gitبه دایرکتوری که کد مربوط به این برنامه چت دستیار دانش هوش مصنوعی را در خود جای داده است، بروید:
cd google-chat-samples/node/ai-knowledge-assistantدر پوشه
google-chat-samples/node/ai-knowledge-assistant، فایلcredentials.jsonرا که هنگام ایجاد اعتبارنامههای OAuth client ID برای احراز هویت و مجوز دانلود کردهاید، اضافه کنید.فایل
env.jsرا برای تنظیم متغیرهای محیطی ویرایش کنید:- مقدار project را برابر با شناسه پروژه ابری خود قرار دهید.
- مقدار location را روی ناحیه تابع Cloud مانند
us-central1تنظیم کنید.
تابع Cloud را در Google Cloud مستقر کنید:
gcloud functions deploy app \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=app \ --trigger-http \ --allow-unauthenticatedبه جای REGION مقدار ناحیه تابع Cloud را قرار دهید تا با ناحیهای که در فایل
env.jsتنظیم شده است، مانندus-central1، مطابقت داشته باشد.
ایجاد و استقرار eventsApp
کنسول گوگل کلود
در کنسول گوگل کلود، به Menu > Cloud Functions بروید.
مطمئن شوید که پروژه Google Cloud برای برنامه چت شما انتخاب شده است.
روی کلیک کنید تا تابع ایجاد شود .
در صفحه ایجاد تابع ، تابع خود را تنظیم کنید:
- در محیط ، گزینه Cloud Run Function را انتخاب کنید.
- در قسمت نام تابع ،
eventsAppتایپ کنید. - در بخش Region ، یک منطقه مانند
us-central1را انتخاب کنید. این منطقه باید با منطقهای که در URI تغییر مسیر مجاز هنگام ایجاد اعتبارنامههای OAuth client ID برای احراز هویت و مجوز تنظیم کردهاید، مطابقت داشته باشد. - در قسمت نوع راهانداز ، گزینه Cloud Pub/Sub را انتخاب کنید.
- در بخش «موضوعات عمومی/فرعی ابری» ، نام موضوع عمومی/فرعی که ایجاد کردهاید را انتخاب کنید که فرمت آن به صورت
projects/ PROJECT /topics/events-apiاست که در آن PROJECT شناسه پروژه ابری شما است. - اگر پیامی با عنوان
Service account(s) might not have enough permissions to deploy the function with the selected trigger.مشاهده کردید، روی «اعطای همه» کلیک کنید. - روی بعدی کلیک کنید.
در زمان اجرا ، Node.js 20 را انتخاب کنید.
در قسمت Entry point ، متن پیشفرض را حذف کرده و
eventsAppوارد کنید.در کد منبع ، گزینه Zip from Cloud Storage را انتخاب کنید.
در محل ذخیرهسازی ابری ، روی مرور کلیک کنید.
باکتی را که هنگام ایجاد
appCloud Function فایل زیپ را در آن آپلود کردهاید، انتخاب کنید.روی فایل زیپی که آپلود کردید کلیک کنید.
روی انتخاب کلیک کنید.
روی استقرار کلیک کنید.
صفحه جزئیات توابع ابری باز میشود و تابع شما با سه نشانگر پیشرفت ظاهر میشود: یکی برای ساخت، یکی برای سرویس و یکی برای فعالسازی. وقتی هر سه نشانگر پیشرفت ناپدید شوند و با یک علامت تیک جایگزین شوند، تابع شما مستقر و آماده است.
کد نمونه را برای تنظیم ثابتها ویرایش کنید:
- در صفحه جزئیات عملکرد ابری ، روی ویرایش کلیک کنید.
- روی بعدی کلیک کنید.
- در بخش کد منبع ، ویرایشگر درونخطی (Inline editor) را انتخاب کنید.
- در ویرایشگر درونخطی، فایل
env.jsرا باز کرده و ویرایش کنید:- مقدار project را برابر با شناسه پروژه ابری خود قرار دهید.
- مقدار location را روی ناحیه تابع Cloud مانند
us-central1تنظیم کنید.
روی استقرار کلیک کنید.
رابط خط فرمان جیکلاود
در خط فرمان gcloud، اگر هنوز آنجا نیستید، به دایرکتوری که کد مربوط به این برنامه چت دستیار دانش هوش مصنوعی را که قبلاً از GitHub کلون کردهاید، در خود جای داده است، بروید:
cd google-chat-samples/node/ai-knowledge-assistantدر پوشه
google-chat-samples/node/ai-knowledge-assistant، فایلcredentials.jsonرا که هنگام ایجاد اعتبارنامههای OAuth client ID برای احراز هویت و مجوز دانلود کردهاید، اضافه کنید.فایل
env.jsرا برای تنظیم متغیرهای محیطی ویرایش کنید:- مقدار project را برابر با شناسه پروژه ابری خود قرار دهید.
- مقدار location را روی ناحیه تابع Cloud مانند
us-central1تنظیم کنید.
تابع Cloud را در Google Cloud مستقر کنید:
gcloud functions deploy eventsApp \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=eventsApp \ --trigger-topic=events-apiبه جای REGION مقدار ناحیه تابع Cloud را قرار دهید تا با ناحیهای که در فایل
env.jsتنظیم شده است، مانندus-central1، مطابقت داشته باشد.
آدرس اینترنتی (URL) تریگر تابع ابری app کپی کنید
شما باید آدرس اینترنتی (URL) مربوط به تابع ابری app را در بخش بعدی، هنگام پیکربندی برنامه چت در کنسول گوگل کلود، جایگذاری کنید.
کنسول گوگل کلود
در کنسول گوگل کلود، به Menu > Cloud Functions بروید.
در ستون نام از فهرست توابع ابری، روی
appکلیک کنید.روی تریگر کلیک کنید.
آدرس اینترنتی (URL) را کپی کنید.
رابط خط فرمان جیکلاود
عملکرد فضای ابری
appرا شرح دهید:gcloud functions describe appویژگی
urlرا کپی کنید.
پیکربندی برنامه چت در کنسول گوگل کلود
این بخش نحوه پیکربندی API چت در کنسول Google Cloud را با اطلاعات مربوط به برنامه چت شما، از جمله نام برنامه چت و URL تریگر تابع ابری برنامه چت که رویدادهای تعامل چت را به آن ارسال میکند، نشان میدهد.
در کنسول گوگل کلود، > محصولات بیشتر > فضای کاری گوگل > کتابخانه محصولات > رابط برنامهنویسی کاربردی گوگل چت > مدیریت > پیکربندی کلیک کنید.
پاک کردن «این برنامه گپ را به عنوان یک افزونه Google Workspace بسازید» . یک کادر محاورهای باز میشود که از شما میخواهد تأیید کنید. در کادر محاورهای، روی غیرفعال کردن کلیک کنید.
در قسمت نام برنامه ،
AI knowledge assistantرا تایپ کنید.در قسمت آدرس اینترنتی آواتار ،
https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svgتایپ کنید.در قسمت توضیحات ، عبارت
Answers questions with AIرا تایپ کنید.روی گزینهی «فعال کردن ویژگیهای تعاملی» کلیک کنید تا فعال شود.
در بخش عملکرد ، گزینه «پیوستن به فضاها و مکالمات گروهی» را انتخاب کنید.
در قسمت تنظیمات اتصال ، آدرس اینترنتی نقطه پایانی HTTP را انتخاب کنید.
در قسمت HTTP endpoint URL ، آدرس Trigger URL مربوط به تابع ابری
appکه به صورتhttps://REGION-PROJECT_ID.cloudfunctions.net/appفرمت شده است، جایگذاری کنید. در این قسمت REGION ناحیه تابع ابری است، مانندus-central1و PROJECT_ID شناسه پروژه پروژه ابری است که ایجاد کردهاید.در قسمت «قابلیت مشاهده» ، گزینه «این برنامه چت را برای افراد و گروههای خاص در دامنه فضای کاری خود در دسترس قرار دهید» را انتخاب کنید و آدرس ایمیل خود را وارد کنید.
به صورت اختیاری، در قسمت Logs ، گزینه Log errors to Logging را انتخاب کنید.
روی ذخیره کلیک کنید. یک پیام ذخیره پیکربندی ظاهر میشود، به این معنی که برنامه چت آماده آزمایش است.
برنامه چت را آزمایش کنید
با پرسیدن سوالاتی که برنامه چت دستیار دانش هوش مصنوعی میتواند به آنها پاسخ دهد، برنامه چت دستیار دانش هوش مصنوعی را در یک فضای چت با پیامها آزمایش کنید.
در اینجا چند روش برای آزمایش برنامه چت دستیار دانش هوش مصنوعی آورده شده است:
- برنامه چت دستیار دانش هوش مصنوعی را به یک فضای چت موجود اضافه کنید و سوالاتی مرتبط با آن فضا بپرسید.
- یک فضای چت ایجاد کنید و چند پیام برای استفاده به عنوان منبع داده ارسال کنید. پیامها را میتوان از Gemini با پیامی مانند
Answer 20 common onboarding questions employees ask their teams.یا میتوانید چند پاراگراف از راهنمای توسعه با چت را کپی کنید و سپس در مورد آن سوال بپرسید.
برای این آموزش، بیایید یک فضای چت ایجاد کنیم و چند پاراگراف از راهنمای توسعه با نمای کلی چت را در آن قرار دهیم.
گوگل چت را باز کنید.
ایجاد فضای چت:
گفتگوی جدید > ایجاد فضا کلیک کنید.
در قسمت نام فضا ، عبارت
Testing AI knowledge assistant appتایپ کنید.در قسمت «این فضا برای چیست؟» ، گزینه «همکاری» را انتخاب کنید.
در قسمت تنظیمات دسترسی ، انتخاب کنید چه کسی میتواند به فضا دسترسی داشته باشد.
روی ایجاد کلیک کنید.
پیامها را برای استفاده به عنوان منبع داده اضافه کنید:
در یک مرورگر وب، به راهنمای توسعه با چت مراجعه کنید.
محتوای راهنما را کپی کرده و در فضای چتی که ایجاد کردهاید، جایگذاری کنید.
برنامه چت دستیار دانش هوش مصنوعی را اضافه کنید:
در نوار نوشتن پیام، عبارت
@AI knowledge assistantرا تایپ کنید و در منوی پیشنهادی که ظاهر میشود، برنامه چت دستیار دانش هوش مصنوعی را انتخاب کنید وenterرا بزنید.پیامی ظاهر میشود که از شما میپرسد آیا میخواهید برنامه چت دستیار دانش هوش مصنوعی را به فضا اضافه کنید. روی افزودن به فضا کلیک کنید.
اگر این اولین باری است که برنامه چت را به یک فضا اضافه میکنید، باید احراز هویت و مجوز را برای برنامه چت پیکربندی کنید:
- روی پیکربندی کلیک کنید.
- یک پنجره یا برگه مرورگر جدید باز میشود و از شما میخواهد یک حساب گوگل انتخاب کنید. حسابی را که با آن آزمایش میکنید، انتخاب کنید.
- مجوزهایی را که برنامه چت دستیار دانش هوش مصنوعی درخواست میکند، بررسی کنید. برای اعطای آنها، روی «مجاز» کلیک کنید.
- پیامی با این مضمون ظاهر میشود که
You may close this page now.» پنجره یا تب مرورگر را ببندید و به فضای چت برگردید.
یک سوال بپرسید:
در نوار نوشتن پیام، سوالی مانند
What are Google Chat apps?تایپ کنید.دستیار دانش هوش مصنوعی، برنامه چت، پاسخ میدهد.
در صورت تمایل، اگر پاسخ دقیق یا کافی نیست، برای کمک به بهبود سابقه مکالمه هوش مصنوعی، روی کلیک کنید تا کمک بگیرید . برنامه چت دستیار دانش هوش مصنوعی، یک مدیر فضایی را نام میبرد و از او میخواهد که به سوال پاسخ دهد. دفعه بعد، برنامه چت دستیار دانش هوش مصنوعی، پاسخ را خواهد دانست!
ملاحظات، گزینههای معماری جایگزین و مراحل بعدی
این بخش روشهای دیگری را که میتوان برای ساخت برنامه چت دستیار دانش هوش مصنوعی استفاده کرد، بررسی میکند.
Firestore، فضای ذخیرهسازی ابری یا فراخوانی پیامهای لیست در API چت
این آموزش توصیه میکند دادههای فضای چت مانند پیامها را در یک پایگاه داده Firestore ذخیره کنید، زیرا این کار در مقایسه با فراخوانی متد list روی منبع Message با Chat API هر بار که برنامه چت به یک سوال پاسخ میدهد، عملکرد را بهبود میبخشد. علاوه بر این، فراخوانی مکرر list messages میتواند باعث شود برنامه چت به محدودیتهای سهمیه API برسد.
با این حال، اگر سابقه مکالمات یک فضای چت خیلی طولانی شود، استفاده از Firestore میتواند پرهزینه شود.
فضای ابری (Cloud Storage) جایگزینی برای Firestore است. هر فضایی که برنامه چت دستیار دانش هوش مصنوعی در آن فعال است، شیء مخصوص به خود را دریافت میکند و هر شیء یک فایل متنی است که شامل تمام پیامهای موجود در فضا میشود. مزیت این رویکرد این است که میتوان کل محتوای فایل متنی را به طور همزمان با Gemini به Vertex AI ارسال کرد، اما ایراد آن این است که بهروزرسانی تاریخچه مکالمات کار بیشتری میبرد زیرا نمیتوانید به یک شیء در فضای ابری (Cloud Storage) اضافه کنید، فقط میتوانید آن را جایگزین کنید. اگر مرتباً تاریخچه پیامها را بهروزرسانی میکنید، این رویکرد منطقی نیست، اما اگر تاریخچه پیامها را به صورت دورهای، مثلاً هفتهای یک بار، بهروزرسانی کنید، انتخاب خوبی خواهد بود.
عیبیابی
وقتی یک برنامه یا کارت چت گوگل خطایی را برمیگرداند، رابط چت پیامی با عنوان «مشکلی پیش آمده است» یا «درخواست شما قابل پردازش نیست» نمایش میدهد. گاهی اوقات رابط کاربری چت هیچ پیام خطایی را نمایش نمیدهد، اما برنامه یا کارت چت نتیجه غیرمنتظرهای را ایجاد میکند؛ برای مثال، ممکن است پیام کارت ظاهر نشود.
اگرچه ممکن است پیام خطا در رابط کاربری چت نمایش داده نشود، پیامهای خطای توصیفی و دادههای گزارش برای کمک به شما در رفع خطاها هنگام فعال بودن ثبت خطا برای برنامههای چت در دسترس هستند. برای کمک به مشاهده، اشکالزدایی و رفع خطاها، به عیبیابی و رفع خطاهای گوگل چت مراجعه کنید.
تمیز کردن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، توصیه میکنیم پروژه Cloud را حذف کنید.
- در کنسول گوگل کلود، به صفحه مدیریت منابع بروید. روی منو > مدیریت و دسترسی به منابع (IAM & Admin) > مدیریت منابع (Manage Resources) کلیک کنید.
- در لیست پروژهها، پروژهای را که میخواهید حذف کنید انتخاب کنید و سپس روی «حذف کلیک کنید.
- در کادر محاورهای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن (Shut down) کلیک کنید.
مباحث مرتبط
- مدیریت پروژهها با Google Chat، Vertex AI و Firestore
- پاسخ به حوادث با Google Chat، Vertex AI و Apps Script