۱. قبل از شروع
شرکت جمینی انترپرایز چیست؟
Gemini Enterprise یک پلتفرم عاملگرای پیشرفته است که بهترینهای هوش مصنوعی گوگل را برای هر کارمند و برای هر گردش کاری به ارمغان میآورد. این پلتفرم به تیمها این امکان را میدهد که عاملهای هوش مصنوعی را در یک محیط امن کشف، ایجاد، به اشتراک بگذارند و اجرا کنند.
- دسترسی به مدلهای پیشرفته: کاربران به قدرتمندترین هوش مصنوعی چندوجهی گوگل، از جمله Gemini، دسترسی فوری دارند تا با چالشهای پیچیده کسبوکار مقابله کنند.
- استفاده از عوامل تخصصی: این مجموعه شامل عوامل آماده گوگل برای تحقیق، کدنویسی و یادداشتبرداری است تا ارزش فوری ارائه دهد.
- توانمندسازی هر کارمند: گزینههای بدون کد و حرفهای به کارکنان در تمام بخشها اجازه میدهد تا عوامل سفارشی خود را برای اتوماسیون گردش کار ایجاد و مدیریت کنند.
- عوامل میدانی در دادهها: عوامل میتوانند به طور ایمن به دادههای داخلی شرکت و برنامههای شخص ثالث متصل شوند تا اطمینان حاصل شود که پاسخهای آنها از نظر محتوایی دقیق است.
- مدیریت متمرکز: مدیران میتوانند تمام فعالیتهای عاملها را تجسم و حسابرسی کنند تا اطمینان حاصل شود که سازمان از استانداردهای سختگیرانه امنیتی و انطباق پیروی میکند.
- گسترش با اکوسیستمها: این پلتفرم با شبکه گستردهای از برنامههای همکار و ارائهدهندگان خدمات ادغام میشود تا اتوماسیون را در سیستمهای مختلف گسترش دهد.
گوگل ورک اسپیس چیست؟
Google Workspace مجموعهای از راهکارهای بهرهوری و همکاری مبتنی بر ابر است که برای افراد، مدارس و کسبوکارها طراحی شده است:
- ارتباطات: سرویسهای ایمیل حرفهای (Gmail)، کنفرانس ویدیویی (Meet) و پیامرسانی تیمی (Chat).
- تولید محتوا: ابزارهایی برای نوشتن اسناد (Docs)، ساخت صفحات گسترده (Sheets) و طراحی ارائهها (Slides).
- سازماندهی: تقویمهای مشترک (Calendars) و یادداشتبرداری دیجیتال (Keep).
- فضای ذخیرهسازی: فضای ابری متمرکز برای ذخیره و اشتراکگذاری ایمن فایلها (Drive).
- مدیریت: کنترلهای مدیریتی برای مدیریت کاربران و تنظیمات امنیتی (کنسول مدیریت فضای کاری).
چه نوع ادغامهای سفارشی؟
Google Workspace و Gemini Enterprise یک حلقه بازخورد قدرتمند ایجاد میکنند که در آن Workspace دادههای بلادرنگ و زمینه همکاری را فراهم میکند، در حالی که Gemini Enterprise مدلها، استدلال عاملی و هماهنگی لازم برای خودکارسازی گردشهای کاری هوشمند را ارائه میدهد.
- اتصال هوشمند: انبارهای داده تحت مدیریت گوگل، APIها و سرورهای MCP (تحت مدیریت گوگل و سفارشی) به نمایندگان اجازه میدهد تا به طور ایمن و یکپارچه به دادههای Workspace دسترسی داشته باشند و از طرف کاربران اقداماتی را انجام دهند.
- عاملهای سفارشی: با استفاده از طراحان بدون کد یا چارچوبهای حرفهای، تیمها میتوانند عاملهای تخصصی مبتنی بر دادهها و اقدامات فضای کاری تحت مدیریت ادمین بسازند.
- ادغام بومی: افزونههای فضای کاری، چه از طریق اجزای رابط کاربری اختصاصی و چه از طریق فرآیندهای پسزمینه، شکاف بین سیستمهای هوش مصنوعی و برنامههایی مانند چت و جیمیل را پر میکنند. این امر به کارشناسان اجازه میدهد تا دقیقاً در همان جایی که کاربران هستند، با آنها ملاقات کنند و از کمکهای فوری و آگاهانه بهرهمند شوند.
با ترکیب اکوسیستم قدرتمند بهرهوری Google Workspace با قدرت پیشرفتهی عاملمحور Gemini Enterprise، سازمانها میتوانند عملیات خود را از طریق عاملهای هوش مصنوعی سفارشی و مبتنی بر داده متحول کنند که گردشهای کاری پیچیده را مستقیماً در ابزارهایی که تیمهایشان هر روز استفاده میکنند، خودکار میکنند.
پیشنیازها
اگر میخواهید تمام مراحل را در محیط خودتان دنبال کنید، به موارد زیر نیاز خواهید داشت:
- آشنایی اولیه با فضای ابری گوگل و پایتون .
- یک پروژه Google Cloud که شما مالک آن هستید و دارای صورتحساب است. برای بررسی اینکه آیا صورتحساب یک پروژه موجود فعال است یا خیر، به تأیید وضعیت صورتحساب پروژههای خود مراجعه کنید. برای ایجاد یک پروژه و تنظیم صورتحساب، به ایجاد یک پروژه Google Cloud مراجعه کنید. برای تغییر مالکیت پروژه، به مدیریت اعضای پروژه یا تغییر مالکیت پروژه مراجعه کنید.
- نسخههای استاندارد / پلاس Gemini Enterprise فعال هستند. برای مقایسه نسخههای Gemini Enterprise، به مقایسه نسخههای Gemini Enterprise مراجعه کنید. اگر مجوز Gemini Enterprise ندارید، در مرحله بعدی میتوانید یک مجوز آزمایشی ایجاد کنید.
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat و ویژگیهای هوشمند فعال .
- رابط خط فرمان گوگل کلود (Google Cloud CLI) برای پروژه گوگل کلود شما نصب و راهاندازی شد .
- پایتون ۳.۱۱+ نصب شده باشد، به دستورالعملهای موجود در وبسایت رسمی پایتون مراجعه کنید.
آنچه خواهید ساخت
در این آزمایشگاه کد، ما سه راهکار با استفاده از عاملهای هوش مصنوعی Gemini Enterprise که به طور کامل با Google Workspace یکپارچه شدهاند، میسازیم. آنها الگوهای معماری را نشان میدهند که میتوانند برای تعامل با دادهها، اقدامات و رابطهای کاربری استفاده شوند.
عامل سفارشی بدون کد
این عامل به کاربران اجازه میدهد تا دادهها را جستجو کرده و اقداماتی را برای Workspace به زبان طبیعی خود انجام دهند. این عامل به عناصر زیر متکی است:
- مدل: جمینی.
- دادهها و اقدامات: دادههای Gemini Enterprise برای Google Workspace (تقویم، جیمیل، درایو، NotebookLM)، جستجوی گوگل ذخیره میشوند.
- ابزارهای ساخت عامل: طراح عامل Gemini Enterprise.
- میزبان نماینده: شرکت جمینی انترپرایز
- رابط کاربری: اپلیکیشن وب Gemini Enterprise


عامل سفارشی پروکد
این عامل به کاربران اجازه میدهد تا با استفاده از ابزارها و قوانین سفارشی، دادهها را جستجو کرده و اقداماتی را برای Workspace به زبان طبیعی خود انجام دهند. این عامل بر عناصر زیر متکی است:
- مدل: جمینی.
- دادهها و اقدامات: دادههای Gemini Enterprise برای فضای کاری گوگل (تقویم، جیمیل، درایو، نوتبوکLM)، جستجوی گوگل، سرور پروتکل زمینه مدل جستجوی هوش مصنوعی Vertex (MCP) تحت مدیریت گوگل، عملکرد ابزار سفارشی برای ارسال پیامهای گوگل چت (از طریق API گوگل چت) ذخیره میشوند .
- ابزارهای ساخت عامل: کیت توسعه عامل (ADK).
- میزبان عامل: موتور عامل هوش مصنوعی ورتکس.
- رابط کاربری: اپلیکیشن وب Gemini Enterprise


عامل پیشفرض به عنوان افزونه Google Workspace
این عامل به کاربران اجازه میدهد تا دادهها را برای Workspace به زبان طبیعی خود در چارچوب رابطهای کاربری برنامه Workspace جستجو کنند. این عامل به عناصر زیر متکی است:
- مدل: جمینی.
- دادهها: دادههای Gemini Enterprise برای Google Workspace (تقویم، جیمیل، درایو، NotebookLM)، جستجوی گوگل ذخیره میشوند.
- میزبان نماینده: شرکت جمینی انترپرایز
- رابط کاربری: افزونهی Google Workspace برای چت و جیمیل (به راحتی قابل گسترش به تقویم، درایو، اسناد، برگهها و اسلایدها).
- افزونهی Google Workspace: اسکریپت برنامهها، رابطهای برنامهنویسی Gemini Enterprise و Vertex AI، زمینهای (فرادادهی کاربر، پیام Gmail انتخابشده).


آنچه یاد خواهید گرفت
- نقاط ادغام بین Gemini Enterprise و Google Workspace که دادهها و اقدامات را فعال میکنند.
- گزینههای بدون کد و حرفهای برای ساخت عاملهای سفارشی میزبانیشده در Gemini Enterprise.
- روشهایی که کاربران میتوانند از طریق برنامه وب Gemini Enterprise و برنامههای Google Workspace به Agentها دسترسی داشته باشند.
۲. آماده شوید
مفاهیم را مرور کنید
اپلیکیشن Gemini Enterprise
یک برنامه Gemini Enterprise نتایج جستجو، اقدامات و عوامل را در اختیار کاربران نهایی شما قرار میدهد. اصطلاح برنامه را میتوان به جای اصطلاح موتور در زمینه APIها استفاده کرد. یک برنامه باید به یک مخزن داده متصل شود تا از دادههای آن برای ارائه نتایج جستجو، پاسخها یا اقدامات استفاده کند.
اپلیکیشن وب Gemini Enterprise
یک برنامه وب Gemini Enterprise با یک برنامه Gemini Enterprise مرتبط است. این برنامه به عنوان یک پایگاه مرکزی هوش مصنوعی عمل میکند که در آن کارمندان از یک رابط چت واحد برای جستجو در دادههای جداگانه شرکت، اجرای عوامل تخصصی هوش مصنوعی برای گردشهای کاری پیچیده و تولید محتوای حرفهای با حریم خصوصی در سطح سازمانی استفاده میکنند.
مقداردهی اولیه و دسترسی به منابع
در این بخش، شما از طریق مرورگر وب دلخواه خود به منابع زیر دسترسی پیدا کرده و آنها را پیکربندی میکنید.
اپلیکیشن Gemini Enterprise
کنسول گوگل کلود را در یک تب جدید باز کنید، سپس این مراحل را دنبال کنید:
- پروژه خود را انتخاب کنید.
- در قسمت جستجوی Google Cloud، عبارت Gemini Enterprise را جستجو و انتخاب کنید، سپس روی + Create app کلیک کنید. اگر مجوز Gemini Enterprise ندارید، از شما خواسته میشود که یک مجوز آزمایشی رایگان 30 روزه را فعال کنید.
- نام برنامه را
codelabقرار دهید. - یک شناسه بر اساس نام ایجاد میشود و در زیر فیلد نمایش داده میشود، آن را کپی کنید.
- گزینه چند-منطقهای را روی
global (Global)تنظیم کنید. - روی ایجاد کلیک کنید.

- برنامه ایجاد شده است و شما به طور خودکار به Gemini Enterprise > Overview هدایت میشوید.
- در قسمت «دسترسی کامل» ، روی «تنظیم هویت» کلیک کنید.
- در صفحه جدید، گزینه «استفاده از هویت گوگل» را انتخاب کرده و روی «تأیید هویت نیروی کار» کلیک کنید.

- پیکربندی ذخیره میشود و شما به طور خودکار به Gemini Enterprise > Overview هدایت میشوید.
- به بخش پیکربندیها (Configurations) بروید.
- در برگه مدیریت ویژگیها ، گزینه فعال کردن طراح عامل را فعال کنید، روی ذخیره کلیک کنید.

اپلیکیشن وب Gemini Enterprise
Gemini Enterprise را از کنسول Cloud در یک تب جدید باز کنید، سپس این مراحل را دنبال کنید:
- روی برنامهای به نام
codelabکلیک کنید. - آدرس اینترنتی (URL) نمایش داده شده را کپی کنید، زیرا در مراحل بعدی از آن برای پیمایش به برنامه وب Gemini Enterprise استفاده خواهیم کرد.

۳. عامل سفارشی بدون کد
این عامل به کاربران اجازه میدهد تا دادهها را جستجو کرده و اقداماتی را برای Workspace به زبان طبیعی خود انجام دهند. این عامل به عناصر زیر متکی است:
- مدل: جمینی.
- دادهها و اقدامات: دادههای Gemini Enterprise برای Google Workspace (تقویم، جیمیل، درایو، NotebookLM)، جستجوی گوگل ذخیره میشوند.
- ابزارهای ساخت عامل: طراح عامل Gemini Enterprise.
- میزبان نماینده: شرکت جمینی انترپرایز
- رابط کاربری: اپلیکیشن وب Gemini Enterprise
مفاهیم را مرور کنید
جوزا
Gemini یک دوره کارشناسی ارشد حقوق چندوجهی از گوگل است. این دوره به افراد کمک میکند تا پتانسیل انسانی خود را شکوفا کنند تا بتوانند تخیل خود را تقویت کنند، کنجکاوی خود را گسترش دهند و بهرهوری خود را افزایش دهند.
فروشگاه داده Gemini Enterprise
یک مخزن داده Gemini Enterprise موجودیتی است که شامل دادههای دریافتشده از یک منبع داده شخص ثالث مانند Google Workspace یا برنامههای شخص ثالث مانند Jira یا Salesforce است. مخازن دادهای که حاوی دادههای برنامههای شخص ثالث هستند، رابطهای داده نیز نامیده میشوند.
طراح عامل سازمانی Gemini
طراح عامل Gemini Enterprise یک پلتفرم تعاملی بدون کد و کم کد برای ایجاد، مدیریت و راهاندازی عاملهای تک مرحلهای و چند مرحلهای در Gemini Enterprise است.
بررسی معماری راهکار

فعال کردن APIها
انبارهای داده Gemini Enterprise Workspace نیاز به فعالسازی APIها دارند:
- در کنسول گوگل کلود ، APIهای تقویم، جیمیل و People را فعال کنید:

- روی منو ☰ > APIها و خدمات > APIها و خدمات فعالشده کلیک کنید و سپس تأیید کنید که API تقویم گوگل ، API جیمیل و API افراد در لیست هستند.
صفحه رضایت OAuth را پیکربندی کنید
اقدامات تقویم فضای کاری سازمانی Gemini و Gmail نیاز به پیکربندی صفحه رضایت دارند:
- در کنسول گوگل کلود ، روی منو ☰ > پلتفرم گوگل آث > برندسازی کلیک کنید.
- روی شروع به کار کلیک کنید.
- در قسمت اطلاعات برنامه ، نام برنامه را روی
Codelabتنظیم کنید. - در ایمیل پشتیبانی کاربر ، یک آدرس ایمیل پشتیبانی انتخاب کنید که کاربران در صورت داشتن هرگونه سوال در مورد رضایت خود بتوانند با شما تماس بگیرند.
- روی بعدی کلیک کنید.
- در قسمت مخاطبان ، داخلی (Internal) را انتخاب کنید.
- روی بعدی کلیک کنید.
- در قسمت اطلاعات تماس ، یک آدرس ایمیل وارد کنید که از طریق آن بتوانید از هرگونه تغییر در پروژه خود مطلع شوید.
- روی بعدی کلیک کنید.
- در قسمت Finish ، سیاست دادههای کاربر سرویسهای API گوگل را مرور کنید و در صورت موافقت، گزینه «من با سیاستهای دادههای کاربر سرویسهای API گوگل موافقم» را انتخاب کنید.
- روی ادامه و سپس ایجاد کلیک کنید.

- پیکربندی ذخیره شده است و شما به طور خودکار به Google Auth Platform > Overview هدایت میشوید.
- به بخش دسترسی به دادهها بروید.
- روی افزودن یا حذف محدودهها کلیک کنید.
- محدودههای زیر را کپی کرده و در فیلد «افزودن دستی محدودهها» قرار دهید.
https://www.googleapis.com/auth/calendar.readonly
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/calendar.calendars
https://www.googleapis.com/auth/gmail.send
https://www.googleapis.com/auth/gmail.readonly
- روی افزودن به جدول ، سپس بهروزرسانی و در نهایت ذخیره کلیک کنید.

برای کسب اطلاعات بیشتر، به راهنمای کامل پیکربندی رضایت OAuth مراجعه کنید.
ایجاد اعتبارنامههای کلاینت OAuth
برای احراز هویت کاربران، یک کلاینت OAuth جدید برای Gemini Enterprise ایجاد کنید:
- در کنسول گوگل کلود ، روی منو ☰ > پلتفرم گوگل آث > کلاینتها کلیک کنید.
- روی + ایجاد کلاینت کلیک کنید.
- برای نوع برنامه ، برنامه وب را انتخاب کنید.
- نام را روی
codelabتنظیم کنید. - از منابع جاوا اسکریپت مجاز صرف نظر کنید.
- در بخش Authorized redirect URIs ، روی Add URI کلیک کنید و
https://vertexaisearch.cloud.google.com/oauth-redirectرا وارد کنید. - روی ایجاد کلیک کنید.
- یک کادر محاورهای حاوی شناسه و رمز کلاینت OAuth که به تازگی ایجاد کردهاید، ظاهر میشود. این اطلاعات را در جای امنی ذخیره کنید.

ایجاد انبارهای داده
Gemini Enterprise را از کنسول Cloud در یک تب جدید باز کنید، سپس این مراحل را دنبال کنید:
- روی برنامهای به نام
codelabکلیک کنید. - در منوی پیمایش، روی «ذخیرههای داده متصل» کلیک کنید.
- روی + فروشگاه داده جدید کلیک کنید.
- در بخش منبع ، عبارت «تقویم گوگل» را جستجو کنید و روی «انتخاب» کلیک کنید.
- در بخش اقدامات ، شناسه کلاینت و راز کلاینت ذخیره شده از مراحل قبلی را وارد کنید، و سپس روی تأیید اعتبار کلیک کنید و مراحل را برای تأیید اعتبار و مجوزدهی کلاینت OAuth دنبال کنید.
- فعال کردن اقدامات «ایجاد رویداد تقویم» و «بهروزرسانی رویداد تقویم» .
- روی ادامه کلیک کنید.

- در بخش پیکربندی ، نام کانکتور داده را روی
calendarتنظیم کنید. - روی ایجاد کلیک کنید.
- شما به طور خودکار به فروشگاههای داده متصل هدایت میشوید که در آنجا میتوانید فروشگاه داده تازه اضافه شده را مشاهده کنید.
ایجاد مخزن داده گوگل جیمیل:
- روی + فروشگاه داده جدید کلیک کنید.
- در قسمت منبع ، عبارت Google Gmail را جستجو کنید و روی انتخاب (Select) کلیک کنید.
- در بخش اقدامات ، شناسه کلاینت و راز کلاینت ذخیره شده از مراحل قبلی را وارد کنید و سپس روی تأیید اعتبار کلیک کنید.
- فعال کردن عملکرد ارسال ایمیل .
- روی ادامه کلیک کنید.
- در بخش پیکربندی ، نام رابط داده را روی
gmailتنظیم کنید. - روی ایجاد کلیک کنید.
- شما به طور خودکار به فروشگاههای داده متصل هدایت میشوید که در آنجا میتوانید فروشگاه داده تازه اضافه شده را مشاهده کنید.
ایجاد فروشگاه داده گوگل درایو:
- روی + فروشگاه داده جدید کلیک کنید.
- در قسمت منبع ، عبارت Google Drive را جستجو کنید و روی انتخاب (Select) کلیک کنید.
- در بخش دادهها ، همه را انتخاب کنید، سپس روی ادامه کلیک کنید.
- در بخش پیکربندی ، نام کانکتور داده را روی
driveتنظیم کنید. - روی ایجاد کلیک کنید.
- شما به طور خودکار به فروشگاههای داده متصل هدایت میشوید که در آنجا میتوانید فروشگاه داده تازه اضافه شده را مشاهده کنید.
ایجاد مخزن داده NotebookLM:
- روی + فروشگاه داده جدید کلیک کنید.
- در بخش منبع ، NotebookLM را جستجو کنید و روی انتخاب (Select) کلیک کنید.
- در بخش پیکربندی ، نام کانکتور داده را روی
notebooklmتنظیم کنید. - روی ایجاد کلیک کنید.
- شما به طور خودکار به فروشگاههای داده متصل هدایت میشوید که در آنجا میتوانید فروشگاه داده تازه اضافه شده را مشاهده کنید.
پس از چند دقیقه، وضعیت تمام وضعیتهای ذخیرهساز داده متصل (به جز NotebookLM) فعال خواهد شد. در صورت مشاهده هرگونه خطا، میتوانید روی منبع داده کلیک کنید تا جزئیات خطا را مشاهده کنید.

فروشگاههای داده آزمایشی
آدرس اینترنتی برنامه وب Gemini Enterprise را که قبلاً کپی کردیم، باز کنید:
- روی منو ☰ > گفتگوی جدید کلیک کنید.
- در پایین صفحهی پیام چت جدید، روی آیکون کانکتورها کلیک کنید و همه کانکتورها را فعال کنید.
- اکنون میتوانید با دستورات مربوط به رابطها آزمایش کنید. برای مثال، در چت، عبارت «
Do I have any meetings today?را تایپ کنید وenterبزنید. - سپس، عبارت
How many emails did I receive today?را تایپ کنید وenterرا بزنید. - در نهایت، عبارت
Give me the title of the last Drive file I createdرا تایپ کنید وenterبزنید.

ایجاد عامل سفارشی
در برنامه وب Gemini Enterprise، با استفاده از Agent Designer یک عامل جدید ایجاد کنید:
- روی منو ☰ > + نماینده جدید کلیک کنید.
- در چت، عبارت
An agent that always sends pirate-themed emails but use normal English otherwiseرا تایپ کنید وenterرا بزنید.

- طراح عامل، عامل را بر اساس درخواست، پیشنویس میکند و آن را در ویرایشگر باز میکند.
- روی ایجاد کلیک کنید
عامل سفارشی را امتحان کنید
- در برنامه وب Gemini Enterprise، با نماینده تازه ایجاد شده چت کنید:
- روی منو ☰ > نمایندگان کلیک کنید.
- نماینده مورد نظر را از قسمت «نمایندگان شما» انتخاب کنید.
- در پایین صفحهی پیام چت جدید، روی آیکون Connectors کلیک کنید، سپس روی Enable actions for Mail کلیک کنید و دستورالعملها را برای تأیید نماینده دنبال کنید.
- در چت، عبارت «
Send an email to someone@example.com saying I'll see them at Cloud Next, generate some subject and body yourselfوenterرا بزنید. میتوانید ایمیل نمونه را با آدرس ایمیل خود جایگزین کنید. - برای ارسال ایمیل، روی ✔️ کلیک کنید.


۴. عامل سفارشی پروکد
این عامل به کاربران اجازه میدهد تا با استفاده از ابزارها و قوانین سفارشی، دادهها را جستجو کرده و اقداماتی را برای Workspace به زبان طبیعی خود انجام دهند. این عامل بر عناصر زیر متکی است:
- مدل: جمینی.
- دادهها و اقدامات: دادههای Gemini Enterprise برای فضای کاری گوگل (تقویم، جیمیل، درایو، نوتبوکLM)، جستجوی گوگل، سرور پروتکل زمینه مدل جستجوی هوش مصنوعی Vertex (MCP) تحت مدیریت گوگل، عملکرد ابزار سفارشی برای ارسال پیامهای گوگل چت (از طریق API گوگل چت) ذخیره میشوند .
- ابزارهای ساخت عامل: کیت توسعه عامل (ADK).
- میزبان عامل: موتور عامل هوش مصنوعی ورتکس.
- رابط کاربری: اپلیکیشن وب Gemini Enterprise
این برنامه با استفاده از ویژگی «آوردن به خانه» در Gemini Enterprise ادغام خواهد شد، بنابراین باید مراحل استقرار، ثبت و پیکربندی را طی کنیم.
مفاهیم را مرور کنید
هوش مصنوعی ورتکس
ورتکس ایآی هر آنچه را که برای ساخت و استفاده از هوش مصنوعی مولد نیاز دارید، از جمله راهحلهای هوش مصنوعی، جستجو و مکالمه، بیش از ۱۳۰ مدل پایه و یک پلتفرم هوش مصنوعی یکپارچه، ارائه میدهد.

کیت توسعه عامل (ADK)
کیت توسعه عامل (ADK) مجموعهای تخصصی از ابزارها و چارچوبها است که برای سادهسازی ایجاد عاملهای هوش مصنوعی مستقل با ارائه ماژولهای از پیش ساخته شده برای استدلال، مدیریت حافظه و ادغام ابزار طراحی شده است.
مدل زمینه پروتکل (MCP)
پروتکل زمینه مدل (MCP) یک استاندارد باز است که برای ایجاد یکپارچهسازی یکپارچه و ایمن بین برنامههای هوش مصنوعی و منابع داده یا ابزارهای مختلف از طریق یک رابط جهانی "plug-and-play" طراحی شده است.
ابزار عملکرد
یک ابزار تابع ، یک روال اجرایی از پیش تعریف شده است که یک مدل هوش مصنوعی میتواند آن را برای انجام اقدامات خاص یا بازیابی دادههای بلادرنگ از سیستمهای خارجی فعال کند و قابلیتهای خود را فراتر از تولید متن ساده گسترش دهد.
بررسی معماری راهکار

بررسی کد منبع
عامل.py
...
MODEL = "gemini-2.5-flash"
# Gemini Enterprise authentication injects a bearer token into the ToolContext state.
# The key pattern is "GE_AUTH_NAME_<random_digits>".
# We dynamically parse this token to authenticate our MCP and API calls.
GE_AUTH_NAME = "enterprise-ai"
VERTEXAI_SEARCH_TIMEOUT = 15.0
def get_project_id():
"""Fetches the consumer project ID from the environment natively."""
_, project = google.auth.default()
if project:
return project
raise Exception(f"Failed to resolve GCP Project ID from environment.")
def find_serving_config_path():
"""Dynamically finds the default serving config in the engine."""
project_id = get_project_id()
engines = discoveryengine_v1.EngineServiceClient().list_engines(
parent=f"projects/{project_id}/locations/global/collections/default_collection"
)
for engine in engines:
# engine.name natively contains the numeric Project Number
return f"{engine.name}/servingConfigs/default_serving_config"
raise Exception(f"No Discovery Engines found in project {project_id}")
def _get_access_token_from_context(tool_context: ToolContext) -> str:
"""Helper method to dynamically parse the intercepted bearer token from the context state."""
escaped_name = re.escape(GE_AUTH_NAME)
pattern = re.compile(fr"^{escaped_name}_\d+$")
# Handle ADK varying state object types (Raw Dict vs ADK State)
state_dict = tool_context.state.to_dict() if hasattr(tool_context.state, 'to_dict') else tool_context.state
matching_keys = [k for k in state_dict.keys() if pattern.match(k)]
if matching_keys:
return state_dict.get(matching_keys[0])
raise Exception(f"No bearer token found in ToolContext state matching pattern {pattern.pattern}")
def auth_header_provider(tool_context: ToolContext) -> dict[str, str]:
token = _get_access_token_from_context(tool_context)
return {"Authorization": f"Bearer {token}"}
def send_direct_message(email: str, message: str, tool_context: ToolContext) -> dict:
"""Sends a Google Chat Direct Message (DM) to a specific user by email address."""
chat_client = chat_v1.ChatServiceClient(
credentials=Credentials(token=_get_access_token_from_context(tool_context))
)
# 1. Setup the DM space or find existing one
person = chat_v1.User(
name=f"users/{email}",
type_=chat_v1.User.Type.HUMAN
)
membership = chat_v1.Membership(member=person)
space_req = chat_v1.Space(space_type=chat_v1.Space.SpaceType.DIRECT_MESSAGE)
setup_request = chat_v1.SetUpSpaceRequest(
space=space_req,
memberships=[membership]
)
space_response = chat_client.set_up_space(request=setup_request)
space_name = space_response.name
# 2. Send the message
msg = chat_v1.Message(text=message)
message_request = chat_v1.CreateMessageRequest(
parent=space_name,
message=msg
)
message_response = chat_client.create_message(request=message_request)
return {"status": "success", "message_id": message_response.name, "space": space_name}
vertexai_mcp = McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://discoveryengine.googleapis.com/mcp",
timeout=VERTEXAI_SEARCH_TIMEOUT,
sse_read_timeout=VERTEXAI_SEARCH_TIMEOUT
),
tool_filter=['search'],
# The auth_header_provider dynamically injects the bearer token from the ToolContext
# into the MCP call for authentication.
header_provider=auth_header_provider
)
# Answer nicely the following user queries:
# - Please find my meetings for today, I need their titles and links
# - What is the latest Drive file I created?
# - What is the latest Gmail message I received?
# - Please send the following message to someone@example.com: Hello, this is a test message.
root_agent = LlmAgent(
model=MODEL,
name='enterprise_ai',
instruction=f"""
You are a helpful assistant that always uses the Vertex AI MCP search tool to answer the user's message, unless the user asks you to send a message to someone.
If the user asks you to send a message to someone, use the send_direct_message tool to send the message.
You MUST unconditionally use the Vertex AI MCP search tool to find answer, even if you believe you already know the answer or believe the Vertex AI MCP search tool does not contain the data.
The Vertex AI MCP search tool accesses the user's data through datastores including Google Drive, Google Calendar, and Gmail.
Only use the Vertex AI MCP search tool with servingConfig and query parameters, do not use any other parameters.
Always use the servingConfig {find_serving_config_path()} while using the Vertex AI MCP search tool.
""",
tools=[vertexai_mcp, FunctionTool(send_direct_message)]
)
فعال کردن APIها
این راهکار نیاز به فعالسازی APIهای اضافی دارد:
- در کنسول Google Cloud ، رابطهای برنامهنویسی Vertex AI، Cloud Resource Manager و Google Chat را فعال کنید:

- روی منو ☰ > APIها و خدمات > APIها و خدمات فعالشده کلیک کنید و سپس تأیید کنید که Vertex AI API ، Cloud Resource Manager API و Google Chat API در لیست هستند.
صفحه رضایت OAuth را بهروزرسانی کنید
این راهکار نیاز به دسترسی به دادههای اضافی دارد:
- در کنسول گوگل کلود ، روی منو ☰ > پلتفرم گوگل آث > دسترسی به دادهها کلیک کنید.
- روی افزودن یا حذف محدودهها کلیک کنید.
- محدودههای زیر را کپی کرده و در فیلد «افزودن دستی محدودهها» قرار دهید.
- روی افزودن به جدول ، سپس بهروزرسانی و در نهایت ذخیره کلیک کنید.
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/chat.messages.create
https://www.googleapis.com/auth/chat.spaces.create
- روی افزودن به جدول ، سپس بهروزرسانی و در نهایت ذخیره کلیک کنید.

بهروزرسانی اعتبارنامههای کلاینت OAuth
این راهکار به یک URI ریدایرکت مجاز اضافی نیاز دارد:
- در کنسول گوگل کلود ، روی منو ☰ > پلتفرم گوگل آث > کلاینتها کلیک کنید.
- روی نام کلاینت
codelabکلیک کنید. - در بخش Authorized redirect URIs ، روی Add URI کلیک کنید و
https://vertexaisearch.cloud.google.com/static/oauth/oauth.htmlرا وارد کنید. - روی ذخیره کلیک کنید.

فعال کردن جستجوی هوش مصنوعی Vertex در MCP
- در یک ترمینال، اجرا کنید:
gcloud beta services mcp enable discoveryengine.googleapis.com \
--project=$(gcloud config get-value project)
پیکربندی برنامه چت
- در کنسول گوگل کلود ، در قسمت جستجوی گوگل کلود،
Google Chat APIرا جستجو کنید، روی Google Chat API کلیک کنید، روی Manage کلیک کنید و در نهایت روی Configuration کلیک کنید.
- نام و توضیحات برنامه را روی
Gemini Enterpriseتنظیم کنید. - آدرس اینترنتی آواتار را روی
https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.pngتنظیم کنید. - گزینهی «فعال کردن ویژگیهای تعاملی» را از حالت انتخاب خارج کنید و سپس در پنجرهی محاورهای ظاهر شده، روی «غیرفعال کردن» کلیک کنید.
- برای ثبت وقایع، گزینه ثبت خطاها را انتخاب کنید.
- روی ذخیره کلیک کنید.

استقرار عامل در موتور عامل هوش مصنوعی Vertex
- این مخزن گیتهاب را دانلود کنید.
- در یک ترمینال، دایرکتوری
solutions/enterprise-ai-agentرا باز کنید و سپس دستور زیر را اجرا کنید:
# 1. Create and activate a new virtual environment python3 -m venv .venv source .venv/bin/activate # 2. Install poetry and project dependencies pip install poetry poetry install # 3. Deploy the agent adk deploy agent_engine \ --project=$(gcloud config get-value project) \ --region=us-central1 \ --display_name="Enterprise AI" \ enterprise_ai

- وقتی خط Deploying to agent engine... را در لاگها مشاهده کردید، یک ترمینال جدید باز کنید و دستور زیر را برای اضافه کردن مجوزهای لازم به Vertex AI Reasoning Engine Service Agent اجرا کنید:
# 1. Get the current Project ID
PROJECT_ID=$(gcloud config get-value project)
# 2. Extract the Project Number for that ID
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
# 3. Construct the Service Account name
SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com"
# 4. Apply the IAM policy binding
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SERVICE_ACCOUNT" \
--role="roles/discoveryengine.viewer"
- منتظر بمانید تا دستور adk deploy تکمیل شود، سپس نام منبع عامل تازه مستقر شده را از خروجی دستور با رنگ سبز کپی کنید.

ثبت نماینده در Gemini Enterprise
Gemini Enterprise را از کنسول Cloud در یک تب جدید باز کنید، سپس این مراحل را دنبال کنید:
- روی برنامهای به نام
codelabکلیک کنید. - در منوی ناوبری، روی «نمایندگیها» کلیک کنید.
- روی + افزودن نماینده کلیک کنید.
- برای افزودن نماینده سفارشی از طریق موتور عامل ، روی «افزودن» کلیک کنید. بخش «مجوزها» نمایش داده میشود.
- روی افزودن مجوز کلیک کنید.
- نام مجوز را روی
enterprise-aiتنظیم کنید. یک شناسه بر اساس نام ایجاد میشود و در زیر فیلد نمایش داده میشود، آن را کپی کنید. - شناسه کلاینت را روی همان مقداری که کلاینت OAuth در مراحل قبلی ایجاد و بهروزرسانی شده بود، تنظیم کنید.
- مقدار Client secret را برابر با مقدار OAuth client ایجاد شده و بهروزرسانی شده در مراحل قبلی قرار دهید.
- آدرس توکن (Token URI) را روی
https://oauth2.googleapis.com/tokenتنظیم کنید. - پس از جایگزینی <CLIENT_ID> با شناسه کلاینت OAuth که در مراحل قبلی ایجاد و بهروزرسانی شده است، مقدار Authorization URI را به صورت زیر تنظیم کنید.
https://accounts.google.com/o/oauth2/v2/auth?client_id=<CLIENT_ID>&redirect_uri=https%3A%2F%2Fvertexaisearch.cloud.google.com%2Fstatic%2Foauth%2Foauth.html&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.calendars%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.events%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.send%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.messages.create%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fchat.spaces.create&include_granted_scopes=true&response_type=code&access_type=offline&prompt=consent
- روی «انجام شد» و سپس «بعدی» کلیک کنید. بخش «پیکربندی» نمایش داده میشود.
- نام عامل و توضیحات عامل را روی
Enterprise AIتنظیم کنید. - موتور استدلال Agent Engine را روی نام منبع موتور استدلال که در مراحل قبلی کپی شده است، تنظیم کنید. این موتور دارای فرمت زیر است:
projects/<PROJECT_ID>/locations/<LOCATION>/reasoningEngines/<REASONING_ENGINE_ID>
- روی ایجاد کلیک کنید. عامل تازه اضافه شده اکنون در زیر Agents فهرست شده است.
عامل را امتحان کنید
- در برنامه وب Gemini Enterprise، با نماینده تازه ثبت شده گپ بزنید:
- روی منو ☰ > نمایندگان کلیک کنید.
- عامل را در قسمت « از سازمان شما» انتخاب کنید.
- در چت، عبارت
Please find my meetings for today, I need their titles and linksتایپ کنید وenterبزنید. - روی «مجوز دادن» کلیک کنید، سپس مراحل مجوزدهی را دنبال کنید.

- عامل با فهرستی از رویدادهای تقویم (بسته به حساب کاربر) پاسخ میدهد.
- در چت، عبارت
Please send a Chat message to someone@example.com with the following text: Hello!و کلیدenterفشار دهید. - نماینده با یک پیام تأیید پاسخ میدهد.


۵. عامل پیشفرض به عنوان افزونهی Google Workspace
این عامل به کاربران اجازه میدهد تا دادهها را برای Workspace به زبان طبیعی خود در زمینه رابطهای کاربری برنامه Workspace جستجو کنند. این عامل به عناصر زیر متکی است:
- مدل: جمینی.
- دادهها: دادههای Gemini Enterprise برای Google Workspace (تقویم، جیمیل، درایو، NotebookLM)، جستجوی گوگل ذخیره میشوند.
- میزبان نماینده: شرکت جمینی انترپرایز
- رابط کاربری: افزونهی Google Workspace برای چت و جیمیل (به راحتی قابل گسترش به تقویم، درایو، اسناد، برگهها و اسلایدها).
- افزونهی Google Workspace: اسکریپت برنامهها، رابطهای برنامهنویسی Gemini Enterprise و Vertex AI، زمینهای (فرادادهی کاربر، پیام Gmail انتخابشده).
افزونهی Google Workspace با استفاده از StreamAssist API به Gemini Enterprise متصل خواهد شد.
مفاهیم را مرور کنید
افزونهی گوگل ورک اسپیس
افزونهی Google Workspace یک برنامهی سفارشی است که یک یا چند برنامهی Google Workspace (Gmail، Chat، Calendar، Docs، Drive، Meet، Sheets و Slides) را گسترش میدهد.
اسکریپت برنامهها
Apps Script یک پلتفرم جاوا اسکریپت مبتنی بر ابر است که توسط گوگل درایو پشتیبانی میشود و به شما امکان میدهد وظایف را در محصولات گوگل ادغام و خودکارسازی کنید.
چارچوب کارت فضای کاری گوگل
چارچوب کارت در Google Workspace به توسعهدهندگان امکان میدهد رابطهای کاربری غنی و تعاملی ایجاد کنند. این چارچوب امکان ساخت کارتهای سازمانیافته و بصری جذاب را فراهم میکند که میتوانند شامل متن، تصاویر، دکمهها و سایر ابزارکها باشند. این کارتها با ارائه اطلاعات ساختاریافته و فعال کردن اقدامات سریع مستقیماً در برنامههای Workspace، تجربه کاربری را بهبود میبخشند.
بررسی معماری راهکار

بررسی کد منبع
appsscript.json
...
"addOns": {
"common": {
"name": "Enterprise AI",
"logoUrl": "https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.png"
},
"chat": {},
"gmail": {
"contextualTriggers": [
{
"unconditional": {},
"onTriggerFunction": "onAddonEvent"
}
]
}
},
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/discoveryengine.assist.readwrite",
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://www.googleapis.com/auth/gmail.addons.current.message.readonly"
]
...
چت.gs
...
// Service that handles Google Chat operations.
// Handle incoming Google Chat message events, actions will be taken via Google Chat API calls
function onMessage(event) {
if (isInDebugMode()) {
console.log(`MESSAGE event received (Chat): ${JSON.stringify(event)}`);
}
// Extract data from the event.
const chatEvent = event.chat;
setChatConfig(chatEvent.messagePayload.space.name);
// Request AI agent to answer the message
requestAgent(chatEvent.messagePayload.message);
// Respond with an empty response to the Google Chat platform to acknowledge execution
return null;
}
// --- Utility functions ---
// The Chat direct message (DM) space associated with the user
const SPACE_NAME_PROPERTY = "DM_SPACE_NAME"
// Sets the Chat DM space name for subsequent operations.
function setChatConfig(spaceName) {
const userProperties = PropertiesService.getUserProperties();
userProperties.setProperty(SPACE_NAME_PROPERTY, spaceName);
console.log(`Space is set to ${spaceName}`);
}
// Retrieved the Chat DM space name to sent messages to.
function getConfiguredChat() {
const userProperties = PropertiesService.getUserProperties();
return userProperties.getProperty(SPACE_NAME_PROPERTY);
}
// Finds the Chat DM space name between the Chat app and the given user.
function findChatAppDm(userName) {
return Chat.Spaces.findDirectMessage(
{ 'name': userName },
{'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
).name;
}
// Creates a Chat message in the configured space.
function createMessage(message) {
const spaceName = getConfiguredChat();
console.log(`Creating message in space ${spaceName}...`);
return Chat.Spaces.Messages.create(
message,
spaceName,
{},
{'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}`}
).name;
}
نوار کناری.gs
...
// Service that handles Gmail operations.
// Triggered when the user opens the Gmail Add-on or selects an email.
function onAddonEvent(event) {
// If this was triggered by a button click, handle it
if (event.parameters && event.parameters.action === 'send') {
return handleSendMessage(event);
}
// Otherwise, just render the default initial sidebar
return createSidebarCard();
}
// Creates the standard Gmail sidebar card consisting of a text input and send button.
// Optionally includes an answer section if a response was generated.
function createSidebarCard(optionalAnswerSection) {
const card = CardService.newCardBuilder();
const actionSection = CardService.newCardSection();
// Create text input for the user's message
const messageInput = CardService.newTextInput()
.setFieldName("message")
.setTitle("Message")
.setMultiline(true);
// Create action for sending the message
const sendAction = CardService.newAction()
.setFunctionName('onAddonEvent')
.setParameters({ 'action': 'send' });
const sendButton = CardService.newTextButton()
.setText("Send message")
.setTextButtonStyle(CardService.TextButtonStyle.FILLED)
.setOnClickAction(sendAction);
actionSection.addWidget(messageInput);
actionSection.addWidget(CardService.newButtonSet().addButton(sendButton));
card.addSection(actionSection);
// Attach the response at the bottom if we have one
if (optionalAnswerSection) {
card.addSection(optionalAnswerSection);
}
return card.build();
}
// Handles clicks from the Send message button.
function handleSendMessage(event) {
const commonEventObject = event.commonEventObject || {};
const formInputs = commonEventObject.formInputs || {};
const messageInput = formInputs.message;
let userMessage = "";
if (messageInput && messageInput.stringInputs && messageInput.stringInputs.value.length > 0) {
userMessage = messageInput.stringInputs.value[0];
}
if (!userMessage || userMessage.trim().length === 0) {
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification().setText("Please enter a message."))
.build();
}
let finalQueryText = `USER MESSAGE TO ANSWER: ${userMessage}`;
// If we have an email selected in Gmail, append its content as context
if (event.gmail && event.gmail.messageId) {
try {
GmailApp.setCurrentMessageAccessToken(event.gmail.accessToken);
const message = GmailApp.getMessageById(event.gmail.messageId);
const subject = message.getSubject();
const bodyText = message.getPlainBody() || message.getBody();
finalQueryText += `\n\nEMAIL THE USER HAS OPENED ON SCREEN:\nSubject: ${subject}\nBody:\n---\n${bodyText}\n---`;
} catch (e) {
console.error("Could not fetch Gmail context: " + e);
// Invalidate the token explicitly so the next prompt requests the missing scopes
ScriptApp.invalidateAuth();
CardService.newAuthorizationException()
.setResourceDisplayName("Enterprise AI")
.setAuthorizationUrl(ScriptApp.getAuthorizationUrl())
.throwException();
}
}
try {
const responseText = queryAgent({ text: finalQueryText, forceNewSession: true });
// We leverage the 'showdown' library to parse the LLM's Markdown output into HTML
// We also substitute markdown listings with arrows and adjust newlines for clearer rendering in the sidebar
let displayedText = substituteListingsFromMarkdown(responseText);
displayedText = new showdown.Converter().makeHtml(displayedText).replace(/\n/g, '\n\n');
const textParagraph = CardService.newTextParagraph();
textParagraph.setText(displayedText);
const answerSection = CardService.newCardSection()
.addWidget(textParagraph);
const updatedCard = createSidebarCard(answerSection);
return CardService.newActionResponseBuilder()
.setNavigation(CardService.newNavigation().updateCard(updatedCard))
.build();
} catch (err) {
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification().setText("Error fetching response: " + err.message))
.build();
}
}
...
AgentHandler.gs
...
// Service that handles Gemini Enterprise AI Agent operations.
// Submits a query to the AI agent and returns the response string synchronously
function queryAgent(input) {
const isNewSession = input.forceNewSession || !PropertiesService.getUserProperties().getProperty(AGENT_SESSION_NAME);
const sessionName = input.forceNewSession ? createAgentSession() : getOrCreateAgentSession();
let systemPrompt = "SYSTEM PROMPT START Do not respond with tables but use bullet points instead.";
if (input.forceNewSession) {
systemPrompt += " Do not ask the user follow-up questions or converse with them as history is not kept in this interface.";
}
systemPrompt += " SYSTEM PROMPT END\n\n";
const queryText = isNewSession ? systemPrompt + input.text : input.text;
const requestPayload = {
"session": sessionName,
"userMetadata": { "timeZone": Session.getScriptTimeZone() },
"query": { "text": queryText },
"toolsSpec": { "vertexAiSearchSpec": { "dataStoreSpecs": getAgentDataStores().map(ds => { dataStore: ds }) } },
"agentsSpec": { "agentSpecs": [{ "agentId": getAgentId() }] }
};
const responseContentText = UrlFetchApp.fetch(
`https://${getLocation()}-discoveryengine.googleapis.com/v1alpha/${getReasoningEngine()}/assistants/default_assistant:streamAssist?alt=sse`,
{
method: 'post',
headers: { 'Authorization': `Bearer ${ScriptApp.getOAuthToken()}` },
contentType: 'application/json',
payload: JSON.stringify(requestPayload),
muteHttpExceptions: true
}
).getContentText();
if (isInDebugMode()) {
console.log(`Response: ${responseContentText}`);
}
const events = responseContentText.split('\n').map(s => s.replace(/^data:\s*/, '')).filter(s => s.trim().length > 0);
console.log(`Received ${events.length} agent events.`);
let answerText = "";
for (const eventJson of events) {
if (isInDebugMode()) {
console.log("Event: " + eventJson);
}
const event = JSON.parse(eventJson);
// Ignore internal events
if (!event.answer) {
console.log(`Ignored: internal event`);
continue;
}
// Handle text replies
const replies = event.answer.replies || [];
for (const reply of replies) {
const content = reply.groundedContent.content;
if (content) {
if (isInDebugMode()) {
console.log(`Processing content: ${JSON.stringify(content)}`);
}
if (content.thought) {
console.log(`Ignored: thought event`);
continue;
}
answerText += content.text;
}
}
if (event.answer.state === "SUCCEEDED") {
console.log(`Answer text: ${answerText}`);
return answerText;
} else if (event.answer.state !== "IN_PROGRESS") {
throw new Error("Something went wrong, check the Apps Script logs for more info.");
}
}
return answerText;
}
// Gets the list of data stores configured for the agent to include in the request.
function getAgentDataStores() {
const responseContentText = UrlFetchApp.fetch(
`https://${getLocation()}-discoveryengine.googleapis.com/v1/${getReasoningEngine().split('/').slice(0, 6).join('/')}/dataStores`,
{
method: 'get',
// Use the add on service account credentials for data store listing access
headers: { 'Authorization': `Bearer ${getAddonCredentials().getAccessToken()}` },
contentType: 'application/json',
muteHttpExceptions: true
}
).getContentText();
if (isInDebugMode()) {
console.log(`Response: ${responseContentText}`);
}
const dataStores = JSON.parse(responseContentText).dataStores.map(ds => ds.name);
if (isInDebugMode()) {
console.log(`Data stores: ${dataStores}`);
}
return dataStores;
}
...
شروع حساب کاربری سرویس
در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:
- روی منو ☰ > مدیریت و دسترسی > حسابهای سرویس > + ایجاد حساب سرویس کلیک کنید.
- نام حساب سرویس را روی
ge-add-onتنظیم کنید.

- روی ایجاد کلیک کنید و ادامه دهید .
- نقش Discovery Engine Viewer را در مجوزها اضافه کنید.

- روی ادامه و سپس انجام شد کلیک کنید. شما به صفحه حسابهای سرویس هدایت میشوید و میتوانید حساب سرویسی را که ایجاد کردهاید مشاهده کنید.

- حساب کاربری سرویس تازه ایجاد شده و سپس تب Keys را انتخاب کنید.
- روی افزودن کلید و سپس ایجاد کلید جدید کلیک کنید.
- JSON را انتخاب کنید و سپس روی ایجاد کلیک کنید.

- پنجره بسته میشود و جفت کلید عمومی/خصوصی تازه ایجاد شده شما به طور خودکار به عنوان یک فایل JSON در محیط محلی شما دانلود میشود.
ایجاد و پیکربندی پروژه اسکریپت برنامهها
- برای باز کردن پروژهی افزونهی Enterprise AI در Apps Script، روی دکمهی زیر کلیک کنید:
- روی نمای کلی > ایجاد یک کپی کلیک کنید.
- در پروژه Apps Script خود، برای افزودن ویژگیهای اسکریپت، روی تنظیمات پروژه > ویرایش ویژگیهای اسکریپت > افزودن ویژگی اسکریپت کلیک کنید.
- مقدار REASONING_ENGINE_RESOURCE_NAME را برابر با نام منبع برنامه Gemini Enterprise قرار دهید. این نام دارای فرمت زیر است:
# 1. Replace PROJECT_ID with the Google Cloud project ID. # 2. Replace GE_APP_ID with the codelab app ID found in Google Cloud console > Gemini Enterprise > Apps. projects/<PROJECT_ID>/locations/global/collections/default_collection/engines/<GE_APP_ID>
- مقدار APP_SERVICE_ACCOUNT_KEY را روی کلید JSON از فایل حساب سرویس دانلود شده در مراحل قبلی تنظیم کنید.
- روی ذخیره ویژگیهای اسکریپت کلیک کنید
به Gmail و Chat منتقل شوید
در پروژه Apps Script خود، این مراحل را دنبال کنید:
- روی Deploy > Test deployments و سپس Install کلیک کنید. اکنون در Gmail در دسترس است.
- روی کپی در زیر شناسه استقرار سر (Head Deployment ID) کلیک کنید.

در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:
- در فیلد جستجوی Google Cloud،
Google Chat APIرا جستجو کنید، روی Google Chat API کلیک کنید، روی Manage و در نهایت روی Configuration کلیک کنید.
- فعال کردن ویژگیهای تعاملی را انتخاب کنید.
- گزینه «پیوستن به فضاها و مکالمات گروهی» را از حالت انتخاب خارج کنید.
- در بخش تنظیمات اتصال ، گزینه Apps Script را انتخاب کنید.
- شناسه استقرار (Deployment ID) را روی شناسه استقرار اصلی (Head Deployment ID) که در مراحل قبلی کپی شده بود، تنظیم کنید.
- در قسمت «قابلیت مشاهده» ، گزینه «این برنامه چت را برای افراد و گروههای خاص در دامنه فضای کاری خود در دسترس قرار دهید» را انتخاب کنید و آدرس ایمیل خود را وارد کنید.
- روی ذخیره کلیک کنید.

افزونه را امتحان کنید
گوگل چت را در یک تب جدید باز کنید، سپس این مراحل را دنبال کنید:
- با برنامه چت Gemini Enterprise یک فضای پیام مستقیم باز کنید.

- روی پیکربندی کلیک کنید و مراحل احراز هویت را طی کنید.
- عبارت «
What are my meetings for today?را تایپ کنید وenterبزنید. برنامه چت Gemini Enterprise باید نتایج را نمایش دهد.

جیمیل را در یک تب جدید باز کنید، سپس این مراحل را دنبال کنید:
- برای خودتان ایمیلی بفرستید که موضوع آن «
We need to talkو متن آنAre you available today between 8 and 9 AM? - پیام ایمیل تازه دریافت شده را باز کنید.
- افزونهی Enterprise AI را در نوار کناری باز کنید.
- پیام را روی «
Am I?تنظیم کنید. - روی ارسال پیام کلیک کنید.
- پاسخ بعد از دکمه نمایش داده میشود.

۶. تمیز کردن
حذف پروژه گوگل کلود
برای جلوگیری از تحمیل هزینه به حساب گوگل کلود شما برای منابع استفاده شده در این آزمایشگاه کد، توصیه میکنیم پروژه گوگل کلود را حذف کنید.
در کنسول گوگل کلود ، مراحل زیر را دنبال کنید:
- روی منو ☰ > مدیریت و شناسه کاربری > تنظیمات کلیک کنید.
- روی خاموش کردن کلیک کنید.
- شناسه پروژه را وارد کنید.
- روی «در هر صورت خاموش شو» کلیک کنید.

۷. تبریک
تبریک! شما راهکارهایی ساختهاید که قدرت نزدیکتر کردن Gemini Enterprise و Google Workspace را برای کارمندان به کار میگیرد!
بعدش چی؟
ما فقط رایجترین موارد استفاده را در این آزمایشگاه کد به نمایش میگذاریم، اما حوزههای توسعه زیادی وجود دارد که ممکن است بخواهید در راهحلهای خود در نظر بگیرید، مانند موارد زیر:
- از ابزارهای توسعهدهنده مبتنی بر هوش مصنوعی مانند Gemini CLI و Antigravity استفاده کنید.
- با سایر چارچوبها و ابزارهای عامل مانند MCPهای سفارشی، فراخوانیهای تابع سفارشی و رابطهای کاربری مولد ادغام شود.
- با سایر مدلهای هوش مصنوعی، از جمله گمرک، که در پلتفرمهای اختصاصی مانند Vertex AI میزبانی میشوند، ادغام شوید.
- با سایر نمایندگان، که در پلتفرمهای اختصاصی مانند Dialogflow یا توسط اشخاص ثالث از طریق Cloud Marketplace میزبانی میشوند، ادغام شوید.
- برای توانمندسازی تیمها، سازمانها یا کاربران عمومی، عاملها را در بازار ابری منتشر کنید.
بیشتر بدانید
منابع زیادی برای توسعهدهندگان وجود دارد، مانند ویدیوهای یوتیوب، وبسایتهای مستندات، نمونه کدها و آموزشها:
- مرکز توسعهدهندگان فضای ابری گوگل
- محصولات پشتیبانیشده | سرورهای Google Cloud MCP
- رابط کاربری A2
- مدلسازی باغ در Vertex AI | گوگل کلود
- نمای کلی نمایندگان | Gemini Enterprise | مستندات Google Cloud
- مقیاسپذیری عاملهای هوش مصنوعی با Google Cloud Marketplace و Gemini Enterprise
- ارائه عوامل هوش مصنوعی از طریق بازار ابری گوگل
- کانال یوتیوب توسعهدهندگان فضای کاری گوگل - به توسعهدهندگان خوش آمدید!
- وبسایت توسعهدهندگان فضای کاری گوگل
- مخزن گیتهاب برای تمام نمونههای افزونههای گوگل ورکاسپیس

