Gemini CodeLab-এর সাথে সমস্যা সমাধান করুন

1. ভূমিকা

এই ল্যাবে, আপনি Gemini ব্যবহার করবেন, Google ক্লাউডে একটি AI-চালিত সহযোগী, ত্রুটির লগগুলি বিশ্লেষণ করে, সমস্যার মূল কারণ চিহ্নিত করে এবং কীভাবে এটি ঠিক করা যায় তা খুঁজে বের করার মাধ্যমে ক্লাউড ফাংশন স্থাপনের সমস্যা সমাধান করতে৷

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

  • প্রাসঙ্গিক Google API সক্রিয় করা এবং প্রদত্ত কোড থেকে একটি ক্লাউড ফাংশন তৈরি করা সহ পরিবেশ সেটআপ করতে আপনি ক্লাউড শেল টার্মিনাল এবং gcloud CLI ব্যবহার করবেন
  • ক্যাপচার করা তথ্য বোঝার জন্য আপনি লগ সারাংশ তৈরি করতে ক্লাউড লগিং লগ সারাংশ ব্যবহার করবেন।
  • সমস্যা সমাধান এবং সমস্যার সমাধানে মিথুন সহায়তা পেতে আপনি মিথুনের সাথে চ্যাট করবেন।

যা শিখবেন...

  • গুগল ক্লাউড পর্যবেক্ষণযোগ্যতার সাথে এবং সমস্যার সমস্যা সমাধানের জন্য কীভাবে জেমিনি ব্যবহার করবেন।
  • মিথুনের সাহায্যে ক্লাউড ফাংশন লগগুলি কীভাবে সন্ধান করবেন এবং বুঝবেন৷

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

  • ক্রোম ওয়েব ব্রাউজার
  • বিলিং সক্ষম সহ একটি Google ক্লাউড প্রকল্প৷
  • প্রজেক্টে অ্যাক্সেসের অনুমতি সহ একটি Google অ্যাকাউন্ট যা আপনাকে API সক্ষম করতে এবং সংস্থানগুলি পরিচালনা করতে দেয়৷

এই ল্যাবটি DevOps এবং প্ল্যাটফর্ম ইঞ্জিনিয়ার এবং নতুনদের সহ সকল স্তরের সফ্টওয়্যার ডেভেলপারদের লক্ষ্য করে। আমাদের ফোকাস সমস্যা সমাধানে মিথুন রাশির ক্ষমতার সাথে অভিজ্ঞতা অর্জনের উপর থাকবে।

2. সেটআপ

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

পরিবেশ কনফিগার করুন

1. https://console.cloud.google.com খুলে ক্লাউড কনসোলে লগ-ইন করুন।

2. একটি Google ক্লাউড প্রকল্প নির্বাচন করুন যেটির সাথে আপনি এই ল্যাবের জন্য কাজ করার পরিকল্পনা করছেন৷

22170459a4f3ba59.png

3. কনসোলে ক্লাউড ফাংশন পৃষ্ঠা খুলুন। আপনি নেভিগেশন মেনু থেকে ক্লাউড ফাংশন নির্বাচন করে এটি করতে পারেন (কনসোল উইন্ডোতে উপরের বাম আইকন ☰)।

9d27c844c16ad3e4.png

বিকল্পভাবে, আপনি কনসোলের অনুসন্ধান এলাকায় "ক্লাউড ফাংশন" অনুসন্ধান করতে পারেন:

35f23e52875b26cd.png

ফাংশনের তালিকার উপরে ফাংশন তৈরি করুন বোতামে ক্লিক করুন 34b5e7e36f4e48e9.png

আপনি যদি আগে এই প্রকল্পে ক্লাউড ফাংশন ব্যবহার না করেন, কাজ করার জন্য আপনাকে Google API সক্ষম করতে বলা হবে৷

5b7978521d6f56f7.png

চালিয়ে যেতে ENABLE এ ক্লিক করুন।

4. নতুন ক্লাউড ফাংশনের মৌলিক বৈশিষ্ট্য সংজ্ঞায়িত করুন।

  • নামটি " codelab-cf " হিসাবে সেট করুন
  • অপ্রমাণিত আহ্বানের অনুমতি দিন বিকল্পটি নির্বাচন করুন

6a2aaf9bedd161d9.png

ধাপটি সম্পূর্ণ করতে, উইন্ডোর নীচে বাম অংশে NEXT বোতামে ক্লিক করুন:

f4e76470dbdf6854.png

পরবর্তীতে ক্লিক করার পরে আপনাকে অতিরিক্ত Google API(গুলি) সক্ষম করতে বলা হতে পারে৷ ধাপ 4 এর মত, ENABLE এ ক্লিক করুন।

1ad7bf15c07eda49.png

ক্লাউড ফাংশনের রানটাইম এবং কোড সেট আপ করুন

এই কোডল্যাব পাইথনকে প্রোগ্রামিং ভাষা হিসেবে ব্যবহার করে। আপনি Python এর সাথে অপরিচিত হলে চিন্তা করবেন না। এই কোডল্যাবটি সম্পূর্ণ করতে আপনার পাইথন সম্পর্কে জ্ঞানের প্রয়োজন হবে না।

5. ফাংশনের রানটাইম হিসাবে পাইথন 3.11 নির্বাচন করুন

9a3cd8bf272b4d02.png

উল্লেখ্য যে রানটাইম পরিবর্তন ইনলাইন এডিটরে দেখানো সোর্স কোড পরিবর্তন করে।

6. স্বয়ংক্রিয়-জেনারেট কুইকস্টার্ট উদাহরণটি পরিবর্তন করতে ইনলাইন এডিটরে নীচের কোডটি অনুলিপি করুন।

from google.cloud import storage
import json
import re

client = storage.Client()

def get_object_list(request):
    if request.args and 'path' in request.args:
        path = request.args['path']
    else:
        return '{}'
    parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
    bucket, prefix = parsed.group(1), parsed.group(2)
    blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
    objects = []
    if (blobs):
        for blob in blobs:
            objects.append(blob.name)
    return json.dumps(objects)

এই কোডটি GET অনুরোধ থেকে path অ্যাট্রিবিউট পড়ে, বাকেটের নাম বাছাই করার জন্য পাথ পার্স করে এবং এই পাথে সঞ্চিত বস্তুর একটি তালিকা পেতে Google ক্লাউড স্টোরেজ API-কে কল করে। ফাংশন ( get_object_list ) একটি অনুরোধ গ্রহণ করে যা একটি ফ্লাস্ক অবজেক্ট একটি ইনপুট আর্গুমেন্ট হিসাবে এবং একটি JSON অ্যারে হিসাবে বস্তুর নাম প্রদান করে।

7. ইনলাইন এডিটরে থাকা ফাইলগুলির তালিকা থেকে requirements.txt ফাইলটি নির্বাচন করুন৷ ইনলাইন এডিটরে নীচের কোডটি অনুলিপি করে নির্ভরতার বর্তমান তালিকাটিকে নতুনটির সাথে প্রতিস্থাপন করুন।

google-cloud-storage

8. ক্লাউড ফাংশন স্থাপন করতে, নীচে বাম দিকে DEPLOY এ ক্লিক করুন৷

17c4828702a32cd9.png

স্থাপনা প্রক্রিয়া সম্পূর্ণ না হওয়া পর্যন্ত আপনাকে কয়েক মিনিট অপেক্ষা করতে হতে পারে। আপনি যদি সেটআপের নির্দেশাবলী ঘনিষ্ঠভাবে অনুসরণ করেন তবে আপনার স্থাপনা ব্যর্থ হিসাবে রিপোর্ট করা দেখতে আশা করা উচিত।

3. সমস্যা খুঁজে বের করা এবং সমাধান করা

এই বিভাগে আপনি লগ ব্যাখ্যা বৈশিষ্ট্য এবং অন্যান্য মিথুন সহায়তা ব্যবহার করবেন সমস্যা সনাক্ত করতে এবং এটি সমাধানের উপায়।

1. স্থাপনা ব্যর্থ হয়. আপনি একটি ত্রুটি বার্তা দেখতে পাবেন যা আপনাকে অতিরিক্ত তথ্য সহ এটি সম্পর্কে অবহিত করবে এবং স্থাপনার লগগুলি দেখার একটি বিকল্প। স্থাপনার লগ দেখতে ভিউ লগ ক্লিক করুন।

bc62db6ef3b35420.png

উল্লেখ্য যে স্থাপনার লগগুলি একই ব্রাউজারে একটি পৃথক ট্যাবে খোলা হবে। এই CodeLab সম্পূর্ণ করতে আপনাকে ট্যাবগুলির মধ্যে নেভিগেট করতে হবে৷

মনে রাখবেন যে আপনি লগ লাইনগুলি দেখতে নাও পেতে পারেন যখন লগগুলি দেখুন বা শুধুমাত্র কয়েকটি লাইন দেখতে পাবেন৷ এই ধরনের ইভেন্টে, লগ এক্সপ্লোরারের ক্যোয়ারী প্যানে সময়-সীমা নির্বাচক ব্যবহার করুন এবং শেষ 30 মিনিট নির্বাচন করুন।

e24856920201ebf8.png

2. খোলা ট্যাবে লগগুলি পর্যালোচনা করুন৷ লক্ষ্য করুন যে লগের সারাংশগুলি ব্যতিক্রমের কলস্ট্যাকের একাধিক লাইনের মতো দেখাচ্ছে৷ কারণ ক্লাউড ফাংশন stdout বা stderr এ প্রিন্ট করা টেক্সট ক্যাপচার করে এবং প্রতিটি লাইনকে আলাদা লগ এন্ট্রি হিসেবে লেখে। অন্যান্য লগ লাইনগুলি প্রস্থান ত্রুটি কোডের পাশাপাশি ক্লাউড ফাংশন এবং ক্লাউড রান API দ্বারা রিপোর্ট করা অতিরিক্ত তথ্যের সংক্ষিপ্ত বিবরণ দেয়।

b49e41594173b57c.png

একটি নির্দিষ্ট লগ সম্পর্কে আরও তথ্য দেখতে আপনি যে কোনও লাইনে ক্লিক করতে পারেন। প্রসারিত লগগুলিতে অতিরিক্ত UI উপাদান রয়েছে যা ক্লিক করলে আপনি লগ সম্পর্কে সমস্ত তথ্য অনুলিপি করতে পারবেন, লগ এন্ট্রির সমস্ত ডেটা প্রদর্শন করতে এবং মিথুন ব্যবহার করে লগ এন্ট্রি ব্যাখ্যা করতে সমস্ত ক্ষেত্র প্রসারিত করতে পারবেন৷

4. ব্যতিক্রম কলস্ট্যাক খুব তথ্যপূর্ণ নয়। ব্যতিক্রমের স্ট্যাক ট্রেস লগের শেষ খুঁজে পেতে লগগুলি দেখুন। এটি " Container called exit(1) " বলে লাইন। নিম্নলিখিত লগ সারাংশ বলে:

functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...

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

b815de46d1b4597c.png

যদি মিথুন আগে এই প্রকল্পে ব্যবহার করা না হয়, তাহলে আপনাকে একটি প্রয়োজনীয় API সক্ষম করতে বলা হবে৷ যদি আপনাকে API সক্ষম করার জন্য অনুরোধ করা হয়, এগিয়ে যেতে সক্ষম ক্লিক করুন।

7ca90e087a2e99d1.png

মনে রাখবেন যে মিথুন রাশিকে অনুরোধ করার সময় আপনি মাঝে মাঝে একটি ত্রুটি পেতে পারেন। এই ধরনের একটি ইভেন্টে, প্রতিক্রিয়া পেতে আপনার প্রম্পট অপারেশনটি আরও একবার পুনরাবৃত্তি করুন। উদাহরণস্বরূপ, " এই লগ এন্ট্রি ব্যাখ্যা করুন " বোতামটি আবার ক্লিক করুন৷

5. মিথুন দ্বারা দেওয়া ব্যাখ্যা পর্যালোচনা করুন। প্রদত্ত ব্যাখ্যাটি পর্যাপ্ত বা অস্পষ্ট না হলে, নিচের প্রম্পটগুলির মধ্যে একটি ব্যবহার করে বা আপনার নিজের প্রশ্ন রচনা করে মিথুনকে আরও তথ্য প্রদানের জন্য অনুরোধ করুন

আপনি এই লগ সম্পর্কে আরো তথ্য প্রদান করতে পারেন?
আপনি ত্রুটি সম্পর্কে আরো তথ্য প্রদান করতে পারেন?

6. তারপর সমস্যা সমাধানের জন্য পরামর্শের জন্য মিথুনকে অনুরোধ করুন। উদাহরণস্বরূপ, মিথুনকে জিজ্ঞাসা করুন

এই সমস্যার সমাধান কিভাবে?
এই ত্রুটি সমাধানের জন্য একটি সমাধান প্রস্তাব করুন
আমি এই ত্রুটিটি কিভাবে ঠিক করতে পারি তা পরামর্শ দিন

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

7. আপনি বর্তমানে একটি ট্যাব দেখতে পাচ্ছেন যা আপনাকে ক্লাউড ফাংশন লগগুলি দেখায়৷ আগের ট্যাবটি নির্বাচন করুন যা ত্রুটি সহ ক্লাউড ফাংশন স্থাপনার পৃষ্ঠাটি দেখায় এবং সম্পাদনা ক্লিক করুন৷

c3d9b207214a2240.png

8. নিশ্চিত করুন যে প্রমাণীকরণটি এখনও অননুমোদিত আমন্ত্রণগুলিকে অনুমতি দিতে সেট করা আছে এবং প্রয়োজনে নির্বাচন আপডেট করুন৷

6a2aaf9bedd161d9.png

9. ইনলাইন এডিটর দেখতে নিচের দিকে NEXT-এ ক্লিক করুন। জেমিনি সুপারিশ অনুসরণ করুন এবং ফাংশনের নাম get_order_list থেকে hello_http এ পরিবর্তন করুন।

সম্পাদনা শেষ করার পর DEPLOY এ ক্লিক করুন।

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

মনে রাখবেন যে ডিপ্লয়মেন্ট প্রক্রিয়া সম্পূর্ণ না হওয়া পর্যন্ত কনসোল আপনাকে শেষ ত্রুটি বার্তাটি দেখানো চালিয়ে যেতে পারে।

10. curl ব্যবহার করে নিম্নলিখিত HTTPS অনুরোধ পাঠিয়ে ক্লাউড ফাংশনটি চালু আছে কিনা তা পরীক্ষা করুন৷ আপনি ক্লাউড শেল ব্যবহার করতে পারেন বা curl এবং gcloud সিএলআই ইনস্টল করা আছে এমন যেকোনো টার্মিনাল থেকে করতে পারেন। ক্লাউড শেল টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালান।

curl -m 70 -X GET \
https://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"

মনে রাখবেন যে একটি টার্মিনাল থেকে এই কমান্ডটি চালানোর জন্য আপনাকে gcloud CLI ব্যবহার করে প্রমাণীকরণ করতে হবে এবং আপনার প্রকল্প আইডির মান পরিবেশ পরিবর্তনশীল GOOGLE_CLOUD_PROJECT এ সেট করতে হবে।

বোনাস

যখন পাইথন রানটাইম নির্বাচন করা হয়েছিল তখন hello_http ফাংশনের নামটি HTTP ট্রিগার করা ক্লাউড ফাংশনের জন্য একটি ডিফল্ট এন্ট্রি পয়েন্ট হিসাবে সংজ্ঞায়িত করা হয়েছিল। সোর্স কোডে ফাংশনের নাম হিসেবে get_order_list রাখা এবং রানটাইম ফিল্ড থেকে ডানদিকে ইনলাইন এডিটরের উপরে অবস্থিত ক্লাউড ফাংশনের এন্ট্রি পয়েন্ট ফিল্ড আপডেট করা বিকল্প সমাধান হতে পারে:

9a3cd8bf272b4d02.png

hello_http থেকে get_order_list এ এন্ট্রি পয়েন্ট পরিবর্তন করলে স্থাপনার সমস্যা সমাধান হবে।

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

পরিষ্কার করতে আপনি হয় প্রকল্পটি বন্ধ করতে পারেন বা ক্লাউড ফাংশন উদাহরণ মুছতে পারেন। আপনি কনসোল ব্যবহার করে বা নীচের মত CLI কমান্ড দিয়ে ক্লাউড ফাংশন মুছে ফেলতে পারেন:

gcloud functions delete codelab-cf --region=us-central1

5. অভিনন্দন!

অভিনন্দন - আপনি আপনার অ্যাপ্লিকেশানের সমস্যা সমাধান ও সমাধান করতে সফলভাবে জেমিনি ব্যবহার করেছেন এবং এখন বুঝতে পেরেছেন যে এটি কীভাবে লগগুলি বুঝতে এবং Google ক্লাউড সম্পর্কে প্রশ্নের উত্তর পেতে সহায়তা করতে পারে৷

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