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

1। পরিচিতি

e5b98fd4e417c877.png

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

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

আপনি কি করবেন

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

আপনি কি শিখবেন

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

আপনি কি প্রয়োজন হবে

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

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

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

এই বিভাগটি এই ল্যাবের সাথে শুরু করার জন্য আপনাকে যা করতে হবে তা কভার করে।

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

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

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

6f5ce865fc7a3ef5.png

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

709e6c8248ac7d88.png

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

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

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

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

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

f1535e14c9beeec6.png

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

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

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

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

ক্লাউড কনসোলে Firestore পৃষ্ঠায় যান।

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

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

504cabdb99a222a5.png

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

  1. নীচে দেওয়া gsutil কমান্ড দিয়ে আপনার প্রকল্পে একটি বালতি তৈরি করুন। নিচের কমান্ডে <PROJECT_ID> ভেরিয়েবলটিকে আপনার Google ক্লাউড প্রজেক্ট আইডি দিয়ে প্রতিস্থাপন করুন। আপনার ডিফল্ট ফায়ারস্টোর ডাটাবেসের ভৌগলিক এলাকার সাথে সম্পর্কিত একটি অঞ্চলের নামের সাথে <BUCKET_LOCATION> প্রতিস্থাপন করুন (আগের ধাপে উল্লেখ করা হয়েছে), এটি হতে পারে 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

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

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

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

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

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

f151759c156c124e.png

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

91ea9836f38b7f74.png

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

aaa3725b17ce27cf.png

5. মিথুন কোড সহায়তার সাথে ইন্টারঅ্যাক্ট করা

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

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

14ad103efaa0ddaa.png

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

6. API ডিজাইন

আমাদের প্রথম পদক্ষেপ হবে ডিজাইন পর্বে জেমিনি কোড অ্যাসিস্টের সহায়তা নেওয়া। এই ধাপে, আমরা যে সত্তাগুলির জন্য একটি 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 নামে একটি ফাইল তৈরি করুন এবং কোড অ্যাসিস্ট চ্যাট উইন্ডো থেকে "ইনসার্ট ইন কারেন্ট ফাইল অপশন" ( + বোতাম) ব্যবহার করে কন্টেন্ট কপি করুন এবং ফাইলটিকে ক্লাউড শেল আইডিই-তে খোলা রাখুন।

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

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

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

আমরা এখন কোড অ্যাসিস্টকে অ্যাপ্লিকেশন তৈরি করতে বলব। 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 ফাইল তৈরি করা হয়েছে। শুধু কোড অ্যাসিস্ট দ্বারা জেনারেট করা কোড দিয়ে এর বিষয়বস্তু প্রতিস্থাপন করুন এবং ফাইলটি সংরক্ষণ করুন।

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

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- এ পাইথন প্যাকেজ নির্ভরতা সহ একটি ভার্চুয়াল পাইথন পরিবেশ তৈরি করা হবে প্রথম ধাপ। এটি করতে, ক্লাউড শেল আইডিই-তে কমান্ড প্যালেটে (Ctrl+Shift+P) যান এবং টাইপ করুন পাইথন পরিবেশ তৈরি করুন । একটি ভার্চুয়াল এনভায়রনমেন্ট (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> 

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

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 কমান্ডগুলি স্মরণ করতে হবে।

9. Firestore সংগ্রহের সাথে একীভূত করুন

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

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. 

আমরা 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 গুলি নির্দ্বিধায় জিজ্ঞাসা করুন৷

10. কোড ব্যাখ্যা

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

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

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

এখন যেহেতু আমরা API তৈরি করেছি এবং এটিকে একটি লাইভ ফায়ারস্টোর সংগ্রহের সাথে একত্রিত করেছি, আসুন আমরা অ্যাপ্লিকেশনটির জন্য একটি ওয়েব-ভিত্তিক ফ্রন্ট-এন্ড তৈরি করি। আমাদের ওয়েব ফ্রন্ট-এন্ড বর্তমানে এর কার্যকারিতা ন্যূনতম রাখবে, অর্থাৎ একটি নির্দিষ্ট বিভাগের অন্তর্গত সেশনগুলি অনুসন্ধান করতে সক্ষম হবে। মনে রাখবেন যে আমাদের কাছে এটির জন্য একটি 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.

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

@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 ফোল্ডারের ভিতরে স্থাপন করতে হবে। আপনি এই ফোল্ডারটি উপলব্ধ পাবেন যেহেতু আমরা এই কোডল্যাবের শুরুতে ফ্লাস্ক টেমপ্লেটের উপর ভিত্তি করে একটি অ্যাপ্লিকেশন তৈরি করেছি। ফলস্বরূপ, একটি বিদ্যমান index.html ফাইল আছে এবং আপনার উচিৎ এখানে তৈরি করা নতুনটির সাথে এর বিষয়বস্তু প্রতিস্থাপন করা। কোড অ্যাসিস্ট আপনার app.py ফাইলে render_template আমদানি করার কথাও উল্লেখ করে।

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

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

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

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

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

8ca586acc4536879.png

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

165faded790a6c.png

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

12. টেস্ট কেস জেনারেশন

আমরা সেশন 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

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

if __name__ == '__main__':

`unittest.main()`

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

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

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

python tests.py

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

Ran 4 tests in 0.274s

FAILED (failures=2)

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

.

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

13. টেস্ট চালিত উন্নয়ন

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

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)

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

14. গুগল ক্লাউড রানে স্থাপন করা হচ্ছে

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

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

ভাল জিনিস আপনি জিজ্ঞাসা করেছেন যেহেতু আমরা আসলে ডিবাগিং পতাকা সেট করতে ভুলে গেছি:

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 নির্বাচন করুন। আপনাকে আর্টিফ্যাক্ট রেজিস্ট্রি, ক্লাউড বিল্ড এবং ক্লাউড রানের মতো Google ক্লাউড এপিআই সক্ষম করতে এবং একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি তৈরি করার অনুমতি দিতে বলা হতে পারে, দয়া করে এগিয়ে যান এবং অনুমতি দিন৷

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

একবার সফলভাবে স্থাপন করা হলে, আপনি ক্লাউড রান পরিষেবা URL দেখতে পাবেন। সেই সর্বজনীন URL-এ যান এবং আপনি দেখতে পাবেন একই ওয়েব অ্যাপ্লিকেশন সফলভাবে স্থাপন করা হয়েছে এবং চলছে৷

c5322d0fd3e0f616.png

অভিনন্দন ভাল কাজ !

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

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

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

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

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

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

2472e1ccaf8a217d.png

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

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

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

...
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 এ ক্লিক করুন, যা লগ এন্ট্রি ব্যাখ্যা করতে মিথুন ব্যবহার করবে। মনে রাখবেন যে আপনি যদি Google ক্লাউডের জন্য Gemini সক্ষম না করে থাকেন তবে আপনাকে Cloud AI Companion API সক্ষম করতে বলা হবে। অনুগ্রহ করে এগিয়ে যান এবং নির্দেশ অনুসারে তা করুন।

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

7fc9783910fa92cc.png

16. অভিনন্দন

অভিনন্দন, আপনি সফলভাবে স্ক্র্যাচ থেকে একটি অ্যাপ্লিকেশন তৈরি করেছেন এবং ডিজাইন, বিল্ড, টেস্টিং এবং স্থাপনা সহ SDLC-এর একাধিক দিক জুড়ে Gemini Code Assist ব্যবহার করেছেন।

এরপর কি?

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

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