জেমিনি কোড অ্যাসিস্টের মাধ্যমে আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোকে সুপারচার্জ করুন

1. ভূমিকা

e5b98fd4e417c877.png সম্পর্কে

এই কোডল্যাবে, আপনি দেখবেন কিভাবে জেমিনি কোড অ্যাসিস্ট আপনাকে সফটওয়্যার ডেভেলপমেন্ট লাইফ সাইকেল (SDLC) এর মূল পর্যায়ে যেমন ডিজাইন, বিল্ড এবং টেস্ট এবং ডিপ্লয়মেন্টে সহায়তা করতে পারে। আমরা একটি সম্পূর্ণ অ্যাপ্লিকেশন ডিজাইন এবং ডেভেলপ করব এবং এটি গুগল ক্লাউডে ডিপ্লয় করব।

আমরা একটি টেকনিক্যাল ইভেন্টে সেশন জুড়ে অনুসন্ধানের জন্য একটি API এবং অ্যাপ্লিকেশন তৈরি করব। প্রতিটি সেশনের একটি শিরোনাম, সারাংশ, সময়কাল, বিভাগ এবং এক বা একাধিক স্পিকার থাকবে।

তুমি কি করবে

  • শুরু থেকেই একটি OpenAPI স্পেসিফিকেশনের উপর ভিত্তি করে একটি ওয়েব অ্যাপ্লিকেশন ডিজাইন, তৈরি, পরীক্ষা এবং স্থাপন করুন

তুমি কি শিখবে

  • OpenAPI স্পেসিফিকেশন তৈরি করতে জেমিনি কোড অ্যাসিস্ট কীভাবে ব্যবহার করবেন
  • OpenAPI স্পেসিফিকেশনের জন্য পাইথন ফ্লাস্ক অ্যাপ্লিকেশন তৈরি করতে জেমিনি কোড অ্যাসিস্ট কোড জেনারেশন বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করবেন
  • পাইথন ফ্লাস্ক অ্যাপ্লিকেশনের জন্য একটি ওয়েব ফ্রন্ট-এন্ড তৈরি করতে জেমিনি কোড অ্যাসিস্ট কীভাবে ব্যবহার করবেন
  • গুগল ক্লাউড রানে অ্যাপ্লিকেশনটি কীভাবে স্থাপন করবেন সে সম্পর্কে সহায়তা পেতে জেমিনি কোড অ্যাসিস্ট কীভাবে ব্যবহার করবেন
  • অ্যাপ্লিকেশন তৈরি এবং পরীক্ষা করার সময় কোড ব্যাখ্যা, টেস্ট কেস জেনারেশনের মতো জেমিনি কোড অ্যাসিস্ট বৈশিষ্ট্যগুলি ব্যবহার করুন।

তোমার যা লাগবে

  • ক্রোম ওয়েব ব্রাউজার
  • একটি জিমেইল অ্যাকাউন্ট
  • বিলিং সক্ষম করা একটি ক্লাউড প্রকল্প
  • আপনার ক্লাউড প্রজেক্টের জন্য জেমিনি কোড অ্যাসিস্ট সক্ষম করা হয়েছে

এই ল্যাবটি সকল স্তরের ডেভেলপারদের জন্য তৈরি, যার মধ্যে নতুনরাও অন্তর্ভুক্ত। যদিও নমুনা অ্যাপ্লিকেশনটি পাইথন ভাষায়, তবে কী ঘটছে তা বোঝার জন্য আপনাকে পাইথন প্রোগ্রামিং সম্পর্কে জানতে হবে না। আমাদের লক্ষ্য হবে জেমিনি কোড অ্যাসিস্টের ক্ষমতার সাথে পরিচিত হওয়া।

২. জেমিনি কোড অ্যাসিস্ট সেটআপ করুন

এই ল্যাবটি শুরু করার জন্য আপনার যা যা করণীয় তা এই বিভাগে আলোচনা করা হয়েছে।

ক্লাউড শেল IDE-তে জেমিনি কোড অ্যাসিস্ট সক্ষম করুন

কোডল্যাবের বাকি অংশের জন্য আমরা ক্লাউড শেল আইডিই ব্যবহার করব, যা একটি সম্পূর্ণরূপে পরিচালিত কোড ওএসএস- ভিত্তিক ডেভেলপমেন্ট পরিবেশ। আমাদের ক্লাউড শেল আইডিইতে কোড অ্যাসিস্ট সক্ষম এবং কনফিগার করতে হবে এবং ধাপগুলি নীচে দেওয়া হল:

  1. ide.cloud.google.com ওয়েবসাইটটি দেখুন। IDE প্রদর্শিত হতে কিছুটা সময় লাগতে পারে, তাই ধৈর্য ধরুন এবং যেকোনো সেটআপ ডিফল্ট পছন্দ গ্রহণ করুন। যদি আপনি IDE সেটআপ করার জন্য কিছু নির্দেশাবলী দেখতে পান, তাহলে অনুগ্রহ করে এগিয়ে যান এবং ডিফল্ট সেটিংস সহ সেগুলি সম্পূর্ণ করুন।
  2. নীচের স্ট্যাটাস বারে দেখানো ক্লাউড কোড - সাইন ইন বোতামে ক্লিক করুন। নির্দেশ অনুসারে প্লাগইনটি অনুমোদন করুন। যদি আপনি স্ট্যাটাস বারে "ক্লাউড কোড - কোনও প্রকল্প নয়" দেখতে পান, তাহলে সেটি নির্বাচন করুন এবং তারপরে আপনি যে প্রকল্পগুলির সাথে কাজ করার পরিকল্পনা করছেন তার তালিকা থেকে নির্দিষ্ট গুগল ক্লাউড প্রকল্পটি নির্বাচন করুন।

6f5ce865fc7a3ef5.png সম্পর্কে

  1. নীচের ডান কোণে দেখানো কোড অ্যাসিস্ট বোতামে ক্লিক করুন এবং সঠিক গুগল ক্লাউড প্রকল্পটি শেষবারের মতো নির্বাচন করুন। যদি আপনাকে ক্লাউড এআই কম্প্যানিয়ন API সক্ষম করতে বলা হয়, তাহলে দয়া করে তা করুন এবং এগিয়ে যান।
  2. একবার আপনি আপনার গুগল ক্লাউড প্রজেক্টটি নির্বাচন করার পরে, নিশ্চিত করুন যে আপনি স্ট্যাটাস বারে ক্লাউড কোড স্ট্যাটাস বার্তায় এটি দেখতে পাচ্ছেন এবং নীচে দেখানো স্ট্যাটাস বারে ডানদিকে কোড অ্যাসিস্ট সক্ষম করা আছে:

709e6c8248ac7d88.png সম্পর্কে

জেমিনি কোড অ্যাসিস্ট ব্যবহারের জন্য প্রস্তুত!

৩. ফায়ারস্টোর সেটআপ করুন

ক্লাউড ফায়ারস্টোর হল একটি সম্পূর্ণরূপে পরিচালিত সার্ভারলেস ডকুমেন্ট ডাটাবেস যা আমরা আমাদের অ্যাপ্লিকেশন ডেটার জন্য ব্যাকএন্ড হিসাবে ব্যবহার করব। ক্লাউড ফায়ারস্টোরের ডেটা নথির সংগ্রহে গঠন করা হয়।

আমাদের ডিফল্ট ফায়ারস্টোর ডাটাবেসে sessions নামে একটি সংগ্রহ তৈরি করতে হবে। এই সংগ্রহে নমুনা ডেটা (ডকুমেন্ট) থাকবে যা আমরা আমাদের অ্যাপ্লিকেশনে ব্যবহার করব।

আপনার ক্লাউড শেল IDE এর ভেতর থেকে নীচে দেখানো প্রধান মেনু দিয়ে টার্মিনালটি খুলুন:

f1535e14c9beeec6.png সম্পর্কে

আমাদের sessions নামে একটি সংগ্রহ তৈরি করতে হবে। এতে নমুনা সেশন ডকুমেন্টের একটি তালিকা থাকবে। প্রতিটি ডকুমেন্টে নিম্নলিখিত বৈশিষ্ট্য থাকবে:

  1. শিরোনাম : স্ট্রিং
  2. বিভাগ : স্ট্রিং অ্যারে
  3. স্পিকার : স্ট্রিং এর অ্যারে
  4. সময়কাল : স্ট্রিং
  5. সারাংশ : স্ট্রিং

আসুন, আপনার নিজস্ব প্রজেক্টের একটি বাকেটের মধ্যে নমুনা ডেটা ধারণকারী একটি ফাইল কপি করে এই সংগ্রহটি নমুনা ডেটা দিয়ে পূর্ণ করি, যেখান থেকে আপনি gcloud firestore import কমান্ডের মাধ্যমে সংগ্রহটি আমদানি করতে পারেন।

ফায়ারস্টোর ডাটাবেস আরম্ভকরণ

ক্লাউড কনসোলে ফায়ারস্টোর পৃষ্ঠাটি দেখুন।

যদি আপনি আগে প্রকল্পে ফায়ারস্টোর ডাটাবেস শুরু না করে থাকেন, তাহলে default ডাটাবেস তৈরি করুন। ডাটাবেস তৈরির সময়, নিম্নলিখিত মানগুলি অনুসরণ করুন:

  • ফায়ারস্টোর মোড: Native
  • অবস্থান: Region হিসেবে অবস্থানের ধরণটি নির্বাচন করুন এবং আপনার আবেদনের জন্য উপযুক্ত অঞ্চলটি নির্বাচন করুন। এই অবস্থানটি নোট করুন কারণ বাকেট অবস্থানের জন্য পরবর্তী ধাপে আপনার এটির প্রয়োজন হবে।
  • ডাটাবেস তৈরি করুন।

504cabdb99a222a5.png সম্পর্কে

আমরা এখন নীচের ধাপগুলি অনুসরণ করে sessions সংগ্রহ তৈরি করব:

  1. নিচে দেওয়া gsutil কমান্ড দিয়ে তোমার প্রোজেক্টে একটি বাকেট তৈরি করো। নিচের কমান্ডের <PROJECT_ID> ভেরিয়েবলটি তোমার Google Cloud Project Id দিয়ে প্রতিস্থাপন করো। <BUCKET_LOCATION> এর পরিবর্তে তোমার ডিফল্ট Firestore ডাটাবেসের Geographic Area এর সাথে সম্পর্কিত একটি অঞ্চলের নাম দাও (যেমন পূর্ববর্তী ধাপে উল্লেখ করা হয়েছে), এটি US-WEST1, EUROPE-WEST1, ASIA-EAST1 হতে পারে:
gsutil mb -l <BUCKET-LOCATION> gs://<PROJECT_ID>-my-bucket
  1. এখন বাকেটটি তৈরি হয়ে গেছে, ফায়ারবেস ডাটাবেসে আমদানি করার আগে আমাদের প্রস্তুত করা ডাটাবেস এক্সপোর্টটি এই বাকেটটিতে কপি করতে হবে। নীচের কমান্ডটি ব্যবহার করুন:
gsutil cp -r gs://sessions-master-database-bucket/2024-03-26T09:28:15_95256  gs://<PROJECT_ID>-my-bucket

এখন যেহেতু আমাদের কাছে আমদানি করার জন্য ডেটা আছে, আমরা আমাদের তৈরি করা Firebase ডাটাবেসে ( default ) ডেটা আমদানির চূড়ান্ত ধাপে যেতে পারি।

  1. নিচে দেওয়া gcloud কমান্ডটি ব্যবহার করুন:
gcloud firestore import gs://<PROJECT_ID>-my-bucket/2024-03-26T09:28:15_95256

আমদানিটি কয়েক সেকেন্ড সময় নেবে এবং এটি প্রস্তুত হয়ে গেলে, আপনি https://console.cloud.google.com/firestore/databases এ গিয়ে আপনার Firestore ডাটাবেস এবং সংগ্রহটি যাচাই করতে পারেন, নীচে দেখানো হিসাবে default ডাটাবেস এবং sessions সংগ্রহ নির্বাচন করুন:

d3e294d46ba29cd5.png সম্পর্কে

এটি আমাদের অ্যাপ্লিকেশনে ব্যবহার করা ফায়ারস্টোর সংগ্রহের তৈরি সম্পূর্ণ করে।

৪. অ্যাপ্লিকেশন টেমপ্লেট তৈরি করুন

আমরা একটি নমুনা অ্যাপ্লিকেশন (একটি পাইথন ফ্লাস্ক অ্যাপ্লিকেশন) তৈরি করব যা আমরা কোডল্যাবের বাকি অংশে ব্যবহার করব। এই অ্যাপ্লিকেশনটি একটি প্রযুক্তিগত সম্মেলনে প্রদত্ত সেশনগুলি অনুসন্ধান করবে।

এই পদক্ষেপগুলি অনুসরণ করুন:

  1. নিচের স্ট্যাটাস বারে গুগল ক্লাউড প্রোজেক্টের নামের উপর ক্লিক করুন।

f151759c156c124e.png সম্পর্কে

  1. বিকল্পগুলির একটি তালিকা প্রদর্শিত হবে। নীচের তালিকা থেকে New Application- এ ক্লিক করুন।

91ea9836f38b7f74.png সম্পর্কে

  1. ক্লাউড রান অ্যাপ্লিকেশন নির্বাচন করুন (এটি আমাদের অ্যাপের রানটাইম হবে)।
  2. পাইথন (ফ্লাস্ক): ক্লাউড রান অ্যাপ্লিকেশন টেমপ্লেটটি নির্বাচন করুন।
  3. অ্যাপ্লিকেশনটির একটি নাম দিন এবং আপনার পছন্দের স্থানে এটি সংরক্ষণ করুন।
  4. একটি বিজ্ঞপ্তি নিশ্চিত করে যে আপনার অ্যাপ্লিকেশন তৈরি করা হয়েছে, এবং নীচে দেখানো হিসাবে আপনার অ্যাপ্লিকেশন লোড করা একটি নতুন উইন্ডো খুলবে। একটি README.md ফাইল খোলা হবে। আপনি আপাতত সেই ভিউটি বন্ধ করতে পারেন।

aaa3725b17ce27cf.png সম্পর্কে

৫. জেমিনি কোড অ্যাসিস্টের সাথে ইন্টারঅ্যাক্ট করা

এই ল্যাবের উদ্দেশ্যে, আমরা VS কোডে ক্লাউড কোড এক্সটেনশনের অংশ হিসেবে ক্লাউড শেল IDE-এর ভিতরে উপলব্ধ জেমিনি কোড অ্যাসিস্ট চ্যাট ব্যবহার করব। আপনি বাম নেভিগেশন বারে কোড অ্যাসিস্ট বোতামে ক্লিক করে এটি আনতে পারেন। কোড অ্যাসিস্ট আইকনটি সন্ধান করুন। a489f98a34898727.png সম্পর্কে বাম নেভিগেশন টুলবারে এবং সেটির উপর ক্লিক করুন।

এটি ক্লাউড শেল IDE-এর ভিতরে কোড অ্যাসিস্ট চ্যাট প্যানটি আনবে এবং আপনি কোড অ্যাসিস্টের সাথে চ্যাট করতে পারবেন।

14ad103efaa0ddaa.png সম্পর্কে

উপরে ট্র্যাশ ক্যান আইকনটি লক্ষ্য করুন - কোড অ্যাসিস্ট চ্যাট ইতিহাসের প্রসঙ্গটি পুনরায় সেট করার এটি আপনার উপায়। আরও মনে রাখবেন যে এই চ্যাট ইন্টারঅ্যাকশনটি আপনি IDE-তে যে ফাইল(গুলি) নিয়ে কাজ করছেন তার সাথে প্রাসঙ্গিক।

৬. এপিআই ডিজাইন

আমাদের প্রথম পদক্ষেপ হবে ডিজাইন পর্বের সময় জেমিনি কোড অ্যাসিস্টের সহায়তা নেওয়া। এই ধাপে, আমরা যে সত্তাগুলি (একটি ইভেন্টে প্রযুক্তিগত সেশন) অনুসন্ধান করতে চাই তার জন্য একটি OpenAPI স্পেসিফিকেশন তৈরি করব।

নিম্নলিখিত প্রম্পট দিন:

Generate an Open API spec that will allow me to retrieve all sessions, sessions by category, session by id. Each session has the following attributes: id, title, list of speakers, list of categories, summary and duration.

এটি বিভিন্ন কোয়েরি প্যারামিটারের মাধ্যমে সেশন জুড়ে অনুসন্ধানের জন্য একটি OpenAPI স্পেসিফিকেশন তৈরি করবে। স্পেসিফিকেশন নমুনা নীচে দেওয়া হল:

openapi: 3.0.0
info:
 title: Sessions API
 description: This API allows you to retrieve all sessions, sessions by category, and session by id.
 version: 1.0.0
servers:
 - url: https://sessions.example.com
paths:
 /sessions:
   get:
     summary: Get all sessions
     operationId: getSessions
     responses:
       '200':
         description: OK
         content:
           application/json:
             schema:
               type: array
               items:
                 $ref: '#/components/schemas/Session'
 /sessions/{id}:
   get:
     summary: Get session by id
     operationId: getSessionById
     parameters:
       - name: id
         in: path
         required: true
         description: The id of the session
         schema:
           type: string
     responses:
       '200':
         description: OK
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/Session'
 /sessions/categories/{category}:
   get:
     summary: Get sessions by category
     operationId: getSessionsByCategory
     parameters:
       - name: category
         in: path
         required: true
         description: The category of the sessions
         schema:
           type: string
     responses:
       '200':
         description: OK
         content:
           application/json:
             schema:
               type: array
               items:
                 $ref: '#/components/schemas/Session'
components:
 schemas:
   Session:
     type: object
     properties:
       id:
         type: string
         description: The id of the session
       title:
         type: string
         description: The title of the session
       speakers:
         type: array
         items:
           type: string
         description: The list of speakers for the session
       categories:
         type: array
         items:
           type: string
         description: The list of categories for the session
       summary:
         type: string
         description: The summary of the session
       duration:
         type: string
         description: The duration of the session

আপনি লক্ষ্য করতে পারেন যে স্পেসিফিকেশনটিতে নিম্নলিখিতগুলি রয়েছে:

  • সেশন ধরণের জন্য সংজ্ঞায়িত একটি স্কিমা।
  • বেশ কয়েকটি API পাথ সংজ্ঞায়িত করা হয়েছে:
  • /sessions
  • /sessions/{id}
  • /sessions/categories/{category}

উপরের ফোল্ডারে sessionsapi.yaml নামে একটি ফাইল তৈরি করুন এবং "insert in current file অপশন" ( + বোতাম) ব্যবহার করে কোড অ্যাসিস্ট চ্যাট উইন্ডো থেকে কন্টেন্টটি কপি করুন এবং ফাইলটি ক্লাউড শেল IDE-তে খোলা রাখুন।

এই মুহুর্তে, আপনি জেমিনি কোড অ্যাসিস্টের একটি আকর্ষণীয় বৈশিষ্ট্য লক্ষ্য করতে পারেন: উদ্ধৃতি । এই তথ্য ডেভেলপারের কাছে তখনই আসে যখন জেনারেট করা কোডটি সরাসরি অন্য কোনও উৎস থেকে, যেমন বিদ্যমান ওপেন সোর্স কোড থেকে বিস্তারিতভাবে উদ্ধৃত করে। এটি ডেভেলপারকে এটি দিয়ে কী করতে হবে তা সিদ্ধান্ত নেওয়ার জন্য উৎস এবং লাইসেন্স প্রদান করে।

ধরে নিচ্ছি যে আমরা তৈরি করা কন্টেন্টের সাথে ঠিক আছি, আমরা এখন এই স্পেসিফিকেশন ডকুমেন্টটি ব্যবহার করে এর জন্য একটি পাইথন ফ্লাস্ক অ্যাপ্লিকেশন তৈরি করতে পারি।

৭. অ্যাপ্লিকেশন তৈরি করুন

এখন আমরা কোড অ্যাসিস্টকে অ্যাপ্লিকেশনটি তৈরি করতে বলব। sessionsapi.yaml ফাইলটি খোলার সাথে সাথে নিম্নলিখিত প্রম্পটটি দিন।

Generate a Python Application using the Flask framework, based on the sessionsapi.yaml file. This application uses a local in memory list of sessions. Do not use any Flask extensions.

এটি আপনাকে পাইথন ফ্লাস্ক অ্যাপ্লিকেশনের জন্য একটি স্কেলেটন প্রদান করবে যা OpenAPI স্পেসিফিকেশন ফাইলে নির্দিষ্ট করা কার্যকারিতা এবং পাথের উপর ভিত্তি করে তৈরি।

পাইথন ফ্লাস্ক অ্যাপ্লিকেশন কোডটি নিম্নলিখিত কোডের মতো হওয়া উচিত:

from flask import Flask, jsonify, request

app = Flask(__name__)

sessions = [
    {
        "id": "1",
        "title": "Session 1",
        "speakers": ["Speaker 1", "Speaker 2"],
        "categories": ["Category 1", "Category 2"],
        "summary": "This is a summary of session 1.",
        "duration": "1 hour",
    },
    {
        "id": "2",
        "title": "Session 2",
        "speakers": ["Speaker 3", "Speaker 4"],
        "categories": ["Category 3", "Category 4"],
        "summary": "This is a summary of session 2.",
        "duration": "1 hour 30 minutes",
    },
]

@app.route('/sessions', methods=['GET'])
def get_sessions():
    return jsonify(sessions)

@app.route('/sessions/<id>', methods=['GET'])
def get_session_by_id(id):
    session = next((session for session in sessions if session['id'] == id), None)
    if session is None:
        return jsonify({}), 404
    return jsonify(session)

@app.route('/sessions/categories/<category>', methods=['GET'])
def get_sessions_by_category(category):
    sessions_by_category = [session for session in sessions if category in session['categories']]
    return jsonify(sessions_by_category)

if __name__ == '__main__':
    app.run()

পূর্ববর্তী ধাপের অংশ হিসেবে একটি বিদ্যমান app.py ফাইল তৈরি করা হয়েছে। কেবল কোড অ্যাসিস্ট দ্বারা তৈরি কোড দিয়ে এর বিষয়বস্তু প্রতিস্থাপন করুন এবং ফাইলটি সংরক্ষণ করুন।

আমরা app.run() লাইনটি পোর্ট 8080, হোস্ট ঠিকানা 0.0.0.0 ব্যবহার করতে চাই, এবং স্থানীয় এক্সিকিউশনের সময় ডিবাগ মোডেও চালাতে চাই। এটি করার একটি উপায় এখানে। প্রথমে, লাইনটি হাইলাইট/সিলেক্ট করা যাক:

app.run()

তারপর, কোড অ্যাসিস্ট চ্যাট ইন্টারফেসে, প্রম্পটটি টাইপ করুন: Explain this.

এটিতে সেই নির্দিষ্ট লাইনের একটি বিস্তারিত ব্যাখ্যা দেখানো উচিত, যার একটি উদাহরণ নীচে দেখানো হয়েছে:

58ec896a32a4fb68.png সম্পর্কে

এখন, নিম্নলিখিত প্রম্পটটি ব্যবহার করুন:

update the code to run the application on port 8080, host address 0.0.0.0, and in debug mode

তৈরি করা প্রস্তাবিত কোডটি নিম্নরূপ হওয়া উচিত: :

app.run(host='0.0.0.0', port=8080, debug=True)

এই স্নিপেট দিয়ে app.py ফাইলটি আপডেট করতে ভুলবেন না।

স্থানীয়ভাবে অ্যাপ্লিকেশনটি চালান

আমরা যা শুরু করেছিলাম সেই অনুযায়ী আবেদনের প্রয়োজনীয়তা যাচাই করার জন্য এখনই স্থানীয়ভাবে অ্যাপ্লিকেশনটি চালাই।

প্রথম ধাপ হল ভার্চুয়াল পরিবেশে ইনস্টল করার জন্য requirements.txt ফাইলে Python প্যাকেজ নির্ভরতা সহ একটি ভার্চুয়াল পাইথন পরিবেশ তৈরি করা। এটি করার জন্য, Cloud Shell IDE-তে Command Palette (Ctrl+Shift+P) এ যান এবং Create Python environment টাইপ করুন। একটি Virtual Environment (venv) , Python 3.x ইন্টারপ্রেটার এবং requirements.txt ফাইল নির্বাচন করতে পরবর্তী কয়েকটি ধাপ অনুসরণ করুন।

পরিবেশ তৈরি হয়ে গেলে, একটি নতুন টার্মিনাল উইন্ডো (Ctrl+Shift+`) চালু করুন এবং নিম্নলিখিত কমান্ডটি দিন:

python app.py

একটি নমুনা সম্পাদন নীচে দেখানো হয়েছে:

(.venv) romin@cloudshell: $ python app.py 
 * Serving Flask app 'app'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:8080
 * Running on http://10.88.0.3:8080
Press CTRL+C to quit
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 132-247-368

আপনি এখন নিম্নলিখিত URL গুলিতে API এর প্রিভিউ দেখতে পারবেন। আমরা ধরে নিচ্ছি যে আপনার ডেভেলপমেন্ট সার্ভারটি 8080 পোর্টে চলছে। যদি না হয়, তাহলে অনুগ্রহ করে এটিকে উপযুক্ত পোর্ট নম্বরে পরিবর্তন করুন।

  • https://<host-name>:8080/sessions
  • https://<host-name>:8080/sessions/{id}
  • https://<host-name>:8080/sessions/categories/{category}

app.py ফাইলে থাকা JSON ডেটা, এই URL গুলি ব্যবহার করে পুনরুদ্ধার করতে আপনি যাতে সক্ষম হন তা নিশ্চিত করতে নীচের ধাপগুলি অনুসরণ করুন:

একটি নতুন টার্মিনাল উইন্ডো খুলুন এবং নিম্নলিখিত যেকোনো কমান্ড ব্যবহার করে দেখুন:

curl -X GET http://127.0.0.1:8080/sessions
curl -X GET http://127.0.0.1:8080/sessions/<ID>
curl -X GET http://127.0.0.1:8080/sessions/categories/<CATEGORY_NAME> 

৮. কোড রিফ্যাক্টরিং

app.py হার্ড-কোডেড নমুনা JSON ডেটা রাখার পরিবর্তে, আমরা সম্ভবত এটিকে অন্য একটি মডিউলে আলাদা/এক্সট্র্যাক্ট করতে চাই, যাতে আমরা কোড এবং ডেটার মধ্যে একটি পরিষ্কার বিচ্ছেদ বজায় রাখতে পারি। আসুন এটি করি!

app.py ফাইলটি খোলা রাখুন এবং নিম্নলিখিত প্রম্পটটি দিন:

Can I improve this code and separate out the sessions data from this app.py file?

এটি কীভাবে করবেন সে সম্পর্কে এটি আপনাকে কিছু পরামর্শ দেবে। একটি নমুনা পরামর্শ যা আমরা পেয়েছি এবং আপনারও এর মতো কিছু পাওয়া উচিত, তা নীচে দেখানো হয়েছে:

9b9c56cb527dac4c.png - [অনলাইন].

আসুন আমরা এটি অনুসরণ করি এবং কোড অ্যাসিস্টের পরামর্শ অনুযায়ী আমাদের ডেটা sessions.py ফাইলে আলাদা করি।

sessions.py নামে একটি নতুন ফাইল তৈরি করুন।

, যার বিষয়বস্তু হল JSON তালিকা, আমাদের তৈরি করা ডেটা অনুসারে নীচে দেওয়া হল:

sessions = [
   {
       "id": "1",
       "title": "Session 1",
       "speakers": ["Speaker 1", "Speaker 2"],
       "categories": ["Category 1", "Category 2"],
       "summary": "This is a summary of session 1.",
       "duration": "1 hour",
   },
   {
       "id": "2",
       "title": "Session 2",
       "speakers": ["Speaker 3", "Speaker 4"],
       "categories": ["Category 3", "Category 4"],
       "summary": "This is a summary of session 2.",
       "duration": "1 hour 30 minutes",
   },
]

app.py ফাইলটি এখন অনেক সরলীকৃত এবং নিচে দেখানো হয়েছে:

from flask import Flask, jsonify, request
from sessions import sessions

app = Flask(__name__)

@app.route('/sessions', methods=['GET'])
def get_sessions():
   return jsonify(sessions.sessions)

@app.route('/sessions/<id>', methods=['GET'])
def get_session_by_id(id):
   session = next((session for session in sessions.sessions if session['id'] == id), None)
   if session is None:
       return jsonify({}), 404
   return jsonify(session)

@app.route('/sessions/categories/<category>', methods=['GET'])
def get_sessions_by_category(category):
   sessions_by_category = [session for session in sessions.sessions if category in session['categories']]
   return jsonify(sessions_by_category)

if __name__ == '__main__':
   app.run(host='0.0.0.0', port=8080, debug=True)

নিশ্চিত করুন যে আপনি এখনও স্থানীয়ভাবে অ্যাপ্লিকেশনটি চালাতে সক্ষম এবং এই রিফ্যাক্টর করা পরিবর্তনগুলি সহ API ব্যবহার করতে পারেন। পাইথন ডেভেলপমেন্ট সার্ভারটি এখনও চলমান থাকার সম্ভাবনা রয়েছে তাই আপনাকে কেবল পূর্ববর্তী ধাপ থেকে curl কমান্ডগুলি মনে রাখতে হবে।

৯. ফায়ারস্টোর কালেকশনের সাথে একীভূত করুন

পরবর্তী ধাপ হল আমাদের সেশনের জন্য থাকা স্থানীয় ইন-মেমরি JSON তালিকা থেকে সরে আসা এবং এই কোডল্যাবের শুরুতে তৈরি করা ফায়ারস্টোর ডাটাবেসের সেশন সংগ্রহের সাথে আমাদের অ্যাপ্লিকেশনটি সংযুক্ত করা।

sessions.py ফাইলটি খোলা রাখুন এবং নিম্নলিখিত প্রম্পটটি দিন:

Can you further refactor the sessions.py code to read from a Firestore database that has a collection named sessions. The collection has the same attributes as the session object that we have defined. Use the Python module google-cloud-firestore. 

ফায়ারস্টোর সংগ্রহ থেকে সমস্ত সেশন পড়ার জন্য আমরা নিম্নলিখিত পরামর্শ পেয়েছি:

import google.cloud.firestore

# Create a Firestore client
db = google.cloud.firestore.Client()

# Get the sessions collection
sessions_collection = db.collection("sessions")

# Create a list of sessions
sessions = []

# Iterate over the documents and add them to the list
for doc in sessions_collection.stream():
   session = doc.to_dict()
   session["id"] = doc.id
   sessions.append(session)

এগিয়ে যান এবং sessions.py এ কোডটি অন্তর্ভুক্ত করুন।

যদি আপনার ফ্লাস্ক ডেভেলপমেন্ট সার্ভারটি স্থানীয়ভাবে চালু থাকে, তাহলে আপনার অ্যাপ্লিকেশনটি পাইথন মডিউল খুঁজে না পাওয়ার অভিযোগে বন্ধ হয়ে যেতে পারে।

উদাহরণস্বরূপ, আপনি কোড অ্যাসিস্টকে জিজ্ঞাসা করতে পারেন, requirements.txt ফাইলে কোন পাইথন মডিউল যোগ করা প্রয়োজন, নিম্নরূপ:

Which Python package needs to be installed to make the firestore code work?

এটি আপনাকে পাইথন মডিউলের নাম দেবে (যেমন google-cloud-firestore )। এটি requirements.txt ফাইলে যোগ করুন।

নতুন যোগ করা মডিউল ( google-cloud-firestore ) দিয়ে আপনাকে পাইথন পরিবেশ পুনরায় তৈরি করতে হবে। এটি করার জন্য, বিদ্যমান টার্মিনাল উইন্ডোতে নিম্নলিখিত কমান্ডটি দিন:

pip install -r requirements.txt

অ্যাপ্লিকেশনটি আবার চালান ( python app.py দিয়ে পুনরায় চালু করুন) এবং /sessions URL দেখুন। এখন আপনার sessions সংগ্রহে যোগ করা নমুনা নথিগুলি পাওয়া উচিত।

975d05e6518f1a6a.png সম্পর্কে

পূর্ববর্তী ধাপগুলিতে বর্ণিত নির্দিষ্ট সেশন বা একটি নির্দিষ্ট বিভাগের জন্য সমস্ত সেশন পুনরুদ্ধার করতে অন্যান্য URI গুলি জিজ্ঞাসা করতে দ্বিধা করবেন না।

১০. কোড ব্যাখ্যা

কোডটি ভালোভাবে বোঝার জন্য জেমিনি কোড অ্যাসিস্টের "Explain this" বৈশিষ্ট্যটি ব্যবহার করার এখনই উপযুক্ত সময়। যেকোনো ফাইলে যেতে পারেন অথবা কোডের নির্দিষ্ট স্নিপেট নির্বাচন করতে পারেন এবং নিম্নলিখিত প্রম্পট দিয়ে কোড অ্যাসিস্টকে জিজ্ঞাসা করতে পারেন: Explain this

অনুশীলন হিসেবে, sessions.py ফাইলটি দেখুন এবং Firestore নির্দিষ্ট কোডটি হাইলাইট করুন এবং কোডের ব্যাখ্যা পান। শুধুমাত্র পাইথন কোড নয়, আপনার প্রকল্পের অন্যান্য ফাইলগুলিতেও এই বৈশিষ্ট্যটি ব্যবহার করার চেষ্টা করুন।

১১. ওয়েব অ্যাপ্লিকেশন তৈরি করুন

এখন যেহেতু আমরা API তৈরি করেছি এবং এটিকে একটি লাইভ Firestore সংগ্রহের সাথে একীভূত করেছি, আসুন আমরা অ্যাপ্লিকেশনটির জন্য একটি ওয়েব-ভিত্তিক ফ্রন্ট-এন্ড তৈরি করি। আমাদের ওয়েব ফ্রন্ট-এন্ড বর্তমানে এর কার্যকারিতা সর্বনিম্ন রাখবে, অর্থাৎ একটি নির্দিষ্ট বিভাগের সেশনগুলি অনুসন্ধান করতে সক্ষম হবে। মনে রাখবেন যে আমাদের কাছে এর জন্য একটি API পাথ আছে অর্থাৎ /sessions/categories/{category} তাই আমাদের ওয়েব অ্যাপ্লিকেশনটি এটিকে আহ্বান করবে এবং ফলাফলগুলি পুনরুদ্ধার করবে।

আসুন সরাসরি এতে ডুব দেওয়া যাক। কোড অ্যাসিস্টকে নিম্নলিখিত প্রম্পট দিন:

Generate a web application that allows me to search for sessions by category and uses the Flask application that we created. Please use basic HTML, CSS and JS. Embed all the Javascript and CSS code into a single HTML file only.

এটি জাভাস্ক্রিপ্ট এবং CSS এমবেড করে ওয়েব অ্যাপ্লিকেশন HTML তৈরি করবে। এটি আপনাকে app.py ফাইলে একটি নতুন রুট যোগ করতে বলবে, যাতে রুট বা বেস URL-এ প্রবেশকারী যেকোনো ব্যবহারকারীকে হোম পেজে দেখানো হবে। যদি এটিতে সেই তথ্য উল্লেখ না থাকে, তাহলে এটি সম্পর্কে জিজ্ঞাসা করুন অথবা নীচের স্নিপেটটি ব্যবহার করুন:

@app.route('/')
def index():
   return render_template('index.html')

আপনি এটি index.html হিসেবে সংরক্ষণ করতে পারেন কিন্তু এই ফাইলটি কোথায় সংরক্ষণ করা উচিত (যেমন কোন ফোল্ডার?) সে সম্পর্কে আপনার একটি প্রশ্ন থাকতে পারে। আমরা কোড অ্যাসিস্টকে একটি ফলো-আপ প্রশ্ন জিজ্ঞাসা করতে পারি।

Given that I am using the flask framework, where should I put the index.html file?

এটি আপনাকে স্পষ্ট তথ্য দেবে যে এটি render_template ফ্রেমওয়ার্ক ব্যবহার করে এবং তাই index.html ফাইলটি templates ফোল্ডারের ভিতরে স্থাপন করতে হবে। আপনি এই ফোল্ডারটি উপলব্ধ পাবেন কারণ আমরা এই কোডল্যাবের শুরুতে Flask টেমপ্লেটের উপর ভিত্তি করে একটি অ্যাপ্লিকেশন তৈরি করেছিলাম। ফলস্বরূপ, একটি বিদ্যমান index.html ফাইল রয়েছে এবং আপনার কেবল এর বিষয়বস্তুগুলি এখানে তৈরি করা নতুন ফাইল দিয়ে প্রতিস্থাপন করা উচিত। কোড অ্যাসিস্ট আপনার app.py ফাইলে render_template আমদানি করার কথাও উল্লেখ করে।

এগিয়ে যান এবং index.html ফাইলে ওয়েব অ্যাপ্লিকেশন কোডটি সংরক্ষণ করুন এবং সেই ফাইলটি templates ফোল্ডারে রাখতে ভুলবেন না।

স্থানীয়ভাবে অ্যাপ্লিকেশনটি চালান

আমরা যা শুরু করেছিলাম সেই অনুযায়ী আবেদনের প্রয়োজনীয়তা যাচাই করার জন্য এখনই স্থানীয়ভাবে অ্যাপ্লিকেশনটি চালাই।

নিশ্চিত করুন যে স্থানীয় ফ্লাস্ক সার্ভারটি এখনও চলছে এবং কোনও ত্রুটি দেখাচ্ছে না। ত্রুটির ক্ষেত্রে, সেগুলি সমাধান করুন এবং সার্ভারটি চালু করুন।

একবার চালু হয়ে গেলে, অ্যাপ্লিকেশনটির হোম URL দেখুন। এটি আপনাকে নীচের চিত্রের মতো index.html ফাইলটি দেখাবে:

8ca586acc4536879.png সম্পর্কে

ইনপুট হিসেবে ডেটা থেকে যেকোনো একটি বিভাগ (যেমন AI ) প্রদান করুন এবং Search বোতামে ক্লিক করুন। এটি AI বিভাগের সাথে ট্যাগ করা সেশনগুলি প্রদর্শন করবে।

165faded790a6c.png সম্পর্কে

একটি ঐচ্ছিক অনুশীলন হল প্রতিটি সেশনের জন্য সময়কাল, বিভাগ, স্পিকার এবং সারাংশের মতো অতিরিক্ত মেটাডেটা দেখানো।

১২. টেস্ট কেস জেনারেশন

আমরা সেশন API তৈরি করেছি এবং এখনই বিভিন্ন API পাথের জন্য ইউনিট টেস্ট কেস তৈরি করতে জেমিনি কোড অ্যাসিস্ট ব্যবহার করার সময়।

app.py ফাইলটি খোলা রাখুন এবং নিম্নলিখিত প্রম্পটটি দিন:

Generate unit test cases for app routes. Use unittest module.

আমরা নিম্নলিখিত প্রতিক্রিয়া পেয়েছি:

import unittest
from app import app

class FlaskAppTestCase(unittest.TestCase):

    def test_index(self):
        tester = app.test_client()
        response = tester.get('/')
        self.assertEqual(response.status_code, 200)

    def test_get_sessions(self):
        tester = app.test_client()
        response = tester.get('/sessions')
        self.assertEqual(response.status_code, 200)

    def test_get_session_by_id(self):
        tester = app.test_client()
        response = tester.get('/sessions/1')
        self.assertEqual(response.status_code, 200)

    def test_get_sessions_by_category(self):
        tester = app.test_client()
        response = tester.get('/sessions/categories/category1')
        self.assertEqual(response.status_code, 200)

if __name__ == '__main__':
    unittest.main()

উপরের কোডটি ব্যবহার করে tests.py নামে একটি ফাইল তৈরি করুন।

টেস্ট কেস জেনারেশন সম্পর্কে একটি নোট

আপনি উপরের কোড তালিকা থেকে ভিন্ন একটি কোড তালিকা দেখতে পারেন এবং এটি টেস্ট কেস চালানোর সময় কিছু সমস্যা তৈরি করতে পারে। উদাহরণস্বরূপ, আমরা দেখেছি যে আমাদের কিছু রানে, নিম্নলিখিত মূল কোডগুলি বাদ পড়েছে:

from app import app

উপরের কোডটি বিদ্যমান Flask অ্যাপটি আমদানি করার জন্য প্রয়োজন যার বিরুদ্ধে আমরা পরীক্ষার কেসগুলি ব্যবহার করব।

if __name__ == '__main__':

`unittest.main()`

টেস্ট কেস চালানোর জন্য উপরের কোডটি প্রয়োজন।

আমাদের সুপারিশ হল প্রতিটি টেস্ট কেস দেখে নেওয়া, জেনারেট করা কোডে assertEqual এবং অন্যান্য শর্তাবলী পরীক্ষা করে দেখা যে এটি কাজ করছে কিনা। যেহেতু ডেটাটি Firestore সংগ্রহে বহিরাগত, তাই এটিতে অ্যাক্সেস নাও থাকতে পারে এবং কিছু ডামি ডেটা ব্যবহার করতে পারে যার ফলে পরীক্ষাগুলি ব্যর্থ হতে পারে। তাই আপনার টেস্ট কেসগুলি সেই অনুযায়ী পরিবর্তন করুন অথবা এমন কিছু টেস্ট কেস মন্তব্য করুন যা আপনার তাৎক্ষণিকভাবে প্রয়োজন নাও হতে পারে।

একটি প্রদর্শন হিসাবে, আমরা নিম্নলিখিত কমান্ড ব্যবহার করে পরীক্ষার কেসগুলি পরিচালনা করেছি (স্থানীয় ডেভেলপমেন্ট সার্ভারটি চালাতে ভুলবেন না কারণ স্থানীয় API এন্ডপয়েন্টগুলিতে কল করা হবে):

python tests.py

আমরা নিম্নলিখিত সারসংক্ষেপ ফলাফল পেয়েছি:

Ran 4 tests in 0.274s

FAILED (failures=2)

এটা আসলেই সঠিক কারণ তৃতীয় পরীক্ষায় সেশন আইডি সঠিক ছিল না এবং category1 নামে কোনও ক্যাটাগরি নেই।

.

তাই পরীক্ষার কেসগুলি সেই অনুযায়ী সামঞ্জস্য করুন এবং এটি পরীক্ষা করে দেখুন।

১৩. পরীক্ষামূলক উন্নয়ন

এবার আসুন আমরা আমাদের সেশন API-তে টেস্ট ড্রাইভেন ডেভেলপমেন্ট (TDD) পদ্ধতি অনুসরণ করে একটি নতুন অনুসন্ধান পদ্ধতি যুক্ত করার কথা বিবেচনা করি, যা প্রথমে টেস্ট কেস লেখার বিষয়ে, বাস্তবায়নের অভাবের কারণে সেগুলি ব্যর্থ করে এবং অনুপস্থিত বাস্তবায়ন তৈরি করতে জেমিনি কোড অ্যাসিস্ট ব্যবহার করে পরীক্ষাটি পাস করে।

tests.py ফাইলে যান (ধরে নিচ্ছি যে আপনি tests.py ফাইলটি ঠিক করেছেন যাতে সমস্ত পরীক্ষা পাস হয়)। নিম্নলিখিত প্রম্পটটি কোড অ্যাসিস্টকে জিজ্ঞাসা করুন:

Generate a new test case to search for sessions by speaker

এর ফলে আমরা নিম্নলিখিত টেস্ট কেস বাস্তবায়ন পেয়েছি যা আমরা যথাযথভাবে tests.py ফাইলে সন্নিবেশ করেছি।

  def test_get_sessions_by_speaker(self):
        tester = app.test_client()
        response = tester.get('/sessions/speakers/speaker1')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json, [sessions.sessions[0], sessions.sessions[1]])

যদি আপনি পরীক্ষাগুলি চালান, তাহলে আপনার নিম্নলিখিত ত্রুটিটি দেখতে হবে:

$ python tests.py 
.F.
======================================================================
FAIL: test_get_sessions_by_speaker (__main__.FlaskAppTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/romin/hello-world-5/tests.py", line 21, in test_get_sessions_by_speaker
    self.assertEqual(response.status_code, 200)
AssertionError: 404 != 200

----------------------------------------------------------------------
Ran 3 tests in 0.010s

FAILED (failures=1)

এর কারণ হল টেস্ট কেসটি নিম্নলিখিত পাথ ( /sessions/speakers/ ) ব্যবহার করেছে এবং app.py তে এর কোনও বাস্তবায়ন নেই।

আসুন আমরা কোড অ্যাসিস্টকে একটি বাস্তবায়ন প্রদান করতে বলি। app.py ফাইলে যান এবং কোড অ্যাসিস্টকে নিম্নলিখিত প্রম্পট দিন:

Add a new route to search for sessions by a specific speaker

আমরা কোড অ্যাসিস্ট দ্বারা প্রস্তাবিত নিম্নলিখিত বাস্তবায়ন পেয়েছি, যা আমরা app.py ফাইলে যুক্ত করেছি:

@app.route('/sessions/speakers/<speaker>', methods=['GET'])
def get_sessions_by_speaker(speaker):
    sessions_by_speaker = [session for session in sessions.sessions if speaker in session['speakers']]
    return jsonify(sessions_by_speaker)

tests.py ফাইলটি আবার দেখুন এবং দ্রুত পরীক্ষা করার জন্য আমরা আমাদের টেস্ট কেসটি নিম্নরূপ পরিবর্তন করেছি:

   def test_get_sessions_by_speaker(self):
       tester = app.test_client()
       response = tester.get('/sessions/speakers/Romin Irani')
       self.assertEqual(response.status_code, 200)
       self.assertEqual(len(response.json), 1)

পরীক্ষাটি ঠিকঠাক হয়েছে। আমরা এটিকে আপনার জন্য একটি অনুশীলন হিসেবে রেখেছি, তৈরি করা টেস্ট কেসগুলি দেখুন, ফায়ারস্টোরে থাকা ডেটার উপর নির্ভর করে সেগুলিকে কিছুটা পরিবর্তন করুন এবং পাইথন ইউনিট টেস্ট কেসগুলিতে উপযুক্ত assert* পদ্ধতি ব্যবহার করুন।

১৪. গুগল ক্লাউড রানে স্থাপন করা

এখন যেহেতু আমরা আমাদের ডেভেলপমেন্টের মান সম্পর্কে ভালো বোধ করছি, আমাদের শেষ পদক্ষেপ হবে এই অ্যাপ্লিকেশনটি গুগল ক্লাউড রানে স্থাপন করা। তবে ভালো ব্যবস্থা হিসেবে, আমরা যদি কিছু ভুলে যাই তাহলে আমাদের কোড অ্যাসিস্টকে জিজ্ঞাসা করা উচিত। app.py ওপেনের মাধ্যমে, নিম্নলিখিত প্রম্পটটি জমা দিন:

Is there something here I should change before I deploy to production?

ভালো কথা, তুমি জিজ্ঞেস করেছো, কারণ আমরা আসলে ডিবাগিং ফ্ল্যাগটিকে off এ সেট করতে ভুলে গেছি:

2f87ed3a811fb218.png সম্পর্কে

যেমনটি উল্লেখ করা হয়েছে, ডিবাগিং বন্ধ করুন এবং gcloud কমান্ডের সাহায্যের জন্য জেমিনি কোড অ্যাসিস্টের কাছে যান যা সোর্স থেকে সরাসরি ক্লাউড রানে অ্যাপ্লিকেশনটি স্থাপন করতে ব্যবহার করা যেতে পারে (প্রথমে কোনও কন্টেইনার তৈরি না করে)।

নিম্নলিখিত প্রম্পট দিন:

I would like to deploy the application to Cloud Run directly from source. What is the gcloud command to do that?

উপরের প্রম্পটের কয়েকটি ভিন্নতা চেষ্টা করে দেখুন। আমরা আরেকটি চেষ্টা করেছি:

I would like to deploy this application to Cloud Run. I don't want to build a container image locally but deploy directly from source to Cloud Run. What is the gcloud command for that?

আদর্শভাবে আপনার নিম্নলিখিত gcloud কমান্ডটি পাওয়া উচিত:

gcloud run deploy sessions --source .

আপনি এগুলিও পেতে পারেন:

gcloud run deploy <service-name> --source . \
—-platform managed \
—-allow-unauthenticated

অ্যাপ্লিকেশনের রুট ফোল্ডার থেকে উপরের কমান্ডটি কার্যকর করুন। region জিজ্ঞাসা করা হলে, us-central1 নির্বাচন করুন এবং unauthenticated invocations অনুমতি দেওয়ার জন্য জিজ্ঞাসা করা হলে, Y নির্বাচন করুন। আপনাকে Artifact Registry, Cloud Build এবং Cloud Run এর মতো Google Cloud API গুলি সক্ষম করতে এবং একটি Artifact Registry সংগ্রহস্থল তৈরি করার অনুমতি দিতে বলা হতে পারে, অনুগ্রহ করে এগিয়ে যান এবং অনুমতি দিন।

স্থাপনার প্রক্রিয়াটি সম্পূর্ণ হতে প্রায় ২ মিনিট সময় লাগবে, তাই দয়া করে ধৈর্য ধরুন।

সফলভাবে স্থাপনের পর, আপনি ক্লাউড রান পরিষেবার URL দেখতে পাবেন। সেই পাবলিক URL টি দেখুন এবং আপনি একই ওয়েব অ্যাপ্লিকেশনটি স্থাপন এবং সফলভাবে চলমান দেখতে পাবেন।

c5322d0fd3e0f616.png সম্পর্কে

অভিনন্দন, দারুন!

১৫. (ঐচ্ছিক) ক্লাউড লগিং ব্যবহার করুন

আমরা আমাদের অ্যাপ্লিকেশনে লগিং চালু করতে পারি যাতে অ্যাপ্লিকেশন লগগুলি গুগল ক্লাউড পরিষেবাগুলির একটিতে কেন্দ্রীভূত হয় (ক্লাউড লগিং)। এরপর আমরা লগ এন্ট্রিগুলি বোঝার জন্য পর্যবেক্ষণযোগ্যতা জেমিনি বৈশিষ্ট্যটি ব্যবহার করতে পারি।

এটি করার জন্য, আমাদের প্রথমে গুগল ক্লাউড থেকে একটি বিদ্যমান পাইথন ক্লাউড লগিং লাইব্রেরি ব্যবহার করতে হবে এবং তথ্যমূলক, সতর্কতামূলক বা ত্রুটি বার্তা লগ করার জন্য এটি ব্যবহার করতে হবে (লগ / তীব্রতার স্তরের উপর নির্ভর করে)।

প্রথমে কোড অ্যাসিস্টকে জিজ্ঞাসা করার চেষ্টা করি। নিম্নলিখিত প্রম্পটটি চেষ্টা করে দেখুন:

How do I use the google-cloud-logging package in Python?

আপনার একটি উত্তর পাওয়া উচিত যেখানে এটি সম্পর্কে কিছু তথ্য দেওয়া হবে, যেমনটি নিচে দেওয়া হল:

2472e1ccaf8a217d.png সম্পর্কে

বিভাগ অনুসারে সেশন অনুসন্ধানকারী ফাংশনে লগিং স্টেটমেন্ট যোগ করা যাক।

প্রথমে, requirements.txt ফাইলে google-cloud-logging Python প্যাকেজ যোগ করুন।

এরপরে কোডের একটি স্নিপেট রয়েছে যা দেখায় যে আমরা লগিং বাস্তবায়নের জন্য কোডটি কীভাবে সংহত করেছি:

...
from google.cloud import logging
...
app = Flask(__name__)

# Create a logger
logger = logging.Client().logger('my-log')

@app.route('/sessions/categories/<category>', methods=['GET'])
def get_sessions_by_category(category):
   logger.log_text(f"Fetching sessions with category {category}")
   sessions_by_category = [session for session in sessions.sessions if category in session['categories']]
   logger.log_text(f'Found {len(sessions_by_category)} sessions with category {category}')
   return jsonify(sessions_by_category)

# # Other App Routes

পূর্ববর্তী বিভাগের মতো একই কমান্ড ব্যবহার করে আবার ক্লাউড রানে পরিষেবাটি স্থাপন করুন এবং এটি স্থাপন হয়ে গেলে, /sessions/categories/<category> এন্ডপয়েন্টে কয়েকটি কল করুন।

Cloud Console → Logs Explorer যান

59e297577570695.png সম্পর্কে

...এবং আপনি নীচে দেখানো হিসাবে এই লগিং বিবৃতিগুলিতে ফিল্টার করতে সক্ষম হবেন:

914f1fb6cac30a89.png সম্পর্কে

আপনি যেকোনো লগ স্টেটমেন্টে ক্লিক করতে পারেন, এটি প্রসারিত করতে পারেন এবং তারপর Explain this log entry এ ক্লিক করতে পারেন, যা লগ এন্ট্রি ব্যাখ্যা করার জন্য Gemini ব্যবহার করবে। মনে রাখবেন যে আপনি যদি Google Cloud এর জন্য Gemini সক্রিয় না করে থাকেন, তাহলে আপনাকে Cloud AI Companion API সক্রিয় করতে বলা হবে। অনুগ্রহ করে এগিয়ে যান এবং নির্দেশ অনুসারে এটি করুন।

একটি নমুনা প্রতিক্রিয়া নিচে দেওয়া হল:

7fc9783910fa92cc.png সম্পর্কে

১৬. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে একটি অ্যাপ্লিকেশন তৈরি করেছেন এবং SDLC-এর বিভিন্ন দিক যেমন ডিজাইন, বিল্ড, টেস্টিং এবং ডিপ্লয়মেন্টে জেমিনি কোড অ্যাসিস্ট ব্যবহার করেছেন।

এরপর কী?

এই কোডল্যাবগুলির কিছু দেখুন...

রেফারেন্স ডক্স