GenAI এবং ক্লাউড রানের সাথে একটি কুইজ জেনারেটর তৈরি করুন

1. ভূমিকা

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

তুমি কি করবে...

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

যা শিখবেন...

  • কিভাবে একটি বড় ভাষা মডেল (LLM) এর জন্য একটি টেমপ্লেটেড প্রম্পট তৈরি করবেন।
  • পাইথনে কীভাবে একটি সাধারণ ওয়েব সার্ভার অ্যাপ তৈরি করবেন।
  • কীভাবে আপনার ওয়েব অ্যাপে Google এর LLM-এর জন্য সমর্থন যোগ করবেন।
  • ক্লাউডে কীভাবে আপনার অ্যাপ স্থাপন করবেন যাতে কেউ আপনার নতুন সৃষ্টি চেষ্টা করতে পারে।
  • একটি বড় অ্যাপে আপনার কুইজ জেনারেটরকে কীভাবে একত্রিত করবেন।

আপনার যা লাগবে...

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

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

2. সেটআপ

a08aa5878e36b60c.png

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

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

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

4a95152439f0159b.png

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন 853e55310c205094.png .

3c1dabeca90e44e5.png

যদি এটি আপনার প্রথমবার ক্লাউড শেল শুরু হয়, তাহলে এটি কী তা বর্ণনা করে আপনাকে একটি মধ্যবর্তী স্ক্রীন উপস্থাপন করা হবে। যদি আপনি একটি মধ্যবর্তী স্ক্রীনের সাথে উপস্থাপিত হন, তবে চালিয়ে যান ক্লিক করুন।

9c92662c6a846a5c.png

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

9f0e51b578fecce5.png

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

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণীকৃত হয়েছেন এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

কিছু API সক্রিয় করুন

পরবর্তী ধাপে, আপনি দেখতে পাবেন যে এই পরিষেবাগুলি কোথায় প্রয়োজন (এবং কেন), তবে আপাতত, আপনার প্রকল্পটিকে ক্লাউড বিল্ড, আর্টিফ্যাক্ট রেজিস্ট্রি, ভার্টেক্স এআই এবং ক্লাউড রানে অ্যাক্সেস দিতে এই কমান্ডটি চালান:

gcloud services enable cloudbuild.googleapis.com        \
                       artifactregistry.googleapis.com  \
                       aiplatform.googleapis.com        \
                       run.googleapis.com          

এটি নিম্নলিখিত অনুরূপ একটি সফল বার্তা উত্পাদন করা উচিত:

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

3. প্রম্পটিং - প্রাকৃতিক ভাষায় প্রোগ্রামিং

92f630373224ead8.png

আমরা একটি বড় ভাষার মডেলের জন্য একটি প্রম্পট কীভাবে বিকাশ করতে হয় তা শিখতে শুরু করতে যাচ্ছি। Google ক্লাউড কনসোলে নেভিগেট করুন > Vertex AI > Vertex AI স্টুডিও (ভাষা)। আপনি এই মত একটি পৃষ্ঠা দেখতে হবে:

bfe5706041ae6454.png

Generate Text অধীনে, Text Prompt বোতামে ক্লিক করুন। পরবর্তী ডায়ালগে, একটি প্রম্পট লিখুন যা আপনি মনে করেন নিম্নলিখিত প্রয়োজনীয়তা অনুসারে একটি ট্রিভিয়া কুইজ তৈরির জন্য কার্যকর হতে পারে:

  • বিষয়: বিশ্ব ইতিহাস
  • প্রশ্নের সংখ্যা: 5
  • অসুবিধা স্তর: মধ্যবর্তী
  • ভাষা: ইংরেজি

আউটপুট দেখতে Submit বাটনে ক্লিক করুন।

নিচের স্ক্রিনশটে দেখানো হয়েছে, ডান হাতের প্যানেল আপনাকে কোন মডেলটি ব্যবহার করতে চান তা নির্বাচন করার ক্ষমতা দেয় এবং কিছু সেটিংস সূক্ষ্ম-টিউন করে:

8aa89a1970ea9335.png

নিম্নলিখিত সেটিংস উপলব্ধ:

  • আপনার প্রজন্মের অনুরোধ চালানো উচিত যেখানে অঞ্চল.
  • আপনি কোন বড় ভাষার মডেল ব্যবহার করতে চান তা মডেল নির্বাচন করে। এই কোডল্যাবের জন্য, "gemini-1.0-pro-001" দিয়ে লেগে থাকুন।
  • তাপমাত্রা টোকেন নির্বাচনে এলোমেলোতার মাত্রা নিয়ন্ত্রণ করে। নিম্ন তাপমাত্রা এমন প্রম্পটগুলির জন্য ভাল যা একটি সত্য বা সঠিক প্রতিক্রিয়া আশা করে, যখন উচ্চ তাপমাত্রা আরও বৈচিত্র্যময় বা অপ্রত্যাশিত ফলাফলের দিকে নিয়ে যেতে পারে।
  • টোকেন সীমা একটি প্রম্পট থেকে সর্বাধিক পরিমাণ পাঠ্য আউটপুট নির্ধারণ করে। একটি টোকেন প্রায় চারটি অক্ষরের। ডিফল্ট মান হল 1024।
  • Top-k পরিবর্তন করে কিভাবে মডেল আউটপুটের জন্য টোকেন নির্বাচন করে। 1-এর একটি শীর্ষ-কে মানে নির্বাচিত টোকেনটি মডেলের শব্দভান্ডারের সমস্ত টোকেনের মধ্যে সবচেয়ে সম্ভাব্য (যাকে লোভনীয় ডিকোডিংও বলা হয়), যখন 3-এর শীর্ষ-কে মানে হল যে পরবর্তী টোকেনটি 3টি সম্ভাব্য টোকেনের মধ্যে থেকে নির্বাচিত হয়েছে ( তাপমাত্রা ব্যবহার করে)। ডিফল্ট টপ-কে মান হল 40।
  • Top-p পরিবর্তন করে কিভাবে মডেল আউটপুটের জন্য টোকেন নির্বাচন করে। টোকেনগুলি সর্বাধিক সম্ভাব্য থেকে কমপক্ষে নির্বাচন করা হয় যতক্ষণ না তাদের সম্ভাব্যতার যোগফল শীর্ষ-p মানের সমান হয়।
  • সর্বাধিক প্রতিক্রিয়া হল প্রতি প্রম্পটে তৈরি হওয়া মডেল প্রতিক্রিয়াগুলির সর্বাধিক সংখ্যা।
  • একটি স্টপ সিকোয়েন্স হল অক্ষরগুলির একটি সিরিজ (স্পেস সহ) যা মডেলের মুখোমুখি হলে প্রতিক্রিয়া তৈরি করা বন্ধ করে দেয়।
  • স্ট্রিমিং প্রতিক্রিয়া নির্বাচন করে যে প্রতিক্রিয়াগুলি প্রিন্ট করা উচিত কিনা সেগুলি তৈরি বা সংরক্ষণ করা হয় এবং সম্পূর্ণ হলে প্রদর্শিত হয়।
  • নিরাপত্তা ফিল্টার থ্রেশহোল্ড আপনার ক্ষতিকারক হতে পারে এমন প্রতিক্রিয়া দেখার সম্ভাবনা কতটা সামঞ্জস্য করে।

একবার আপনার কাছে একটি প্রম্পট পাওয়া গেলে যা উপরে উল্লিখিত প্রয়োজনীয়তা অনুসারে একটি যুক্তিসঙ্গত ক্যুইজ তৈরি করে বলে মনে হয়, আমরা কাস্টম কোড ব্যবহার করে এই কুইজটি পার্স করতে পারি তবে LLM একটি কাঠামোগত বিন্যাসে কুইজ তৈরি করা কি ভাল হবে না যা আমরা সরাসরি লোড করতে পারি। আমাদের প্রোগ্রাম? আপনার জেনারেটরকে কল করার জন্য আমরা পরবর্তীতে এই ল্যাবে যে প্রোগ্রামটি ব্যবহার করব তা আশা করে যে কুইজগুলি JSON এ প্রকাশ করা হবে, যা কাঠামোগত ডেটা উপস্থাপনের জন্য একটি জনপ্রিয় ক্রস-ভাষা বিন্যাস।

এই ল্যাবে ক্যুইজগুলিকে অবজেক্টের অ্যারে হিসাবে প্রকাশ করা হয়, যেখানে প্রতিটি বস্তুতে একটি প্রশ্ন থাকে, সেই প্রশ্নের সম্ভাব্য প্রতিক্রিয়াগুলির একটি অ্যারে এবং একটি সঠিক প্রতিক্রিয়া থাকে। এখানে এই ল্যাবে কুইজের জন্য JSON এনকোডিং আছে:

[
    {
        "question": "Who was the first person to walk on the moon?",
          "responses": [
              "Neil Armstrong",
              "Buzz Aldrin",
              "Michael Collins",
              "Yuri Gagarin"
           ],
           "correct": "Neil Armstrong"
    },
    {
        "question": "What was the name of the war that took place between the British and the French in North America from 1754 to 1763??",
          "responses": [
              "The French and Indian War",
              "The Seven Years' War",
              "The War of the Austrian Succession",
              "The Great War"
           ],
           "correct": "The French and Indian War"
    },

    ...
]

আপনি এখন প্রয়োজনীয় JSON বিন্যাসে কুইজ আউটপুট করার জন্য আপনার প্রম্পট পরিবর্তন করতে পারেন কিনা দেখুন।

  1. আপনি যে সুনির্দিষ্ট বিন্যাসটি খুঁজছেন তা শব্দে উল্লেখ করুন (যেমন উপরের তির্যক বাক্য)।
  2. আপনার প্রম্পটে পছন্দসই JSON ফর্ম্যাটের একটি উদাহরণ অন্তর্ভুক্ত করুন।

আপনার পছন্দসই স্পেসিফিকেশন অনুযায়ী আপনার প্রম্পট জেনারেট করার ক্যুইজ হয়ে গেলে, পাইথন কোড দেখতে পৃষ্ঠার উপরের ডানদিকের কোণায় GET CODE বোতামে ক্লিক করুন যা আপনার প্রম্পটটিকে একটি Vertex AI LLM-এ প্রোগ্রাম্যাটিকভাবে জমা দিতে ব্যবহার করা যেতে পারে। আপনি যদি পাইথন ছাড়া অন্য কোনো প্রোগ্রামিং ভাষা ব্যবহার করতে আগ্রহী হন, তাহলে https://cloud.google.com/vertex-ai/docs/samples?text=generative দেখুন।

4. একটি সাধারণ ওয়েব সার্ভার তৈরি করুন

c73008bb8a72b57b.png

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

আপনার ক্লাউড শেল প্যানেলের শীর্ষে Open Editor বোতামে ক্লিক করে শুরু করুন। এটি এই মত দেখায়:

e2a06b5304079efc.png

তারপরে আপনি ভিজ্যুয়াল স্টুডিও কোডের মতো একটি IDE পরিবেশে নিজেকে খুঁজে পাবেন, যেখানে আপনি প্রকল্পগুলি তৈরি করতে পারেন, উত্স কোড সম্পাদনা করতে পারেন, আপনার প্রোগ্রামগুলি চালাতে পারেন ইত্যাদি।

যদি আপনার স্ক্রীনটি খুব সঙ্কুচিত হয়, তাহলে আপনি এখানে হাইলাইট করা ওই দুটি অঞ্চলের মধ্যে অনুভূমিক বারটি টেনে নিয়ে কনসোল এবং আপনার সম্পাদনা/টার্মিনাল উইন্ডোর মধ্যে বিভাজন রেখাটি প্রসারিত বা সঙ্কুচিত করতে পারেন:

8dea35450851af53.png

আপনি যথাক্রমে Open Editor এবং Open Terminal বোতামে ক্লিক করে এডিটর এবং টার্মিনালের মধ্যে পিছনে পিছনে যেতে পারেন। এখন এই দুটি পরিবেশের মধ্যে সামনে পিছনে সুইচ করার চেষ্টা করুন।

এর পরে, ফোল্ডার যুক্ত করুন বোতামে ক্লিক করে এই ল্যাবের জন্য আপনার কাজ সংরক্ষণ করার জন্য একটি ফোল্ডার তৈরি করুন৷ 5f4e64909bc15e30.png , quiz-generator লিখুন এবং এন্টার টিপুন। আপনি এই ল্যাবে যে সমস্ত ফাইল তৈরি করেন এবং ক্লাউড শেল-এ আপনি যে সমস্ত কাজ করেন তার সমস্তই এই ফোল্ডারে স্থান পাবে৷

এখন একটি requirements.txt ফাইল তৈরি করুন। এটি পাইথনকে বলে যে আপনার অ্যাপ কোন লাইব্রেরির উপর নির্ভর করে। এই সাধারণ ওয়েব অ্যাপের জন্য, আপনি Flask, google-cloud-aiplatform ক্লায়েন্ট লাইব্রেরি এবং gunicorn নামে একটি ওয়েব সার্ভার ফ্রেমওয়ার্ক তৈরির জন্য একটি জনপ্রিয় পাইথন মডিউল ব্যবহার করতে যাচ্ছেন। ফাইল নেভিগেশন প্যানে, quiz-generator ফোল্ডারে ডান ক্লিক করুন এবং New file মেনু আইটেমটি নির্বাচন করুন, যেমন:

613eb3de4b9b750a.png

নতুন ফাইলের নামের জন্য অনুরোধ করা হলে, requirements.txt লিখুন এবং এন্টার কী টিপুন। নিশ্চিত করুন যে নতুন ফাইলটি quiz-generator প্রকল্প ফোল্ডারে শেষ হয়েছে।

আপনার অ্যাপটি Python ফ্লাস্ক প্যাকেজ, gunicorn ওয়েব সার্ভার, এবং google-cloud-aiplatform ক্লায়েন্ট লাইব্রেরির উপর নির্ভর করে তা নির্দিষ্ট করার জন্য নতুন ফাইলে নিম্নলিখিত লাইনগুলি পেস্ট করুন, প্রতিটির সংশ্লিষ্ট সংস্করণ সহ।

flask==3.0.0
gunicorn==21.2.0
google-cloud-aiplatform==1.47.0

আপনার এই ফাইলটি স্পষ্টভাবে সংরক্ষণ করার দরকার নেই কারণ ক্লাউড এডিটর আপনার জন্য পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণ করবে৷

একই কৌশল ব্যবহার করে, main.py নামে আরেকটি নতুন ফাইল তৈরি করুন। এটি আপনার অ্যাপের প্রধান (এবং শুধুমাত্র) পাইথন সোর্স ফাইল হবে। আবার, নিশ্চিত করুন যে নতুন ফাইলটি quiz-generator ফোল্ডারে শেষ হয়েছে।

এই ফাইলে নিম্নলিখিত কোড সন্নিবেশ করান:

from flask import Flask
import os

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from environment.
if not PORT:
    PORT = 8080

# The app.route decorator routes any GET requests sent to the root path
# to this function, which responds with a "Hello world!" HTML document.
@app.route("/", methods=["GET"])
def say_hello():
    html = "<h1>Hello world!</h1>"
    return html

# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

টার্মিনালে ফিরে যান এবং এই কমান্ডটি দিয়ে প্রকল্প ফোল্ডারে পরিবর্তন করুন:

cd quiz-generator

আপনার প্রকল্প নির্ভরতা ইনস্টল করতে নিম্নলিখিত কমান্ড চালান:

pip3 install -r requirements.txt

নির্ভরতাগুলি ইনস্টল করার পরে, আপনি আউটপুট দেখতে পাবেন যা এভাবে শেষ হয়:

Successfully installed flask-3.0.0

এখন টার্মিনালে এই কমান্ডটি চালিয়ে আপনার অ্যাপ চালু করুন:

flask --app main.py --debug run --port 8080

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

web preview বোতামে ক্লিক করুন এবং তারপরে Preview on Port 8080 এইভাবে ক্লিক করুন:

7f938c0bc1b4154c.png

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

aaaf366f9bf74a28.png

5. প্যারামিটার পার্সিং সহ একটি জেনারেট পদ্ধতি যোগ করুন

এখন আমরা generate নামে একটি নতুন পদ্ধতি ফিল্ডিংয়ের জন্য সমর্থন যোগ করতে চাই। HTTP অনুরোধটি ম্যানিপুলেট করার জন্য একটি আমদানি বিবৃতি যোগ করে এবং এই অনুরোধটি পার্স করার জন্য এবং প্রিন্ট প্যারামিটারগুলিকে নিম্নরূপ পরিবর্তন করার জন্য এটি করুন:

from flask import Flask
from flask import request                       #<-CHANGED
import os

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from environment.
if not PORT:
    PORT = 8080

# The app.route decorator routes any GET requests sent to the /generate
# path to this function, which responds with "Generating:" followed by
# the body of the request.
@app.route("/", methods=["GET"])                #<-CHANGED
def generate():                                 #<-CHANGED
    params = request.args.to_dict()             #<-CHANGED
    html = f"<h1>Quiz Generator</h1>"           #<-CHANGED
    for param in params:                        #<-CHANGED
        html += f"<br>{param}={params[param]}"  #<-CHANGED
    return html                                 #<-CHANGED

# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

ফলাফল দেখতে এখন আপনার বিদ্যমান ওয়েব ব্রাউজার ট্যাব পুনরায় লোড করুন। এইবার আপনার "কুইজ জেনারেটর" দেখতে হবে, সাথে একটি ক্যোয়ারী প্যারামিটার স্বয়ংক্রিয়ভাবে আপনার url ( authuser ) এ যোগ হবে৷ আপনার ব্রাউজারের ঠিকানা বারে URL-এর শেষে "`&param1=val1&param2=val2`" স্ট্রিংটি যুক্ত করে দুটি অতিরিক্ত প্যারামিটার যোগ করার চেষ্টা করুন, পৃষ্ঠাটি পুনরায় লোড করুন এবং আপনার এরকম কিছু দেখতে হবে:

6e223ca358e4e009.png

এখন যেহেতু আমরা দেখেছি কিভাবে একটি URL-এ ক্যোয়ারী প্যারামিটার পাঠাতে এবং পার্স করতে হয়, আমরা আমাদের কুইজ জেনারেটর পাঠাতে চাই এমন নির্দিষ্ট প্যারামিটারগুলির জন্য সমর্থন যোগ করব, যা নিম্নরূপ:

  • topic - পছন্দসই কুইজের বিষয়
  • num_q - পছন্দসই প্রশ্নের সংখ্যা
  • diff - পছন্দসই অসুবিধা স্তর (সহজ, মধ্যবর্তী, কঠিন)
  • lang - পছন্দসই ক্যুইজের ভাষা
from flask import Flask
from flask import request
import os

# Default quiz settings  #<-CHANGED
TOPIC = "History"        #<-CHANGED
NUM_Q = "5"              #<-CHANGED
DIFF = "intermediate"    #<-CHANGED
LANG = "English"         #<-CHANGED

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from environment.
if not PORT:
    PORT = 8080

# This function takes a dictionary, a name, and a default value.
# If the name exists as a key in the dictionary, the corresponding
# value is returned. Otherwise, the default value is returned.
def check(args, name, default):  #<-CHANGED
    if name in args:             #<-CHANGED
        return args[name]        #<-CHANGED
    return default               #<-CHANGED

# The app.route decorator routes any GET requests sent to the /generate
# path to this function, which responds with "Generating:" followed by
# the body of the request.
@app.route("/", methods=["GET"])
# This function generates a quiz using Vertex AI.
def generate():
    args = request.args.to_dict()        #<-CHANGED
    topic = check(args, "topic", TOPIC)  #<-CHANGED
    num_q = check(args, "num_q", NUM_Q)  #<-CHANGED
    diff = check(args, "diff", DIFF)     #<-CHANGED
    lang = check(args, "lang", LANG)     #<-CHANGED
    html = f"""
        <h1>Quiz Generator</h1><br>
        {topic=}<br>
        {num_q=}<br>
        {diff=}<br>
        {lang=}"""                       #<-CHANGED
    return html

# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

ফলাফল দেখতে এখন আপনার বিদ্যমান ওয়েব ব্রাউজার ট্যাব পুনরায় লোড করুন। আপনি নিম্নলিখিত ওয়েব পৃষ্ঠার মত কিছু দেখতে হবে:

15eed60f6a805212.png

বিভিন্ন প্যারামিটারের জন্য মান সেট করতে URL পরিবর্তন করার চেষ্টা করুন। উদাহরণস্বরূপ, আপনার ঠিকানা বারে URL এর শেষে " ?authuser=0&topic=Literature&num_q=10&diff=easy&lang=French " প্রত্যয়টি ব্যবহার করার চেষ্টা করুন:

f629dba5fa207cef.png

6. আপনার প্রম্পট যোগ করুন এবং ফর্ম্যাট করুন

পরবর্তীতে, আমরা আমাদের কুইজ জেনারেটর পাঠাতে চাই এমন নির্দিষ্ট পরামিতিগুলির জন্য সমর্থন যোগ করব, যা নিম্নরূপ:

  • topic - পছন্দসই কুইজের বিষয়
  • num_q - পছন্দসই প্রশ্নের সংখ্যা
  • diff - পছন্দসই অসুবিধা স্তর (সহজ, মধ্যবর্তী, কঠিন)
  • lang - পছন্দসই ক্যুইজের ভাষা

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

  • {বিষয়}
  • {সংখ্যা_কিউ}
  • {তফাত}
  • {lang}
from flask import Flask
from flask import request
import os

# Default quiz settings
TOPIC = "History"
NUM_Q = 5
DIFF = "intermediate"
LANG = "English"

PROMPT = """
Generate a quiz according to the following specifications:

- topic: {topic}
- num_q: {num_q}
- diff:  {diff}
- lang:  {lang}

Output should be (only) an unquoted json array of objects with keys:
"Question", "responses", and "correct".

"""  #<-CHANGED

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from environment.
if not PORT:
    PORT = 8080

# This function takes a dictionary, a name, and a default value.
# If the name exists as a key in the dictionary, the corresponding
# value is returned. Otherwise, the default value is returned.
def check(args, name, default):
    if name in args:
        return args[name]
    return default

# The app.route decorator routes any GET requests sent to the /generate
# path to this function, which responds with "Generating:" followed by
# the body of the request.
@app.route("/", methods=["GET"])
# This function generates a quiz using Vertex AI.
def generate():
    args = request.args.to_dict()
    topic = check(args, "topic", TOPIC)
    num_q = check(args, "num_q", NUM_Q)
    diff = check(args, "diff", DIFF)
    lang = check(args, "lang", LANG)
    prompt = PROMPT.format(topic=topic, num_q=num_q, diff=diff, lang=lang)  #<-CHANGED 
    html = f"<h1>Prompt:</h1><br><pre>{prompt}</pre>"                       #<-CHANGED
    return html

# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

ফলাফল দেখতে এখন আপনার বিদ্যমান ওয়েব ব্রাউজার ট্যাব পুনরায় লোড করুন। আপনি নিম্নলিখিত ওয়েব পৃষ্ঠার মত কিছু দেখতে হবে:

3c2b9dfcfba86b7a.png

এই চারটি প্যারামিটার পরিবর্তন করতে URL পরিবর্তন করার চেষ্টা করুন।

7. Vertex AI ক্লায়েন্ট লাইব্রেরি যোগ করুন

এখন আমরা আপনার ক্যুইজ তৈরি করতে Vertex AI Python ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে প্রস্তুত। এটি আপনি যে ইন্টারেক্টিভ প্রম্পটিংটি #3 ধাপে করেছিলেন তা স্বয়ংক্রিয়ভাবে করবে এবং আপনার জেনারেটর পরিষেবাকে Google-এর LLM ক্ষমতাগুলিতে প্রোগ্রাম্যাটিক অ্যাক্সেস দেবে। নিম্নরূপ আপনার main.py ফাইল আপডেট করুন:

আপনার প্রকৃত প্রকল্প আইডি দিয়ে "YOUR_PROJECT" প্রতিস্থাপন করা নিশ্চিত করুন।

from flask import Flask
from flask import request
from flask import Response                                          #<-CHANGED
import os

import vertexai    
from vertexai.generative_models import GenerativeModel  #<-CHANGED

# Default quiz settings
TOPIC = "History"
NUM_Q = 5
DIFF = "intermediate"
LANG = "English"
MODEL = "gemini-1.0-pro"  #<-CHANGED

PROMPT = """
Generate a quiz according to the following specifications:

- topic: {topic}
- num_q: {num_q}
- diff:  {diff}
- lang:  {lang}

Output should be (only) an unquoted json array of objects with keys "question", "responses", and "correct".

"""

app = Flask(__name__)  # Create a Flask object.
PORT = os.environ.get("PORT")  # Get PORT setting from environment.
if not PORT:
    PORT = 8080

# Initialize Vertex AI access.
vertexai.init(project="YOUR_PROJECT", location="us-central1")  #<-CHANGED
parameters = {                                                 #<-CHANGED
    "candidate_count": 1,                                      #<-CHANGED
    "max_output_tokens": 1024,                                 #<-CHANGED
    "temperature": 0.5,                                        #<-CHANGED
    "top_p": 0.8,                                              #<-CHANGED
    "top_k": 40,                                               #<-CHANGED
}                                                              #<-CHANGED
model = GenerativeModel(MODEL)             #<-CHANGED

# This function takes a dictionary, a name, and a default value.
# If the name exists as a key in the dictionary, the corresponding
# value is returned. Otherwise, the default value is returned.
def check(args, name, default):
    if name in args:
        return args[name]
    return default

# The app.route decorator routes any GET requests sent to the /generate
# path to this function, which responds with "Generating:" followed by
# the body of the request.
@app.route("/", methods=["GET"])
# This function generates a quiz using Vertex AI.
def generate():
    args = request.args.to_dict()
    topic = check(args, "topic", TOPIC)
    num_q = check(args, "num_q", NUM_Q)
    diff = check(args, "diff", DIFF)
    lang = check(args, "lang", LANG)
    prompt = PROMPT.format(topic=topic, num_q=num_q, diff=diff, lang=lang)
    response = model.generate_content(prompt, generation_config=parameters)  #<-CHANGED
    print(f"Response from Model: {response.text}")           #<-CHANGED
    html = f"{response.text}"                                #<-CHANGED
    return Response(html, mimetype="application/json")       #<-CHANGED

# This code ensures that your Flask app is started and listens for
# incoming connections on the local interface and port 8080.
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=PORT)

ফলাফল দেখতে এখন আপনার বিদ্যমান ওয়েব ব্রাউজার ট্যাব পুনরায় লোড করুন। মনে রাখবেন যে এটি কয়েক সেকেন্ড সময় নিতে পারে কারণ এখন আপনি আসলে একটি LLM অনুরোধ করছেন ৷ আপনি নিম্নলিখিত ওয়েব পৃষ্ঠার মত কিছু দেখতে হবে:

f43d3ba5102857b8.png

একটি ভিন্ন কুইজের বিষয়, প্রশ্নের সংখ্যা এবং অসুবিধার স্তরের অনুরোধ করতে URL পরিবর্তন করার চেষ্টা করুন।

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

8. মেঘের কাছে!

67c99bf45a7b7805.png

এখন যেহেতু আপনি নিজের ক্যুইজ জেনারেটর তৈরি করেছেন, আপনি এই বিস্ময়করতাটি বাকি বিশ্বের সাথে ভাগ করতে চাইবেন, তাই এটি ক্লাউডে স্থাপন করার সময়। কিন্তু আপনি সত্যিই এটি ভাগ করার চেয়ে আরও বেশি কিছু করতে চান৷ আপনি এটি নিশ্চিত করতে চান:

  • নির্ভরযোগ্যভাবে চলে - আপনার অ্যাপ ক্র্যাশ করে চলমান কম্পিউটারের ক্ষেত্রে আপনি স্বয়ংক্রিয় ত্রুটি সহনশীলতা পাবেন
  • স্বয়ংক্রিয়ভাবে স্কেল করে - আপনার অ্যাপ ট্র্যাফিকের বিশাল স্তরের সাথে বজায় রাখবে এবং অব্যবহৃত হলে স্বয়ংক্রিয়ভাবে এর পদচিহ্ন কমিয়ে দেবে
  • আপনি যে সংস্থানগুলি ব্যবহার করছেন না তার জন্য আপনাকে চার্জ না করে আপনার খরচ কমিয়ে দেয় - ট্র্যাফিকের প্রতিক্রিয়া করার সময় আপনি যে সংস্থানগুলি ব্যবহার করেন তার জন্য আপনাকে চার্জ করা হয়
  • একটি কাস্টম ডোমেন নামের মাধ্যমে অ্যাক্সেসযোগ্য - আপনার পরিষেবাতে একটি কাস্টম ডোমেন নাম বরাদ্দ করার জন্য আপনার কাছে এক-ক্লিক সমাধানে অ্যাক্সেস রয়েছে
  • চমৎকার প্রতিক্রিয়া সময় অফার করে - ঠান্ডা শুরু যুক্তিসঙ্গতভাবে প্রতিক্রিয়াশীল কিন্তু আপনি একটি ন্যূনতম দৃষ্টান্ত কনফিগারেশন নির্দিষ্ট করে এটি ঠিক করতে পারেন
  • স্ট্যান্ডার্ড SSL/TLS ওয়েব নিরাপত্তা ব্যবহার করে এন্ড-টু-এন্ড এনক্রিপশন সমর্থন করে - যখন আপনি একটি পরিষেবা স্থাপন করেন, আপনি স্ট্যান্ডার্ড ওয়েব এনক্রিপশন এবং সংশ্লিষ্ট প্রয়োজনীয় শংসাপত্রগুলি বিনামূল্যে এবং স্বয়ংক্রিয়ভাবে পান

Google ক্লাউড রানে আপনার অ্যাপ স্থাপন করে, আপনি উপরের সমস্ত এবং আরও অনেক কিছু পাবেন। ক্লাউড রানের সাথে আপনার অ্যাপ শেয়ার করার জন্য মৌলিক বিল্ডিং ব্লক হল একটি ধারক।

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

কনটেইনার সম্পর্কে আরও জানতে এবং কীভাবে তারা Google ক্লাউড রানে কাজ করে, ক্লাউড রান কোডল্যাবের সাথে তিনটি সহজ ধাপে ডেভ টু প্রোড দেখুন।

ক্লাউড রানে আপনার অ্যাপ স্থাপন করুন

ক্লাউড রান হল একটি আঞ্চলিক পরিষেবা, যার অর্থ হল যে পরিকাঠামো যা আপনার ক্লাউড রান পরিষেবাগুলি চালায় সেটি একটি নির্দিষ্ট অঞ্চলে অবস্থিত এবং সেই অঞ্চলের সমস্ত অঞ্চলে অপ্রয়োজনীয়ভাবে উপলব্ধ হওয়ার জন্য Google দ্বারা পরিচালিত হয়৷ সরলতার জন্য, এই ল্যাবে আমরা হার্ডকোড করা অঞ্চল us-central1 ব্যবহার করব।

আমরা স্বয়ংক্রিয়ভাবে আপনার ধারক তৈরি করতে বিল্ডপ্যাক নামক কিছু ব্যবহার করতে যাচ্ছি। ক্লাউড এডিটরে Procfile নামে একটি নতুন ফাইল তৈরি করুন এবং পাঠ্যের এই একটি লাইন সন্নিবেশ করুন:

web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

এটি বিল্ডপ্যাক সিস্টেমকে বলে যে কীভাবে অটো-জেনারেটেড কন্টেইনারে আপনার অ্যাপ চালাতে হয়। এরপরে, ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালান (একই quiz-generator ডিরেক্টরি থেকে):

gcloud run deploy quiz-generator  \
    --source .                    \
    --region us-central1          \
    --allow-unauthenticated

এটি gcloud কমান্ডকে বলে যে আপনি এটিকে আপনার কন্টেইনার ইমেজ তৈরি করতে বিল্ডপ্যাক ব্যবহার করতে চান, এটি বর্তমান ডিরেক্টরিতে পাওয়া সোর্স ফাইলগুলির উপর ভিত্তি করে ( --source .dot বর্তমান ডিরেক্টরির জন্য সংক্ষিপ্ত বিবরণ)। যেহেতু পরিষেবাটি কনটেইনার ইমেজটি স্পষ্টভাবে যত্ন নেয়, আপনাকে এই gcloud কমান্ডে একটি চিত্র নির্দিষ্ট করতে হবে না।

স্থাপনা সম্পূর্ণ না হওয়া পর্যন্ত কয়েক মুহূর্ত অপেক্ষা করুন। সফল হলে, gcloud কমান্ড নতুন পরিষেবার URL প্রদর্শন করে:

Building using Buildpacks and deploying container to Cloud Run service [quiz-generator] in project [YOUR_PROJECT] region [YOUR_REGION]
OK Building and deploying new service... Done.                                                                          
  OK Creating Container Repository...                                                                                   
  OK Uploading sources...                                                                                               
  OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/0cf1383f-35db-412d
  -a973-557d5e2cd4a4?project=780573810218].                                                                             
  OK Creating Revision...                                                                                               
  OK Routing traffic...                                                                                                 
  OK Setting IAM Policy...                                                                                              
Done.                                                                                                                   
Service [quiz-generator] revision [quiz-generator-00001-xnr] has been deployed and is serving 100 percent of traffic.
Service URL: https://quiz-generator-co24gukjmq-uc.a.run.app

আপনি এই কমান্ড দিয়ে আপনার পরিষেবা URL পুনরুদ্ধার করতে পারেন:

gcloud run services describe quiz-generator  \
  --region us-central1                       \
  --format "value(status.url)"

এটি এমন কিছু প্রদর্শন করা উচিত:

https://quiz-generator-co24gukjmq-uc.a.run.app

এই লিঙ্কটি আপনার ক্লাউড রান পরিষেবার জন্য TLS নিরাপত্তা সহ একটি ডেডিকেটেড URL৷ এই লিঙ্কটি স্থায়ী (যতক্ষণ না আপনি আপনার পরিষেবা অক্ষম করেন) এবং ইন্টারনেটে যে কোনও জায়গায় ব্যবহারযোগ্য৷ এটি পূর্বে উল্লিখিত ক্লাউড শেলের প্রক্সি মেকানিজম ব্যবহার করে না, যা একটি ক্ষণস্থায়ী ভার্চুয়াল মেশিনের উপর নির্ভর করে।

আপনার চলমান অ্যাপে একটি ওয়েব ব্রাউজার ট্যাব খুলতে হাইলাইট করা Service URL এ ক্লিক করুন। আপনার বিকাশের পরিবেশে আপনি যা দেখেছিলেন তার ফলাফলটি যাচাই করুন৷ এছাড়াও যাচাই করুন যে আপনি URL-এর শেষে প্যারামিটার সরবরাহ করে জেনারেট করা কুইজ সামঞ্জস্য করতে পারেন।

অভিনন্দন! আপনার অ্যাপ এখন Google এর ক্লাউডে চলছে। এটি সম্পর্কে চিন্তা না করেই, আপনার অ্যাপটি সর্বজনীনভাবে উপলব্ধ, TLS (HTTPS) এনক্রিপশন সহ, এবং স্বয়ংক্রিয়ভাবে ট্র্যাফিকের মানসিক বিভ্রান্তিকর মাত্রায় স্কেলিং।

9. সব টুকরা একসাথে নির্বাণ

9927db1725bcd5d6.png

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

328ee05579ea05f9.png

কিছু মুহুর্তের মধ্যে, আপনার একটি নতুন কুইজ (নীচের ছবিতে "আমার নতুন ক্যুইজ" দেখুন), একটি AI জেনারেট করা থাম্বনেইল ইমেজ থাকা উচিত, যা আপনি সংশ্লিষ্ট বোতামগুলির মাধ্যমে সম্পাদনা, চালাতে, ক্লোন করতে বা মুছতে পারেন৷ এই নতুন কুইজটি আপনার টেমপ্লেট করা প্রম্পটের উপর ভিত্তি করে আপনি যে ওয়েব পরিষেবাটি স্থাপন করেছেন তা ব্যবহার করে তৈরি করা হয়েছে!

1719169140978b63.png

10. পরিষ্কার করা

c1592d590c563428.png

পরিষেবাটি ব্যবহার না করার সময় ক্লাউড রান চার্জ না করলেও, বিল্ট কন্টেইনার ইমেজ সংরক্ষণ করার জন্য আপনাকে চার্জ করা হতে পারে।

চার্জ এড়াতে আপনি হয় আপনার GCP প্রকল্প মুছে ফেলতে পারেন, যা সেই প্রকল্পের মধ্যে ব্যবহৃত সমস্ত সংস্থানের জন্য বিলিং বন্ধ করে দেবে, অথবা এই কমান্ডটি ব্যবহার করে আপনার কন্টেইনার ছবি মুছে ফেলতে পারেন:

gcloud config set artifacts/repository cloud-run-source-deploy
gcloud config set artifacts/location us-central1
gcloud artifacts docker images list

# Note image tag for resulting list

gcloud artifacts docker images delete <IMAGE-TAG>

আপনার ক্লাউড রান পরিষেবা মুছতে, এই কমান্ডটি ব্যবহার করুন:

gcloud run services delete quiz-generator --region us-central1 --quiet

11. আপনি এটা করেছেন!

910162be58c0f6d6.png

অভিনন্দন - আপনি সফলভাবে একটি LLM প্রম্পট তৈরি করেছেন এবং সেই প্রম্পটটি ব্যবহার করে একটি ক্লাউড রান মাইক্রোসার্ভিস স্থাপন করেছেন৷ এখন আপনি প্রাকৃতিক ভাষায় প্রোগ্রাম করতে পারেন এবং বিশ্বের সাথে আপনার সৃষ্টি শেয়ার করতে পারেন!

আমি আপনাকে একটি গুরুত্বপূর্ণ প্রশ্ন রেখে যেতে চাই:

একবার আপনি আপনার ডেভেলপার পরিবেশে আপনার অ্যাপটি কাজ করার পরে, ক্লাউড রান দ্বারা প্রদত্ত সমস্ত উত্পাদন-গ্রেড বৈশিষ্ট্য সহ ক্লাউডে স্থাপন করার জন্য আপনাকে কত লাইন কোড পরিবর্তন করতে হবে?

উত্তর, অবশ্যই, শূন্য। :)

চেক আউট করার জন্য অন্যান্য কোডল্যাব...

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

12. কল টু অ্যাকশন

আপনি যদি এই কোডল্যাবটি উপভোগ করেন এবং Google ক্লাউডের সাথে আরও বেশি সময় ব্যয় করার সম্ভাবনা থাকে তবে আপনার সত্যিই আজই Google ক্লাউড উদ্ভাবকদের সাথে যোগ দেওয়া উচিত!

498cab7d87ec12d3.png

Google ক্লাউড উদ্ভাবক বিনামূল্যে এবং এতে রয়েছে:

  • সরাসরি Googlers থেকে সর্বশেষ জানতে সরাসরি আলোচনা , AMA এবং রোডম্যাপ সেশন
  • আপনার ইনবক্সে সরাসরি Google ক্লাউডের সর্বশেষ খবর
  • ডিজিটাল ব্যাজ এবং ভিডিও কনফারেন্স ব্যাকগ্রাউন্ড
  • স্কিল বুস্টে ল্যাব এবং শেখার 500 ক্রেডিট

নিবন্ধন করতে এখানে ক্লিক করুন!