ইভেন্ট ব্যবহার করে এজেন্টিক এআই অ্যাপ্লিকেশনের অ্যাসিঙ্ক্রোনাস আমন্ত্রণ

1. ভূমিকা

সংক্ষিপ্ত বিবরণ

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

তুমি কি করবে

এই ল্যাবে আপনি একটি ZooKeeper এজেন্টিক অ্যাপ্লিকেশন তৈরি করবেন যার একটি AI এজেন্ট থাকবে এবং কাল্পনিক চিড়িয়াখানার প্রাণীদের সম্পর্কে তথ্য প্রদানের জন্য কয়েকটি টুল ব্যবহার করবে।

চিড়িয়াখানার রক্ষকের চিত্রণ

আপনি ZooKeeper অ্যাপ্লিকেশনটিকে Cloud Run-এর পরিষেবা হিসেবে স্থাপন করবেন, যা একটি সম্পূর্ণরূপে পরিচালিত, সার্ভারলেস কম্পিউট প্ল্যাটফর্ম যা Google-এর পরিকাঠামোতে স্টেটলেস কন্টেইনার চালায়। তারপর আপনি একটি Eventarc ট্রিগার সেট আপ করবেন যা Pub/Sub বিষয়ে প্রকাশিত বার্তাগুলিকে অ্যাসিঙ্ক্রোনাসভাবে পরিচালনা করার জন্য পরিষেবার শেষ বিন্দুকে আহ্বান করবে। আপনি নিশ্চিত করবেন যে স্থাপনাটি সর্বোত্তম অনুশীলন অনুসরণ করে যার মধ্যে রয়েছে মনোনীত IAM পরিষেবা অ্যাকাউন্ট ব্যবহার করা, সর্বনিম্ন সুবিধাপ্রাপ্ত অ্যাক্সেস প্রদান করা এবং ZooKeeper অ্যাপ্লিকেশনের শেষ বিন্দু শুধুমাত্র Eventarc-এর কাছে প্রকাশ করে সম্ভাব্য আক্রমণের পৃষ্ঠকে হ্রাস করা। আপনি এটি Cloud Shell এবং Cloud কনসোলের সাহায্যে করবেন। আপনি Python-এর জন্য ADK এবং Cloud SDK লাইব্রেরি ব্যবহার করবেন। আচরণ পরীক্ষা করার জন্য আপনি gcloud CLI ব্যবহার করবেন।

তুমি কি শিখবে

  • আপনার ADK এজেন্টকে Google Cloud Run-এ স্থাপন করুন।
  • গুগল ক্লাউড রানে চলমান ADK এজেন্টের সাথে Eventarc ট্রিগার ইন্টিগ্রেট করুন।
  • গুগল ক্লাউড আইএএম-এর সাহায্যে ন্যূনতম সুবিধাপ্রাপ্ত অ্যাক্সেস নীতি ব্যবহার করে ইভেন্টার্কের সাথে আপনার স্থাপনা এবং ইন্টিগ্রেশন সুরক্ষিত করুন।
  • পাব/সাব থেকে বার্তা প্রকাশ করুন এবং টেনে আনুন।
  • গুগল ক্লাউড রানে আপনার অ্যাপ্লিকেশনের সর্বজনীন এক্সপোজার কমিয়ে আনুন।

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

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

অন্যান্য ব্রাউজার ব্যবহারের অভিজ্ঞতা ল্যাবে বর্ণিত অভিজ্ঞতা থেকে ভিন্ন হতে পারে।

ল্যাবে বর্ণিত কিছু ক্রিয়াকলাপ সম্পাদনের ক্ষেত্রে কর্পোরেট বা স্কুল অ্যাকাউন্ট ব্যবহার সীমিত হতে পারে।

2. পরিবেশ সেটআপ

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

যদি আপনার কোন Google অ্যাকাউন্ট না থাকে, তাহলে একটি Google অ্যাকাউন্ট তৈরি করুন

সেটআপ নির্দেশাবলী

  1. গুগল ক্লাউড কনসোলে সাইন-ইন করতে আপনার গুগল অ্যাকাউন্ট ব্যবহার করুন।
  2. 👉 উপরের নেভিগেশন বারে প্রজেক্ট পিকারটি খুলুন (এটি "একটি প্রকল্প নির্বাচন করুন" বলতে পারে অথবা একটি বিদ্যমান প্রকল্পের নাম দেখাতে পারে) অথবা Ctrl + O কীবোর্ড শর্টকাট ক্লিক করুন এবং একটি বিদ্যমান প্রকল্প নির্বাচন করুন অথবা একটি নতুন প্রকল্প তৈরি করুন। একটি নতুন প্রকল্প তৈরি করতে কয়েক সেকেন্ড সময় লাগবে। এটি প্রস্তুত না হওয়া পর্যন্ত অপেক্ষা করুন এবং প্রজেক্ট পিকার ব্যবহার করে এটি নির্বাচন করুন।
  1. 👉 গুগল ক্লাউড কনসোলের উপরে ক্লাউড শেল আইকনে ক্লিক করুন। (লাল আয়তক্ষেত্র দিয়ে চিহ্নিত): ক্লাউড শেল বোতাম
    যদি জিজ্ঞাসা করা হয়, তাহলে আপনার অ্যাকাউন্টের শংসাপত্র ব্যবহার করার জন্য ক্লাউড শেলকে অনুমোদন করতে পপ-আপ ডায়ালগ বক্সে **অনুমোদন** এ ক্লিক করুন।
    ডায়ালগ অনুমোদন করুন
  2. 👉💻 নিশ্চিত করুন যে gcloud CLI আপনার নির্বাচিত (অথবা তৈরি) প্রকল্পটি ব্যবহারের জন্য কনফিগার করা আছে। কনফিগার করা প্রকল্প আইডি পরীক্ষা করতে নিম্নলিখিত কমান্ডটি চালান:
    gcloud config get-value project
    
    আপনি নিম্নলিখিতগুলির মতো একটি আউটপুট দেখতে পাবেন বলে আশা করা হচ্ছে:
    Your active configuration is: [cloudshell-19597]
    [PROJECT_ID]
    
    যেখানে [PROJECT_ID] হবে আপনার নির্বাচিত বা তৈরি করা প্রকল্পের আইডি।👉💻 যদি আপনি অন্য কোনও মান দেখতে পান, তাহলে gcloud CLI কমান্ডের জন্য আপনার প্রকল্প আইডিটিকে ডিফল্ট প্রকল্প আইডি হিসেবে কনফিগার করতে নিম্নলিখিত কমান্ডটি চালান:
    gcloud config set project [YOUR_PROJECT_ID]
    
    উদাহরণস্বরূপ, যদি আপনার প্রোজেক্ট আইডি lab-project-id-example-123 হয় তাহলে কমান্ডটি হবে:
    gcloud config set project lab-project-id-example-123
    
    🤔💻 যদি আপনি আপনার প্রজেক্ট আইডি মনে করতে না পারেন, তাহলে সাম্প্রতিকতম থেকে শুরু করে আপনার অ্যাক্সেস থাকা সমস্ত প্রজেক্ট আইডি তালিকাভুক্ত করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
    gcloud projects list \
        --format='value(projectId)' \
        --sort-by='~createTime'
    
  1. 👉💻 পরিবেশ ভেরিয়েবলে রিসোর্স এবং আপনার প্রকল্পের আইডি এবং নম্বর সরবরাহের জন্য অবস্থান সেট আপ করুন:
    export LOCATION="us-central1"
    export PROJECT_ID=$(gcloud config get-value project)
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    
  2. 👉💻 এই ল্যাবের জন্য প্রয়োজনীয় গুগল এপিআই সক্ষম করুন।
    gcloud services enable \
        aiplatform.googleapis.com \
        eventarc.googleapis.com \
        run.googleapis.com \
        artifactregistry.googleapis.com \
        cloudbuild.googleapis.com \
        pubsub.googleapis.com
    
    ধৈর্য ধরুন, এই কমান্ডটি কয়েক মিনিট সময় নিতে পারে। কমান্ডটি সফলভাবে কার্যকর করার পরে, আপনি এইরকম একটি বার্তা দেখতে পাবেন:
    Operation "operations/ab12345c-6e7f-8ghi-jkl9-m0e1d23456f7" finished successfully.
    

৩. ZooKeeper ডেমো অ্যাপ্লিকেশন স্থাপন করুন

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

পাব/সাব রিসোর্স সেট আপ করা হচ্ছে

তুমি দুটি পাব/সাব টপিক তৈরি করবে। একটি থার্ড-পার্টি সার্ভিস ব্যবহার করবে তোমার এজেন্টিক এআই অ্যাপ্লিকেশনে ইভেন্ট পাঠানোর জন্য। আরেকটি অ্যাপ্লিকেশনের জন্য যা ইভেন্ট প্রক্রিয়াকরণের ফলাফল প্রকাশ করবে।

  1. 👉💻 এজেন্টিক এআই অ্যাপ্লিকেশনটি ট্রিগার করতে ব্যবহৃত একটি পাব/সাব বিষয় তৈরি করুন:
    gcloud pubsub topics create invoke_agent
    export INVOKE_TOPIC_ID=$(gcloud pubsub topics describe invoke_agent --format="value(name)")
    
  2. 👉💻 একটি পাব/সাব বিষয় তৈরি করুন যেখানে অ্যাপ্লিকেশনটি তার প্রতিক্রিয়া পোস্ট করতে পারবে:
    gcloud pubsub topics create agent_responses
    export RESPONSE_TOPIC_ID=$(gcloud pubsub topics describe agent_responses --format="value(name)")
    gcloud pubsub subscriptions create agent_responses \
        --topic=agent_responses
    
    এই কমান্ডগুলি তৈরি করা পাব/সাব বিষয়ের জন্য একটি সাবস্ক্রিপশনও তৈরি করে। ফলাফল দেখার জন্য ডেমো চালানোর সময় সাবস্ক্রিপশনটি ব্যবহার করা হবে।

পরিষেবা অ্যাকাউন্ট এবং প্রকল্প-স্তরের IAM নীতি সেট আপ করা

ক্লাউড রান পরিষেবা এবং ইভেন্টার্ক ট্রিগারের অ্যাক্সেসের সুযোগ সীমিত করার জন্য আপনাকে দুটি পরিষেবা অ্যাকাউন্ট তৈরি করতে হবে, যা সর্বনিম্ন বিশেষাধিকার অ্যাক্সেস নীতি অনুসরণ করে। ক্লাউড রান পরিষেবার লগ এবং ট্রেস লেখার জন্য, গুগল ভার্টেক্স এআই-তে জেমিনি এলএলএম-কে কল করার জন্য এবং একটি পাব/সাব বিষয়ে ফলাফল পোস্ট করার জন্য অনুমতি প্রয়োজন। ইভেন্টার্ক ট্রিগারের ন্যূনতম অ্যাক্সেসের জন্য ক্লাউড রান জুকিপার পরিষেবাতে কল করার জন্য এবং পোস্ট করা ইভেন্টগুলি পড়ার জন্য পাব/সাব অ্যাক্সেস করার জন্য অনুমতি প্রয়োজন। এই নির্দেশাবলী আপনাকে ট্রিগারের পরিষেবা অ্যাকাউন্টকে Pub/সাব সিস্টেম পরিষেবার ছদ্মবেশ ধারণ করার জন্য প্রয়োজনীয় অনুমতি প্রদান করতে নির্দেশ দেয়। আপনি ইভেন্টার্ক ট্রিগার রিসোর্স তৈরি করার পরে আপনি roles/run.invoker ভূমিকা প্রদানকারী কমান্ডটি চালাবেন যা ট্রিগারের পরিষেবা অ্যাকাউন্টকে ক্লাউড রান পরিষেবাতে কল করতে সক্ষম করে।

  1. 👉💻 ক্লাউড রান পরিষেবার জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন:
    gcloud iam service-accounts create zookeeper-cloudrun-sa
    export ZOOKEEPER_SA="zookeeper-cloudrun-sa@${PROJECT_ID}.iam.gserviceaccount.com"
    
  2. 👉💻 পরিষেবা অ্যাকাউন্টটিকে লগ এবং ট্রেস লেখার এবং Vertex AI-তে Gemini মডেল ব্যবহার করার অনুমতি দিন:
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
         --member="serviceAccount:${ZOOKEEPER_SA}" \
         --role="roles/logging.logWriter" \
         --condition=None
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${ZOOKEEPER_SA}" \
        --role="roles/cloudtrace.agent" \
        --condition=None
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member="serviceAccount:${ZOOKEEPER_SA}" \
        --role="roles/aiplatform.user" \
        --condition=None
    
  3. 👉💻 'agent_responses' বিষয়ে বার্তা পোস্ট করার জন্য পরিষেবা অ্যাকাউন্টটিকে অনুমতি দিন:
    gcloud pubsub topics add-iam-policy-binding agent_responses \
        --member="serviceAccount:${ZOOKEEPER_SA}" \
        --role="roles/pubsub.publisher"
    
  4. 👉💻 Eventarc ট্রিগারের জন্য একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন:
    gcloud iam service-accounts create zookeeper-trigger-sa
    export TRIGGER_SA="zookeeper-trigger-sa@${PROJECT_ID}.iam.gserviceaccount.com"
    
  5. 👉💻 পাব/সাব সিস্টেম সার্ভিস অ্যাকাউন্টকে প্রমাণীকৃত পুশ অনুরোধ করার অনুমতি দিন:
    gcloud iam service-accounts add-iam-policy-binding "${TRIGGER_SA}" \
           --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
        --role="roles/iam.serviceAccountTokenCreator"
    
    ৮ এপ্রিল, ২০২১ সালের পরে যদি কোনও প্রকল্প তৈরি করা হয় তবে এই আদেশটি ঐচ্ছিক

ZooKeeper অ্যাপটি ক্লাউড রানে স্থাপন করা হচ্ছে

আপনি GitHub থেকে ডেমো অ্যাপ্লিকেশনের কোডটি ডাউনলোড করবেন এবং কোডটি ক্লাউড রানে স্থাপন করবেন।

  1. 👉💻 এজেন্টিক এআই অ্যাপ্লিকেশনটি ডাউনলোড করুন:
    mkdir zoo-keeper-lab && cd zoo-keeper-lab
    git init
    git remote add origin https://github.com/GoogleCloudPlatform/devrel-demos
    git config set core.sparseCheckout true
    echo "ai-ml/agent-labs/adk_invoke_with_pubsub/" >> .git/info/sparse-checkout
    git pull origin main --depth 1
    cd ai-ml/agent-labs/adk_invoke_with_pubsub/
    
    এই কমান্ডগুলি ডাউনলোডের সময় কমাতে ডেমো অ্যাপের সাহায্যে ফোল্ডারের Git স্পার্স চেকআউট ব্যবহার করে।
  2. 👉💻 ক্লাউড রানে এজেন্টিক এআই অ্যাপ্লিকেশনটি স্থাপন করুন:
    gcloud run deploy zookeeper-agent \
        --region="${LOCATION}" \
        --source="." \
        --no-allow-unauthenticated \
        --quiet \
        --service-account="${ZOOKEEPER_SA}" \
        --set-env-vars="REPLY_TOPIC_ID=${RESPONSE_TOPIC_ID}"
    

Eventarc ট্রিগার কনফিগার করুন

সমস্ত রিসোর্স (পাব/সাব টপিক, আইএএম সার্ভিস অ্যাকাউন্ট এবং ক্লাউড রান সার্ভিস) প্রস্তুত করার পর, ইভেন্টার্ক ট্রিগার রিসোর্স সেট আপ করার সময় এসেছে। আপনি ইভেন্টার্ক ট্রিগার রিসোর্স তৈরি করবেন এবং ট্রিগারের সার্ভিস অ্যাকাউন্টে ক্লাউড রান সার্ভিস কল করার অনুমতি দেবেন।

  1. 👉💻 Eventarc ট্রিগার তৈরি করুন:
    gcloud eventarc triggers create invoke-agent \
        --location="${LOCATION}" \
        --destination-run-service="zookeeper-agent" \
        --destination-run-path="/zookeeper" \
        --destination-run-region="${LOCATION}" \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic="${INVOKE_TOPIC_ID}" \
        --service-account="${TRIGGER_SA}"
    
  2. 👉💻 ক্লাউড রান পরিষেবা চালু করার জন্য ট্রিগারের পরিষেবা অ্যাকাউন্টে অনুমতি দিন:
    gcloud run services add-iam-policy-binding zookeeper-agent \
        --region="${LOCATION}" \
        --member="serviceAccount:${TRIGGER_SA}" \
        --role="roles/run.invoker"
    

৪. সমাধানটি কীভাবে কাজ করে তা পর্যালোচনা করুন

এখন আপনি কী ব্যবহার করেছেন তা পর্যালোচনা করুন। নিচের চিত্রটি সমস্ত রিসোর্স এবং তারা কীভাবে একে অপরের সাথে ইন্টারঅ্যাক্ট করে তা প্রতিফলিত করে। 'invoke_agent' বিষয়ে একটি বার্তা প্রকাশ করার জন্য আপনি gcloud CLI ব্যবহার করবেন। এটি এমন একটি ইভেন্টের অনুকরণ করবে যা একটি তৃতীয় পক্ষের পরিষেবা এজেন্টিক AI অ্যাপ্লিকেশনটি চালু করার জন্য মেসেজিং পরিষেবাতে লগ করে।

সমাধান চিত্র

ন্যূনতম সুবিধাপ্রাপ্ত অ্যাক্সেসের পরে স্থাপনাটি সুরক্ষিত করা হয়। ক্লাউড রান পরিষেবা প্রমাণীকরণ জোরদার করে (পূর্ববর্তী বিভাগের ধাপ #9-এ --no-allow-unauthenticated যুক্তি দেখুন)। শুধুমাত্র roles/run.invoker বা অনুরূপ অনুমতি সহ পরিচয় পরিষেবাটি কল করতে পারে। এবং এই ভূমিকাটি শুধুমাত্র Eventarc ট্রিগারের পরিষেবা অ্যাকাউন্টে মঞ্জুর করা হয়। একইভাবে 'invoke_agent' বিষয়ের অ্যাক্সেস ন্যূনতম করা হয় যাতে ইভেন্টগুলির অননুমোদিত প্রকাশনা নিষিদ্ধ করা যায়। Pub/Sub বিষয়ের পোস্টিং বাইপাস করে সরাসরি ZooKeeper এজেন্টকে কল করা এখনও সম্ভব। অ্যাপ্লিকেশনের শেষ বিন্দুটি কীভাবে জনসাধারণের অ্যাক্সেস থেকে লুকাবেন তা জানতে বিভাগ 6 দেখুন।

কর্মপ্রবাহ চালান

আপনি ZooKeeper-এ প্রাকৃতিক ভাষায় একটি প্রশ্ন প্রকাশ করে একটি বাহ্যিক ঘটনা অনুকরণ করবেন।

👉💻 পাব/সাব টপিকে একটি বার্তা পোস্ট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud pubsub topics publish invoke_agent \
    --message='{"user_id": "important_app", "prompt": "How many animals are in the zoo?"}'

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

আপনি পরীক্ষা করতে পারেন যে এজেন্ট ইভেন্টটি পেয়েছে কিনা, অনুরোধটি প্রক্রিয়া করেছে কিনা এবং 'agent_responses' বিষয়ে প্রতিক্রিয়া পোস্ট করেছে কিনা। প্রতিক্রিয়াটি পড়ার জন্য, আপনাকে 'agent_responses' সাবস্ক্রিপশন ব্যবহার করতে হবে (কোডল্যাব বিষয় এবং প্রতিক্রিয়াগুলির জন্য সাবস্ক্রিপশন উভয়ের জন্য একই আইডি ব্যবহার করে)।

👉💻 পাব/সাব সাবস্ক্রিপশন থেকে এজেন্টের প্রতিক্রিয়া পড়তে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud pubsub subscriptions pull agent_responses --auto-ack

আউটপুটটি বার্তা মেটাডেটা এবং পেলোড সহ একটি টেবিল প্রিন্ট করবে যেখানে উত্তর থাকবে যে চিড়িয়াখানায় 33টি প্রজাতি রয়েছে। --auto-ack পতাকাটি টানার পরে বার্তাটি স্বয়ংক্রিয়ভাবে স্বীকার করে, তাই এটি আর বিতরণ করা হবে না।

কিভাবে এটা কাজ করে

ক্লাউড শেল এডিটর খুলে ~/zoo-keeper-lab ফোল্ডারের অধীনে থাকা ফাইলগুলি দেখে এজেন্টিক এআই অ্যাপ্লিকেশনের সোর্স কোডটি দেখুন। আপনি GitHub- এও সোর্স কোডটি দেখতে পারেন।

  • main.py একটি মৌলিক FastAPI ওয়েব অ্যাপ্লিকেশন প্রয়োগ করে যার একটি একক হ্যান্ডলার থাকে যা Eventarc ইভেন্টগুলি প্রক্রিয়া করে।
  • processor.py ইভেন্টের বার্তা বিশ্লেষণ করে ব্যবহারকারী আইডি এবং অনুরোধটি পুনরুদ্ধার করে। তারপর এটি ADK রানারে একটি নতুন সেশন তৈরি করে এবং অনুরোধটি প্রক্রিয়া করার জন্য Zookeeper এজেন্টকে ডাকে। এজেন্টের প্রতিক্রিয়া 'agent_responses' Pub/Sub টপিকে পোস্ট করা হয়।
  • zookeeper_agent সাবফোল্ডারটি ADK এজেন্টের সোর্স কোড হোস্ট করে। adk CLI ব্যবহার করে এজেন্টের সাথে ইন্টারঅ্যাক্ট করার জন্য আপনি অ্যাপ্লিকেশনের রুট ফোল্ডার থেকে adk run zookeeper_agent কমান্ডটি চালাতে পারেন।

কিভাবে সমস্যা সমাধান করবেন

যদি পূর্ববর্তী কোনও কমান্ড ব্যর্থ হয়, তাহলে ত্রুটি বার্তাটি মনোযোগ সহকারে পড়ুন। যদি ক্লাউড রানে স্থাপনা ব্যর্থ হয়, তাহলে প্রথম পদক্ষেপটি হবে প্রক্রিয়াটির কোন পর্যায়ে ব্যর্থতা ঘটেছে তা নির্ধারণ করা।

  • যদি "gcloud run deploy..." কমান্ডের আউটপুট রিপোর্ট করে যে বিল্ড ব্যর্থ হয়েছে, তাহলে আউটপুটে বিল্ড লগের URL দেখুন এবং এটি একটি পৃথক উইন্ডোতে খুলুন।
  • যদি আউটপুট "service failed to start" বা অনুরূপ কিছু বলে, তাহলে এর অর্থ হল পরিষেবাটি স্থাপন করা হয়েছে কিন্তু তারপর কার্যকরকরণ ব্যর্থ হয়েছে healthcheck। এই ক্ষেত্রে Logs Explorer খুলুন অথবা gcloud CLI কমান্ডের জন্য নিম্নলিখিত অনুচ্ছেদটি দেখুন। ব্যর্থতার মূল কারণ খুঁজে পেতে লগগুলি পড়ুন।

যদি আপনি পাব/সাব-এ কোনও বার্তা পোস্ট করেন কিন্তু এজেন্ট সাড়া না দেয় অথবা উত্তরটি অদ্ভুত দেখায় তাহলে কী হবে?

👉💻 সাম্প্রতিক এক্সিকিউশন থেকে পোস্ট করা অ্যাপ্লিকেশন লগগুলি পড়তে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud logging read \
    'resource.type = "cloud_run_revision" AND \
     resource.labels.service_name = "zookeeper-agent" AND \
     resource.labels.location = "us-central1"'

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

৫. স্থাপনার নিরাপত্তা জোরদার করুন

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

👉💻 এই আক্রমণ ভেক্টরটি বন্ধ করুন, পরিষেবাটিতে কলগুলিকে সীমিত সংগ্রহ থেকে সীমাবদ্ধ করে, যার মধ্যে রয়েছে Eventarc ট্রিগার:

gcloud run services update zookeeper-agent --region=${LOCATION} --ingress=internal

এখন, যদি আপনি আপনার স্থানীয় মেশিন থেকে পরিষেবার URL কল করার চেষ্টা করেন তবে আপনি "404 পৃষ্ঠা পাওয়া যায়নি" ত্রুটি পাবেন।

👉💻 সার্ভিস এন্ডপয়েন্টে অনুরোধ পাঠাতে কার্ল ব্যবহার করুন:

URL=$(gcloud run services describe zookeeper-agent --region=${LOCATION} --format='value(status.url)')
curl -X POST -d '{}' "${URL}/zookeeper"

আপনি নিচের মত একটি আউটপুট দেখতে পাবেন:

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>404 Page not found</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Page not found</h1>
<h2>The requested URL was not found on this server.</h2>
<h2></h2>
</body></html>

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

6. সারাংশ

অভিনন্দন! আপনি সফলভাবে এমন একটি পরিবেশ সেট আপ করেছেন যা ইনকামিং ইভেন্টগুলির দ্বারা ট্রিগার হওয়া আপনার এজেন্টিক এআই অ্যাপ্লিকেশনটিকে অ্যাসিঙ্ক্রোনাসভাবে চালু করার জন্য।

পরিষ্কার করা

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

এটি করার দুটি পদ্ধতি আছে:

পদ্ধতি ১ : প্রকল্পটি বন্ধ করা

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

gcloud projects delete $(gcloud config get-value project) --quiet

পদ্ধতি ২ : প্রকল্পের রিসোর্স মুছে ফেলা

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

gcloud run services delete zookeeper-agent --region=${LOCATION}

Eventarc ট্রিগার সংজ্ঞা এবং Pub/Sub বিষয়গুলি ব্যবস্থাপনা খরচ আরোপ করে না (আরও বিস্তারিত জানার জন্য Eventarc মূল্য এবং Pub/Sub মূল্য দেখুন)।

প্রকল্পটি বন্ধ করার বিষয়ে আরও জানুন।

এরপর কি?