استفاده از هوش مصنوعی Duet در طول چرخه عمر توسعه نرم افزار

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

یک روز از زندگی یک توسعه دهنده Google Cloud معمولاً شامل استفاده از چندین محصول و خدمات Google Cloud است. این محصولات توسعه دهنده را قادر می سازد تا برنامه ها را در فضای ابری توسعه، آزمایش، استقرار و مدیریت کند. با کمک Duet AI ، یک توسعه‌دهنده می‌تواند با استفاده از چت تعاملی Duet AI، کمک کد، و ادغام‌های تعبیه‌شده در استفاده از محصولات Google Cloud بهره‌ورتر شود.

این آزمایشگاه از کمک هوش مصنوعی Duet برای استقرار برنامه وب خواربارفروشی "Cymbal Superstore" استفاده می کند. سپس یک ویژگی جدید را توسعه داده و به کار خواهید گرفت و قسمت جلویی و پشتی برنامه را می سازید. همچنین از کمک Duet برای نوشتن آزمایش‌های برنامه خود بهره خواهید برد و خواهید دید که چگونه Duet می‌تواند با سایر ابزارهای Google Cloud ادغام شود.

اهداف

شما یاد خواهید گرفت که چگونه:

  • با کمک Duet AI یک برنامه وب موجود را بهبود بخشید.
  • برنامه را در Cloud Run مستقر کنید.
  • از Duet AI بخواهید یک خطا در برنامه را توضیح دهد و یک راه حل ارائه دهد.
  • با کمک هوش مصنوعی Duet، آزمایش هایی را برای برنامه توسعه دهید.
  • گزارش های برنامه را با کمک Duet AI مشاهده کنید.

پیش نیازها

  • حساب Google Cloud Platform و پروژه ای با فعال بودن صورتحساب
  • تجربه پایه لینوکس

2. راه اندازی

این بخش تمام کارهایی را که برای شروع کار با این آزمایشگاه باید انجام دهید را پوشش می دهد.

یک پروژه ایجاد کنید

برای ساده‌تر کردن پاک‌سازی، بیایید یک پروژه ابری جدید گوگل ایجاد کنیم.

  • به https://console.cloud.google.com بروید.
  • روی منوی کشویی انتخابگر پروژه کلیک کنید
  • ایجاد پروژه را انتخاب کنید
  • به آن نام به یاد ماندنی مانند، معرفی به کانتینر بدهید

هوش مصنوعی Duet را در پروژه Google Cloud فعال کنید

اکنون Duet AI API را در پروژه Google Cloud خود فعال می کنیم. مراحل زیر را دنبال کنید:

  1. به داشبورد https://console.cloud.google.com خود بروید و مطمئن شوید که پروژه Google Cloud را که قصد دارید با آن برای این آزمایشگاه کار کنید انتخاب کرده اید. روی نماد Duet AI که در بالا سمت راست می بینید کلیک کنید.

a4d8a7253b056abb.png

  1. پنجره چت Duet AI در سمت راست کنسول باز می شود. مطابق شکل زیر بر روی دکمه Enable کلیک کنید. اگر دکمه Enable را نمی بینید و به جای آن یک رابط چت می بینید، احتمالاً قبلاً Duet AI را برای پروژه فعال کرده اید و می توانید مستقیماً به مرحله بعدی بروید.

58296b10f18b7a37.png

  1. وقتی فعال شد، می‌توانید هوش مصنوعی Duet را با پرسیدن یک یا دو پرس و جو آزمایش کنید. چند نمونه پرس و جو نشان داده شده است اما می توانید چیزی مانند "Cloud Run چیست؟" را امتحان کنید.

8953fb4afeeddb1a.png

هوش مصنوعی Duet با پاسخ به سوال شما پاسخ خواهد داد. برای بستن پنجره چت Duet AI می توانید روی نماد _ در گوشه سمت راست بالا کلیک کنید.

هوش مصنوعی Duet را در Cloud Shell IDE فعال کنید

ما از Cloud Shell IDE برای بقیه بخش کد استفاده خواهیم کرد. ما باید هوش مصنوعی Duet را در Cloud Shell IDE فعال و پیکربندی کنیم و مراحل در زیر آورده شده است:

  1. Cloud Shell را از طریق نماد نشان داده شده در زیر راه اندازی کنید. راه اندازی نمونه Cloud Shell ممکن است یک یا دو دقیقه طول بکشد.

3b59c357d06c5ab1.png

  1. بر روی دکمه ویرایشگر یا باز کردن ویرایشگر (برحسب مورد) کلیک کنید و منتظر بمانید تا Cloud Shell IDE ظاهر شود. شما از ویرایشگر "جدید" استفاده خواهید کرد، نه ویرایشگر قدیمی.

a54576c01be31a97.png

  1. همانطور که نشان داده شده است، روی دکمه Cloud Code - Sign in در نوار وضعیت پایین کلیک کنید. پلاگین را طبق دستورالعمل مجاز کنید. اگر «کد ابری - بدون پروژه» را در نوار وضعیت می‌بینید، آن را انتخاب کنید و سپس پروژه Google Cloud خاص را از لیست پروژه‌هایی که قصد دارید با آنها کار کنید، انتخاب کنید.

9b77ab79e8c135e6.png

  1. همانطور که نشان داده شده است، روی دکمه Duet AI در گوشه سمت راست پایین کلیک کنید و پروژه صحیح Google Cloud را که ما Cloud AI Companion API را برای آن فعال کرده بودیم، انتخاب کنید.

afa42f64a331ad70.png

  1. هنگامی که پروژه Google Cloud خود را انتخاب و تأیید کردید، مطمئن شوید که می‌توانید آن را در پیام وضعیت Cloud Code در نوار وضعیت مشاهده کنید و همچنین هوش مصنوعی Duet را در سمت راست، در نوار وضعیت همانطور که در زیر نشان داده شده است، فعال کرده‌اید:

11656bd6a7ddfea4.png

هوش مصنوعی Duet آماده استفاده است!

3. استفاده از Duet AI

شما به عنوان بخشی از این آزمایشگاه یک برنامه وب ایجاد خواهید کرد. این آزمایشگاه مکان‌های زیادی را برای امتحان دوئت نشان می‌دهد. اما اگر کنجکاو هستید، می‌توانید در هر جایی از آزمایشگاه وقت بگذارید و از Duet بپرسید.

به عنوان مثال، شما از Terraform برای ایجاد و استقرار برنامه اصلی استفاده خواهید کرد. اگر نمی دانید Terraform چیست، می توانید از Duet بپرسید. اگر می‌خواهید بدانید که هر یک از مراحل چه کاری انجام می‌دهند، Duet می‌تواند آنها را توضیح دهد. آیا واقعاً می خواهید کد را باز کنید و در مورد خطوط خاصی بپرسید؟ Duet را امتحان کنید.

4. وب اپلیکیشن را بسازید

این آزمایشگاه از برنامه وب خواربارفروشی "Cymbal Superstore" استفاده می کند. در کارهای بعدی این آزمایشگاه، از هوش مصنوعی Duet برای توسعه و استقرار یک ویژگی جدید در این برنامه استفاده می کنید. قبل از اینکه بتوانید ببینید که چگونه هوش مصنوعی Duet به شما در درک کدهای موجود کمک می کند، برای کار کردن با آن به کدهای موجود نیاز دارید، بنابراین اکنون اجزای frontend و backend این برنامه را خواهید ساخت.

در حین کار روی این پروژه، بین Cloud Shell و Cloud Shell Editor حرکت خواهید کرد. یک راه آسان برای انجام این کار استفاده از دکمه های بالای صفحه است:

750038c738f1f405.png

محیط را پیکربندی کنید

دستورات را در Cloud Shell اجرا کنید.

  1. شناسه پروژه را تنظیم کنید:
gcloud config set project <Google Cloud Project ID>
  1. برای اجرای Docker credential helper، دستور زیر را اجرا کنید:
gcloud auth configure-docker
  1. اگر از شما پرسیده شد که آیا می خواهید ادامه دهید، Y را تایپ کنید.
  2. برای دانلود کد برنامه "Cymbal Superstore"، دستور زیر را از پوشه اصلی خود در Cloud Shell اجرا کنید. کد Cymbal Superstore را از Github دریافت می کند.
git clone https://github.com/GoogleCloudPlatform/cymbal-superstore
  1. برای اجرای صحیح این کد باید چندین API را فعال کنید. در Cloud Shell دستور زیر را وارد کنید:
gcloud services enable cloudresourcemanager.googleapis.com compute.googleapis.com artifactregistry.googleapis.com serviceusage.googleapis.com run.googleapis.com bigquery.googleapis.com 
  1. به دایرکتوری Terraform در کدی که دانلود کردید تغییر دهید:
cd cymbal-superstore/terraform
  1. از آنجایی که این آزمایشگاه از Spanner استفاده نمی کند، از نسخه ای از دستورالعمل های Terraform استفاده می کنیم که Spanner را نصب نمی کند. در Cloud Shell دستور زیر را وارد کنید:
mv main.tf.nospanner main.tf
  1. برای اینکه مجبور نباشید هر بار که دستور Terraform را اجرا می کنید، نام و شماره پروژه خود را وارد کنید، یک فایل به نام terraform.tfvars در این فهرست terraform ایجاد کنید. با اطلاعات زیر دو خط به این فایل اضافه کنید و فایل را ذخیره کنید. این اطلاعات را می توانید در داشبورد پروژه پیدا کنید.
project_id="Your project id"
project_number=Your project number
  1. Terraform را با خط راه اندازی کنید:
terraform init
  1. در نهایت، منابع Terraform را با استفاده از دستور زیر در پروژه خود مستقر کنید. ممکن است از شما خواسته شود که "بله" را در طول این استقرار تایپ کنید. این ممکن است تا 10 دقیقه طول بکشد، بنابراین ممکن است بخواهید زمانی را برای بررسی نمودار معماری در https://github.com/GoogleCloudPlatform/cymbal-superstore/blob/main/assets/architecture.png اختصاص دهید. همچنین می توانید نگاهی به کد موجود بیندازید و از Duet برای کمک به درک آن استفاده کنید.
terraform apply

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

9c9d2378167312eb.png

  1. ظاهر خود را به روز کنید تا در خروجی خود با inventory_cr_endpoint پشتیبان صحبت کنید. برای انجام این کار، مقدار inventory_cr_endpoint خود را کپی کنید، cymbal-superstore/frontend/.env.production را باز کنید و مقدار REACT_APP_INVENTORY_URL را جایگزین کنید.
  2. اجرای مجدد terraform apply . این کار فقط یک دقیقه طول می کشد، زیرا برنامه React frontend شما را با استفاده از URL باطن به روز شده در فضای ذخیره سازی ابری مجدداً مستقر می کند.
  3. frontend_ip خود را در مرورگر باز کنید. شما باید صفحه نمایش Cymbal Superstore را ببینید. انتشار تغییرات ممکن است چند دقیقه طول بکشد، بنابراین ممکن است لازم باشد بیش از یک بار بررسی کنید.

b864d3efe9a26eaa.png

  1. روی New Arrivals در سمت چپ صفحه اصلی Cymbal کلیک کنید. شما باید یک صفحه مقدماتی ساختگی با محصولات نگهدارنده مکان ببینید. این مورد انتظار است، زیرا شما کد API Inventory Backend را برای ارائه صفحه محصولات جدید در کار بعدی این آزمایشگاه پیاده سازی خواهید کرد.

f4d7579f73ee8ed2.png

5. باطن برنامه وب را تغییر دهید

بیایید اکنون از Duet AI برای افزودن قابلیت به برنامه وب خود استفاده کنیم.

در این کار، از Duet AI برای تکمیل کد درخواست می‌کنید تا نقطه پایانی /newproducts در برنامه پیاده‌سازی کند. شما یک نقطه پایانی در باطن ایجاد خواهید کرد تا محصولات جدید را از Firestore بازیابی کنید و قبل از اعمال تغییر، این نقطه پایانی را آزمایش کنید.

نقطه پایانی /newproducts را توسعه دهید

  1. فایل cymbal-superstore/backend/index.ts در ویرایشگر Cloud Shell باز کنید.
  2. در فایل index.ts ، به نظر مربوط به DEMO TASK START ، در اطراف خط 95 بروید، جایی که گروهی از خطوط را مشاهده می کنید که برای این کار نظر داده شده اند. تمام خطوط نظر داده شده را حذف کرده و با دستور Duet AI زیر جایگزین کنید:
// Get new products from Firestore (added < 7 days ago) and quantity > 0 (in stock)
  1. برای اینکه از Duet AI بخواهید کد عملکرد را ایجاد کند، کل نظر را انتخاب کنید و سپس روی لامپ ( کد OSS Duet AI لامپ ).
  2. در منوی More Actions، Generate code را انتخاب کنید.
  3. ماوس را روی کد تولید شده نگه دارید و در نوار ابزار Duet AI روی Accept کلیک کنید. Duet AI کد عملکرد نقطه پایانی /newproducts را پر می کند.

توجه: هوش مصنوعی Duet ممکن است چندین نسخه از کد را برای درخواست شما ایجاد کند. می‌توانید با پیمایش در فهرست موجود در نوار ابزار، یک نسخه خاص را انتخاب کنید.

  1. کد تولید شده باید مشابه موارد زیر باشد:
app.get("/newproducts", async (req: Request, res: Response) => {
  const products = await firestore
    .collection("inventory")
    .where("timestamp", ">", new Date(Date.now() - 604800000))
    .where("quantity", ">", 0)
    .get();
  const productsArray: any[] = [];
  products.forEach((product) => {
    const p: Product = {
      id: product.id,
      name: product.data().name,
      price: product.data().price,
      quantity: product.data().quantity,
      imgfile: product.data().imgfile,
      timestamp: product.data().timestamp,
      actualdateadded: product.data().actualdateadded,
    };
    productsArray.push(p);
  });
  res.send(productsArray);
});

ممکن است روی بسیاری از خطوط زیر خط کشیده شود تا به شما در مورد مشکلات احتمالی صدور مجوز هشدار داده شود. برای این آزمایشگاه، می توانید یک Quick Fix اعمال کنید، اما در آینده، این هشدارها را بررسی کنید!

  1. اگر کد تولید شده شما شبیه به مثال مرحله قبل نیست، ممکن است بخواهید اکنون آن را جایگزین کنید یا ببینید Duet چگونه می تواند بعداً به رفع اشکال کمک کند. همچنین نسخه ای از کد با خطای مورد انتظار در فایل scripts/solutioncode-with-bug.ts .
  2. فایل index.ts ذخیره کنید.

تست و رفع اشکال /``newproducts endpoint

  1. در Cloud Shell، به دایرکتوری cymbal-superstore/backend بروید. دستور را وارد کنید:
npm run start

این نقطه پایانی را شروع می کند.

  1. برای مشاهده نتایج نقطه پایانی، ترمینال دیگری را با استفاده از + در نوار منوی Cloud Shell باز کنید و دستور را اجرا کنید:
curl localhost:8000/newproducts

ممکن است curl: (52) Empty reply from server در ترمینال جدید و یک پیام خطای طولانی با جزئیات 'Cannot have inequality filters on multiple properties: [quantity, timestamp]' در پایانه ای که نقطه پایانی را اجرا می کند.

  1. بیایید آن خطا را برطرف کنیم. اما ابتدا باید بفهمیم که پیام خطا به چه معناست. برای انجام این کار، از Duet می خواهیم. Duet AI Chat را از منوی سمت چپ ویرایشگر Cloud Shell باز کنید و موارد زیر را بپرسید:
I'm querying Cloud Firestore and getting this error: 'Cannot have inequality filters on multiple properties: [quantity, timestamp]' What does it mean?

Duet باید چند گزینه برای رفع آن به شما ارائه دهد، از جمله حذف یکی از فیلترهای نابرابری. برای حل، خط .where("quantity", ">", 0) را از index.ts حذف کنید تا فقط یک فیلتر در پرس و جو داشته باشیم.

  1. دو مرحله اول بالا را برای راه اندازی مجدد سرور و دریافت لیست محصولات تکرار کنید. اکنون باید موفقیت آمیز باشد، اما اگر نه، از Duet برای کشف مشکل استفاده کنید (یا از راه حل اصلاح شده در scripts/solutioncode-bug-fixed.ts برای ادامه کار استفاده کنید).

استقرار تغییر

برای استقرار برنامه تغییر یافته، کافی است terraform apply از فهرست terraform در Cloud Shell دوباره اجرا کنید. سپس می توانید برنامه را در آدرس IP ارائه شده توسط Terraform مشاهده کنید.

6. تست های نوشتاری

یک کار مهم که اغلب اولویت بندی نمی شود، ایجاد تست برای کد در یک پروژه است. همانطور که ممکن است متوجه شده باشید، Duet می تواند به ایجاد این تست ها کمک کند.

بیایید برای کد newproducts که به تازگی ایجاد کرده ایم، آزمایش ایجاد کنیم.

  1. backend/index.test.ts را باز کنید. از چت Duet AI برای ایجاد آزمایشی برای newproducts() با اعلان استفاده کنید:
Help me write an Express.js test using Jest, in typescript, for the GET /newproducts handler in index.ts. Should check if the response code is 200 and the list of new products is length 8.

متوجه خواهید شد که خطوط import را ارائه می دهد که از قبل در فایل هستند. فقط تست describe() را در فایل در خطوط نشان داده شده کپی کنید. فایل را ذخیره کنید.

از طرف دیگر، می‌توانید درخواست را بهبود ببخشید و به Duet بگویید هیچ عبارت وارداتی را وارد نکند، بنابراین باید فقط کد مورد نیاز خود را دریافت کنید.

  1. برای مشاهده نتایج تست، به Cloud Shell رفته و دایرکتوری را به پوشه backend تغییر دهید و دستور را اجرا کنید:
npm run test

7. ورود به سیستم

هوش مصنوعی Duet می تواند به پروژه شما حتی پس از استقرار آن کمک کند. در این بخش به بررسی لاگ ها با کمک هوش مصنوعی Duet می پردازیم.

به کنسول Cloud برگردید و مطمئن شوید که Duet در حال اجرا است. از Duet بپرسید که کجا سیاههها را پیدا کنید. به راحتی می توانید درخواست خود را امتحان کنید، اما اگر پاسخ مناسبی نداد، دستور زیر باید کار کند.

How can I view the Cloud Run logs for the service called 'inventory'?

Duet AI باید پیشنهاد کند که به صفحه Cloud Run بروید، سرویس موجودی را انتخاب کنید و سپس گزارش‌های آن سرویس را بررسی کنید. شما باید چیزی شبیه به:

b7c50b67e49ee71a.png

یکی از موارد را انتخاب کنید و از Duet AI بخواهید آن را توضیح دهد. شما باید شرح ورودی را به زبان طبیعی دریافت کنید.

همچنین می توانید Log Entries را در Logs Explorer مشاهده کنید که می توانید از گزینه Logging در منوی اصلی باز کنید. مزیت مشاهده ورودی‌های گزارش از Logs Explorer این است که گزینه توضیح ورودی‌ها، همانطور که در زیر نشان داده شده است، تعبیه شده است:

2574adab06524ad4.png

8. تبریک!

تبریک - شما با موفقیت از هوش مصنوعی Duet برای کمک به درک کدهایی که ممکن است قبلاً هرگز ندیده اید استفاده کنید. شما این کد را بهبود بخشیده اید، آزمایش هایی برای آن ایجاد کرده اید و از Duet برای کمک به درک ورودی های گزارش استفاده کرده اید.

پاکسازی

حذف پروژه

برای پاکسازی، ما به سادگی پروژه خود را حذف می کنیم.

  • در منوی پیمایش IAM & Admin را انتخاب کنید
  • سپس در زیر منو روی تنظیمات کلیک کنید
  • روی نماد سطل زباله با متن "حذف پروژه" کلیک کنید.
  • دستورالعمل های فرمان را دنبال کنید

در این آزمایشگاه، ما دیدیم که چگونه:

  • با کمک Duet AI یک برنامه وب موجود را بهبود بخشید.
  • برنامه را در Cloud Run مستقر کنید.
  • از Duet AI بخواهید یک خطا در برنامه را توضیح دهد و یک راه حل ارائه دهد.
  • با کمک هوش مصنوعی Duet، آزمایش هایی را برای برنامه توسعه دهید.
  • گزارش های برنامه را با کمک Duet AI مشاهده کنید.