'ভাইব চেক' থেকে শুরু করে ডেটা-চালিত এজেন্ট মূল্যায়ন পর্যন্ত

1. ভূমিকা

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

এই ল্যাবটি ADK-এর সাথে মাল্টি-এজেন্ট সিস্টেম তৈরির একটি ফলো-আপ।

সেই ল্যাবে, আপনি একটি কোর্স তৈরির সিস্টেম তৈরি করেছেন যার মধ্যে রয়েছে:

  1. গবেষক এজেন্ট : হালনাগাদ তথ্য খুঁজে পেতে google_search ব্যবহার করা।
  2. বিচারক এজেন্ট : গবেষণার মান এবং সম্পূর্ণতার জন্য সমালোচনা করা।
  3. কন্টেন্ট বিল্ডার এজেন্ট : গবেষণাকে একটি কাঠামোগত কোর্সে রূপান্তরিত করা।
  4. অর্কেস্ট্রেটর এজেন্ট : এই বিশেষজ্ঞদের মধ্যে কর্মপ্রবাহ এবং যোগাযোগ পরিচালনা করা।

এতে একটি ওয়েব অ্যাপও অন্তর্ভুক্ত ছিল যা ব্যবহারকারীদের একটি কোর্স তৈরির অনুরোধ জমা দিতে এবং প্রতিক্রিয়া হিসাবে একটি কোর্স পেতে অনুমতি দেয়।

গবেষক , বিচারক এবং কন্টেন্ট বিল্ডারকে পৃথক ক্লাউড রান পরিষেবায় A2A এজেন্ট হিসেবে নিযুক্ত করা হয়। অর্কেস্ট্রেটর হল ADK সার্ভিস API সহ আরেকটি ক্লাউড রান পরিষেবা।

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

তাহলে, আমরা একটি বিতরণযোগ্য মাল্টি-এজেন্ট সিস্টেম তৈরি করেছি। কিন্তু আমরা কীভাবে জানব যে এটি আসলেই ভালোভাবে কাজ করছে কিনা? গবেষক কি সবসময় প্রাসঙ্গিক তথ্য খুঁজে পান? বিচারক কি খারাপ গবেষণা সঠিকভাবে চিহ্নিত করেন?

এই ল্যাবে, আপনি Vertex AI Gen AI মূল্যায়ন পরিষেবা ব্যবহার করে ডেটা-চালিত মূল্যায়নের জন্য বিষয়গত "ভাইব চেক" ট্রেড করবেন। ল্যাব 1-এ নির্মিত বিতরণকৃত মাল্টি-এজেন্ট সিস্টেমকে কঠোরভাবে মূল্যায়ন করার জন্য আপনি অ্যাডাপ্টিভ রুব্রিক্স এবং টুল ইউজ কোয়ালিটি মেট্রিক্স বাস্তবায়ন করবেন। অবশেষে, আপনি একটি CI/CD পাইপলাইনের মধ্যে এই প্রক্রিয়াটি স্বয়ংক্রিয় করবেন, নিশ্চিত করবেন যে প্রতিটি স্থাপনা আপনার উৎপাদন এজেন্টদের নির্ভরযোগ্যতা এবং নির্ভুলতা বজায় রাখে।

তুমি তোমার এজেন্টদের জন্য একটি ধারাবাহিক মূল্যায়ন পাইপলাইন তৈরি করবে। তুমি শিখবে কিভাবে:

  1. গুগল ক্লাউড রান (শ্যাডো ডিপ্লয়মেন্ট) এর একটি ব্যক্তিগত ট্যাগযুক্ত রিভিশনে আপনার এজেন্টদের মোতায়েন করুন।
  2. Vertex AI Gen AI মূল্যায়ন পরিষেবা ব্যবহার করে সেই নির্দিষ্ট সংশোধনের বিরুদ্ধে একটি স্বয়ংক্রিয় মূল্যায়ন স্যুট চালান।
  3. ফলাফলগুলি কল্পনা করুন এবং বিশ্লেষণ করুন।
  4. আপনার CI/CD পাইপলাইনের অংশ হিসেবে মূল্যায়নটি ব্যবহার করুন।

2. মূল ধারণা: এজেন্ট মূল্যায়ন তত্ত্ব

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

মৌলিক পার্থক্য হলো ডিসকভারি বনাম ডিফেন্স :

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

এই ল্যাবে, আমরা ক্রমাগত মূল্যায়নের উপর মনোযোগ দেব। আমরা একটি স্বয়ংক্রিয় রিগ্রেশন টেস্টিং পাইপলাইন তৈরি করব যা প্রতিবার যখন কেউ AI এজেন্টে পরিবর্তন আনবে তখনই চলবে, ঠিক সেই ইউনিট পরীক্ষাগুলির মতো।

কোড লেখার আগে, আমরা কী পরিমাপ করছি তা বোঝা অত্যন্ত গুরুত্বপূর্ণ।

"ভাইব চেক" ফাঁদ

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

  • অ-নির্ধারণবাদ : এজেন্টরা প্রতিবার ভিন্ন ভিন্ন উত্তর দিতে পারে। আপনার পরিসংখ্যানগতভাবে উল্লেখযোগ্য নমুনা আকারের প্রয়োজন।
  • অদৃশ্য রিগ্রেশন : একটি প্রম্পট উন্নত করলে ভিন্ন ব্যবহারের ক্ষেত্রে সমস্যা হতে পারে।
  • মানবিক পক্ষপাত : "এটা ভালো দেখাচ্ছে" বিষয়টা ব্যক্তিগত।
  • সময়সাপেক্ষ কাজ : প্রতিটি কমিটের সাথে কয়েক ডজন দৃশ্যপট ম্যানুয়ালি পরীক্ষা করা ধীর।

"ভাইব চেক" ফাঁদ

এজেন্টের কর্মক্ষমতা গ্রেড করার দুটি উপায়

একটি শক্তিশালী পাইপলাইন তৈরি করতে, আমরা বিভিন্ন ধরণের গ্রেডার একত্রিত করি:

  1. কোড-ভিত্তিক গ্রেডার (নির্ধারণী) :
    • তারা যা পরিমাপ করে : কঠোর সীমাবদ্ধতা (যেমন, "এটি কি বৈধ JSON ফেরত দিয়েছে?", "এটি কি search সরঞ্জামটিকে কল করেছে?")।
    • সুবিধা : দ্রুত, সস্তা, ১০০% নির্ভুল।
    • অসুবিধা : সূক্ষ্মতা বা গুণমান বিচার করা যায় না।
  2. মডেল-ভিত্তিক গ্রেডার (সম্ভাব্যতা) :
    • "এলএলএম-অ্যাজ-এ-জজ" নামেও পরিচিত। এজেন্টের আউটপুট মূল্যায়নের জন্য আমরা একটি শক্তিশালী মডেল (যেমন জেমিনি 3 প্রো) ব্যবহার করি।
    • তারা যা পরিমাপ করে : সূক্ষ্মতা, যুক্তি, সহায়কতা, নিরাপত্তা।
    • সুবিধা : জটিল, উন্মুক্ত কাজগুলি মূল্যায়ন করতে পারে।
    • অসুবিধা : ধীরগতির, বেশি ব্যয়বহুল, বিচারকের জন্য সতর্ক তাৎক্ষণিক প্রকৌশলের প্রয়োজন।

ভার্টেক্স এআই মূল্যায়ন মেট্রিক্স

এই ল্যাবে, আমরা Vertex AI Gen AI মূল্যায়ন পরিষেবা ব্যবহার করি, যা পরিচালিত মেট্রিক্স প্রদান করে যাতে আপনাকে প্রতিটি বিচারককে শুরু থেকে লিখতে না হয়।

এজেন্ট মূল্যায়নের জন্য মেট্রিক্স গ্রুপ করার একাধিক উপায় রয়েছে:

  • রুব্রিক-ভিত্তিক মেট্রিক্স : মূল্যায়ন কর্মপ্রবাহে LLM-গুলিকে অন্তর্ভুক্ত করুন।
    • অভিযোজিত রুব্রিক : প্রতিটি প্রম্পটের জন্য রুব্রিকগুলি গতিশীলভাবে তৈরি করা হয়। প্রম্পটের জন্য নির্দিষ্টভাবে দানাদার, ব্যাখ্যাযোগ্য পাস বা ব্যর্থ প্রতিক্রিয়া দিয়ে প্রতিক্রিয়াগুলি মূল্যায়ন করা হয়।
    • স্ট্যাটিক রুব্রিক : রুব্রিকগুলি স্পষ্টভাবে সংজ্ঞায়িত করা হয় এবং একই রুব্রিক সমস্ত প্রম্পটের ক্ষেত্রে প্রযোজ্য। উত্তরগুলি একই সংখ্যাসূচক স্কোরিং-ভিত্তিক মূল্যায়নকারীর সেট দিয়ে মূল্যায়ন করা হয়। প্রতি প্রম্পটে একটি একক সংখ্যাসূচক স্কোর (যেমন 1-5)। যখন একটি খুব নির্দিষ্ট মাত্রায় মূল্যায়ন প্রয়োজন হয় বা যখন সমস্ত প্রম্পটে ঠিক একই রুব্রিক প্রয়োজন হয়।
  • গণনা-ভিত্তিক মেট্রিক্স : নির্ণায়ক অ্যালগরিদম ব্যবহার করে প্রতিক্রিয়া মূল্যায়ন করুন, সাধারণত স্থল সত্য ব্যবহার করে। প্রতি প্রম্পটে একটি সংখ্যাসূচক স্কোর (যেমন 0.0-1.0)। যখন স্থল সত্য উপলব্ধ থাকে এবং একটি নির্ণায়ক পদ্ধতির সাথে মেলানো যেতে পারে।
  • কাস্টম ফাংশন মেট্রিক্স : একটি পাইথন ফাংশনের মাধ্যমে আপনার নিজস্ব মেট্রিক সংজ্ঞায়িত করুন।

আমরা যে নির্দিষ্ট মেট্রিক্স ব্যবহার করব :

  • Final Response Match : (রেফারেন্স-ভিত্তিক) উত্তরটি কি আমাদের "গোল্ডেন উত্তর" এর সাথে মিলে যায়?
  • Tool Use Quality : (রেফারেন্স-মুক্ত) এজেন্ট কি প্রাসঙ্গিক টুলগুলি সঠিকভাবে ব্যবহার করেছেন?
  • Hallucination : (রেফারেন্স-মুক্ত) উত্তরে দেওয়া দাবিগুলি কি পুনরুদ্ধার করা প্রেক্ষাপট দ্বারা সমর্থিত?
  • Tool Trajectory Precision এবং Tool Trajectory Recall (রেফারেন্স-ভিত্তিক) এজেন্ট কি সঠিক টুল নির্বাচন করেছে এবং বৈধ আর্গুমেন্ট প্রদান করেছে? Tool Use Quality বিপরীতে, এই কাস্টম মেট্রিক্স রেফারেন্স ট্র্যাজেক্টরি ব্যবহার করে - প্রত্যাশিত টুল কল এবং আর্গুমেন্টের একটি ক্রম।

3. সেটআপ

কনফিগারেশন

  1. ক্লাউড শেল খুলুন : গুগল ক্লাউড কনসোলের উপরের ডানদিকে অ্যাক্টিভেট ক্লাউড শেল আইকনে ক্লিক করুন।
  2. সাইন ইন রিফ্রেশ করতে এবং অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র (ADC) আপডেট করতে নিম্নলিখিত কমান্ডটি চালান:
    gcloud auth login --update-adc
    
    ব্রাউজারে সাইন-ইন সম্পূর্ণ করতে নির্দেশাবলী অনুসরণ করুন।
  3. gcloud CLI এর জন্য একটি সক্রিয় প্রকল্প সেট করুন। বর্তমান gcloud প্রকল্প পেতে নিম্নলিখিত কমান্ডটি চালান:
    gcloud config get-value project
    
    যদি এটি সেট না থাকে, তাহলে নিম্নলিখিত কমান্ডটি চালান:
    gcloud config set project YOUR_PROJECT_ID
    
    আপনার প্রকল্পের আইডি দিয়ে YOUR_PROJECT_ID প্রতিস্থাপন করুন।
  4. আপনার ক্লাউড রান পরিষেবাগুলি কোথায় স্থাপন করা হবে তা ডিফল্ট অঞ্চল সেট করুন।
    gcloud config set run/region us-central1
    
    us-central1 এর পরিবর্তে, আপনি আপনার কাছাকাছি যেকোনো ক্লাউড রান অঞ্চল ব্যবহার করতে পারেন।

কোড এবং নির্ভরতা

  1. স্টার্টার কোডটি ক্লোন করুন এবং ডিরেক্টরিটি প্রকল্পের রুটে পরিবর্তন করুন।
    git clone https://github.com/vladkol/agent-evaluation-lab -b starter
    cd agent-evaluation-lab
    
  2. .env ফাইল তৈরি করুন:
    echo "GOOGLE_GENAI_USE_VERTEXAI=true" > .env
    echo "GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project -q)" >> .env
    echo "GOOGLE_CLOUD_REGION=$(gcloud config get-value run/region -q)" >> .env
    echo "GOOGLE_CLOUD_LOCATION=global" >> .env
    
  3. ক্লাউড শেল এডিটর খুলুন:
    cloudshell workspace .
    
  4. টার্মিনাল > নতুন টার্মিনাল মেনু ব্যবহার করে একটি নতুন টার্মিনাল উইন্ডো খুলুন।
  5. টার্মিনাল উইন্ডোতে নিম্নলিখিত কমান্ডটি চালিয়ে নির্ভরতা ইনস্টল করুন:
    uv sync
    

৪. নিরাপদ স্থাপনা বোঝা

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

রিভিশন ট্যাগ এবং শ্যাডো ডিপ্লয়মেন্ট

গুগল ক্লাউড রান রিভিশন সমর্থন করে। প্রতিবার আপনি যখনই স্থাপন করবেন, তখন একটি নতুন অপরিবর্তনীয় রিভিশন তৈরি হবে। আপনি এই রিভিশনগুলিতে ট্যাগ বরাদ্দ করতে পারেন যাতে তারা একটি নির্দিষ্ট URL এর মাধ্যমে অ্যাক্সেস করতে পারে, এমনকি যদি তারা পাবলিক ট্র্যাফিকের 0%ও পায়।

কেন কেবল স্থানীয়ভাবে মূল্যায়ন পরিচালনা করবেন না?

যদিও ADK স্থানীয় মূল্যায়ন সমর্থন করে, একটি লুকানো সংশোধনে স্থাপন উৎপাদন সিস্টেমের জন্য গুরুত্বপূর্ণ সুবিধা প্রদান করে। এটি সিস্টেম-স্তরের মূল্যায়ন (আমরা যা করছি) কে ইউনিট টেস্টিং থেকে আলাদা করে:

  1. পরিবেশ সমতা : স্থানীয় পরিবেশ ভিন্ন (ভিন্ন নেটওয়ার্ক, ভিন্ন CPU/মেমোরি, ভিন্ন গোপনীয়তা)। ক্লাউডে পরীক্ষা নিশ্চিত করে যে আপনার এজেন্ট প্রকৃত রানটাইম পরিবেশে (সিস্টেম টেস্ট) কাজ করছে।
  2. মাল্টি-এজেন্ট ইন্টারঅ্যাকশন : একটি বিতরণকৃত সিস্টেমে, এজেন্টরা HTTP-র মাধ্যমে কথা বলে। "স্থানীয়" পরীক্ষাগুলি প্রায়শই এই সংযোগগুলিকে উপহাস করে। শ্যাডো ডিপ্লয়মেন্ট আপনার মাইক্রোসার্ভিসেসের মধ্যে প্রকৃত নেটওয়ার্ক ল্যাটেন্সি, টাইমআউট কনফিগারেশন এবং প্রমাণীকরণ পরীক্ষা করে।
  3. গোপনীয়তা এবং অনুমতি : এটি যাচাই করে যে আপনার পরিষেবা অ্যাকাউন্টে আসলে প্রয়োজনীয় অনুমতি রয়েছে (যেমন, Vertex AI কল করা বা Firestore থেকে পড়া)।

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

সিআই/সিডি কর্মপ্রবাহ: স্থাপন, মূল্যায়ন, প্রচার

আমরা এটি একটি শক্তিশালী ক্রমাগত স্থাপনার পাইপলাইনের জন্য ব্যবহার করি:

  1. কমিট : আপনি এজেন্টের প্রম্পট পরিবর্তন করুন এবং রিপোজিটরিতে পুশ করুন।
  2. Deploy (Hidden) : এটি কমিট হ্যাশ (যেমন, c-abc1234 ) দিয়ে ট্যাগ করা একটি নতুন সংস্করণের স্থাপনা ট্রিগার করে। এই সংস্করণটি পাবলিক ট্র্যাফিকের 0% পায়।
  3. মূল্যায়ন : মূল্যায়ন স্ক্রিপ্টটি নির্দিষ্ট সংশোধন URL https://c-abc1234---researcher-xyz.run.app কে লক্ষ্য করে।
  4. প্রচার করুন : যদি (এবং শুধুমাত্র যদি) মূল্যায়ন পাস করে এবং অন্যান্য পরীক্ষা সফল হয়, তাহলে আপনি এই নতুন সংস্করণে ট্র্যাফিক স্থানান্তর করবেন
  5. রোলব্যাক : যদি এটি ব্যর্থ হয়, ব্যবহারকারীরা কখনও খারাপ সংস্করণটি দেখতে পাননি, এবং আপনি কেবল খারাপ সংস্করণটি উপেক্ষা করতে বা মুছে ফেলতে পারেন।

এই কৌশলটি আপনাকে গ্রাহকদের প্রভাবিত না করেই উৎপাদনে পরীক্ষা করার সুযোগ দেয়।

evaluate.sh বিশ্লেষণ করুন

evaluate.sh খুলুন। এই স্ক্রিপ্টটি প্রক্রিয়াটি স্বয়ংক্রিয় করে।

export COMMIT_SHORT_HASH=$(git rev-parse --short HEAD)
export COMMIT_REVISION_TAG="c-${COMMIT_SHORT_HASH}"

# ...

# Deploy services with a revision tag and NO traffic
source ./deploy.sh --revision-tag $COMMIT_REVISION_TAG --no-redeploy

# Run the evaluation against that specific tag
uv run -m evaluator.evaluate_agent

deploy.sh --no-traffic এবং --tag বিকল্পগুলির সাহায্যে রিভিশন স্থাপনের কাজ করে। যদি ইতিমধ্যেই একটি চলমান পরিষেবা থাকে, তবে এটি প্রভাবিত হবে না। নতুন "লুকানো" রিভিশনটি কোনও ট্র্যাফিক পাবে না যদি না আপনি স্পষ্টভাবে রিভিশন ট্যাগ ধারণকারী একটি বিশেষ URL দিয়ে কল করেন (যেমন https://c-abc1234---researcher-xyz.run.app )

৫. মূল্যায়ন স্ক্রিপ্ট বাস্তবায়ন করুন

এখন, পরীক্ষাগুলি চালানোর জন্য কোডটি লিখি।

  1. evaluator/evaluate_agent.py খুলুন।
  2. আপনি আমদানি এবং সেটআপ দেখতে পাবেন, কিন্তু মেট্রিক্স এবং এক্সিকিউশন লজিক অনুপস্থিত।

মেট্রিক্স সংজ্ঞায়িত করুন

গবেষক এজেন্টের জন্য, আমাদের কাছে প্রত্যাশিত উত্তর সহ একটি "গোল্ডেন অ্যানসারস"/"গ্রাউন্ড ট্রুথ" আছে। এটি একটি ক্যাপাবিলিটি ইভাল : আমরা পরিমাপ করছি যে এজেন্ট সঠিকভাবে কাজটি করতে পারে কিনা।

আমরা পরিমাপ করতে চাই:

  • চূড়ান্ত প্রতিক্রিয়া মিল : (ক্ষমতা) উত্তরটি কি প্রত্যাশিত উত্তরের সাথে মিলে যায়? এটি একটি রেফারেন্স-ভিত্তিক মেট্রিক। এটি এজেন্টের আউটপুটকে প্রত্যাশিত উত্তরের সাথে তুলনা করার জন্য একটি বিচারক LLM ব্যবহার করে। এটি আশা করে না যে উত্তরটি ঠিক একই রকম হবে, তবে শব্দার্থগত এবং বাস্তবিকভাবে একই রকম হবে।
  • টুল ব্যবহারের গুণমান : (গুণমান) একটি লক্ষ্যযুক্ত অভিযোজিত রুব্রিক মেট্রিক যা উপযুক্ত টুল নির্বাচন, সঠিক প্যারামিটার ব্যবহার এবং ক্রিয়াকলাপের নির্দিষ্ট ক্রম মেনে চলার মূল্যায়ন করে।
  • টুল ব্যবহারের গতিপথ : (ট্রেস) 2টি কাস্টম মেট্রিক্স যা প্রত্যাশিত গতিপথের বিপরীতে এজেন্টের টুল ব্যবহারের গতিপথ (নির্ভুলতা এবং প্রত্যাহার) পরিমাপ করে। এই মেট্রিক্সগুলি shared/evaluation/tool_metrics.py তে কাস্টম ফাংশন হিসাবে প্রয়োগ করা হয়। Tool Use Quality এর বিপরীতে, এই মেট্রিকটি একটি নির্ধারক রেফারেন্স-ভিত্তিক মেট্রিক - কোডটি আক্ষরিক অর্থে দেখায় যে প্রকৃত টুল কলগুলি রেফারেন্স ডেটার সাথে মেলে কিনা (মূল্যায়ন ডেটাতে reference_trajectory )।

কাস্টম টুল ব্যবহার ট্র্যাজেক্টোরি মেট্রিক্স

কাস্টম টুল ইউজ ট্র্যাজেক্টরি মেট্রিক্সের জন্য, আমরা shared/evaluation/tool_metrics.py তে পাইথন ফাংশনের একটি সেট তৈরি করেছি। Vertex AI Gen AI Evaluation Service কে এই ফাংশনগুলি কার্যকর করার অনুমতি দেওয়ার জন্য, আমাদের সেই পাইথন কোডটি এতে পাস করতে হবে।

এটি একটি EvaluationRunMetric অবজেক্টকে UnifiedMetric এবং CustomCodeExecutionSpec কনফিগারেশনের মাধ্যমে সংজ্ঞায়িত করে করা হয়। remote_custom_function প্যারামিটারটি একটি স্ট্রিং যাতে ফাংশনের পাইথন কোড থাকে। ফাংশনটির নাম evaluate হিসাবে রাখতে হবে:

def evaluate(
    instance: dict
) -> float:
    ...

আমরা get_custom_function_metric হেল্পার তৈরি করেছি ( shared/evaluation/evaluate.py তে) যা একটি পাইথন ফাংশনকে একটি কাস্টম কোড মূল্যায়ন মেট্রিকে রূপান্তর করে।

এটি ফাংশনের মডিউলের কোড পায় (স্থানীয় নির্ভরতা ক্যাপচার করার জন্য), একটি অতিরিক্ত evaluate ফাংশন তৈরি করে যা মূল ফাংশনটিকে কল করে এবং একটি CustomCodeExecutionSpec সহ একটি EvaluationRunMetric অবজেক্ট ফেরত দেয়।

import inspect
module_source = inspect.getsource(
    inspect.getmodule(metrics_function)
)
module_source += (
    "\n\ndef evaluate(instance: dict) -> float:\n"
    f"    return {metrics_function.__name__}(instance)\n"
)
return types.EvaluationRunMetric(
    metric=metric_name,
    metric_config=types.UnifiedMetric(
        custom_code_execution_spec=types.CustomCodeExecutionSpec(
            remote_custom_function=module_source
        )
    )
)

জেনারেল এআই মূল্যায়ন পরিষেবা একটি স্যান্ডবক্স এক্সিকিউশন পরিবেশে সেই কোডটি কার্যকর করবে এবং মূল্যায়ন ডেটা এতে প্রেরণ করবে।

মেট্রিক্স এবং মূল্যায়ন কোড যোগ করুন

if __name__ == "__main__": লাইনের পরে evaluator/evaluate_agent.py তে নিম্নলিখিত কোডটি যোগ করুন।

এটি গবেষক এজেন্টের জন্য মেট্রিক্স তালিকা সংজ্ঞায়িত করে এবং মূল্যায়ন পরিচালনা করে।

    eval_data_researcher = os.path.dirname(__file__) + "/eval_data_researcher.json"
    metrics=[
        # Compares the agent's output against a "Golden Answer"
        types.RubricMetric.FINAL_RESPONSE_MATCH,
        # Did the agent use the tools effectively?
        types.RubricMetric.TOOL_USE_QUALITY,
        # Custom metrics for tools trajectory analysis
        get_custom_function_metric("trajectory_precision", trajectory_precision_func),
        get_custom_function_metric("trajectory_recall", trajectory_recall_func)
    ]

    print("🧪 Running Researcher Evaluation...")
    eval_results = asyncio.run(
        # Run the evaluation and retrieve the results.
        evaluate_agent(
            agent_api_server=RESEARCHER_URL, # Agent Service URL (in Cloud Run).
            agent_name="agent", # Agent name as it's exposed by the server.
            evaluation_data_file=eval_data_researcher, # Evaluation data file.
            # GCS location for the Evaluation Service to store the result to.
            evaluation_storage_uri=f"gs://{GOOGLE_CLOUD_PROJECT}-agents/evaluation",
            metrics=metrics, # Metrics to use when evaluating the agent.
            project_id=GOOGLE_CLOUD_PROJECT,
            location=GOOGLE_CLOUD_REGION
        )
    )
    print(f"\n🧪 Researcher Evaluation results:\n{eval_results}")
    print(f"Evaluation Run ID: {eval_results.run_id}")

একটি বাস্তব উৎপাদন পাইপলাইনে, আপনার একটি মূল্যায়ন সাফল্যের মানদণ্ড প্রয়োজন। মূল্যায়ন সম্পন্ন হয়ে গেলে এবং মেট্রিক্স প্রস্তুত হয়ে গেলে। এখানে আপনার একটি গেটিং ধাপ থাকবে। উদাহরণস্বরূপ: "যদি Final Response Match স্কোর < 0.75 হয়, তাহলে বিল্ডটি ব্যর্থ হয়।" এটি খারাপ সংশোধনগুলিকে কখনও ট্র্যাফিক পেতে বাধা দেয়।

evaluator/evaluate_agent.py তে নিম্নলিখিত কোডটি যুক্ত করুন:

    METRIC_THRESHOLD = 0.75
    researcher_eval_failed = False
    for metric_name, metric_values in eval_results.metrics.items():
        if metric_values["mean"] < METRIC_THRESHOLD:
            print(f"🛑 Researcher Evaluation failed with metric `{metric_name}` below {METRIC_THRESHOLD} threshold.")
            researcher_eval_failed = True
    if researcher_eval_failed:
        exit(1)

যখনই কোনও মূল্যায়ন মেট্রিকের গড় মান একটি থ্রেশহোল্ড ( 0.75 ) এর নিচে থাকে, তখন স্থাপনাটি ব্যর্থ হওয়া উচিত।

[ঐচ্ছিক] অর্কেস্ট্রেটরের জন্য রেফারেন্স-মুক্ত মেট্রিক্স সহ মূল্যায়ন যোগ করুন

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

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

অর্কেস্ট্রেটরের জন্য মূল্যায়ন যুক্তি যোগ করুন:

    eval_data_orchestrator = os.path.dirname(__file__) + "/eval_data_orchestrator.json"
    metrics=[
        types.RubricMetric.HALLUCINATION,
    ]

    print("🧪 Running Orchestrator Evaluation...")
    eval_results = asyncio.run(evaluate_agent(
        agent_api_server=ORCHESTRATOR_URL,
        agent_name="agent",
        evaluation_data_file=eval_data_orchestrator,
        evaluation_storage_uri=f"gs://{GOOGLE_CLOUD_PROJECT}-agents/evaluation",
        metrics=metrics,
        project_id=GOOGLE_CLOUD_PROJECT,
        location=GOOGLE_CLOUD_REGION
    ))
    print(f"\n🧪 Orchestrator Evaluation results:\n{eval_results}")
    print(f"Evaluation Run ID: {eval_results.run_id}")
    METRIC_THRESHOLD = 0.75
    orchestrator_eval_failed = False
    for metric_name, metric_values in eval_results.metrics.items():
        if metric_values["mean"] < METRIC_THRESHOLD:
            print(f"🛑 Orchestrator Evaluation failed with metric `{metric_name}` below {METRIC_THRESHOLD} threshold.")
            orchestrator_eval_failed = True
    if orchestrator_eval_failed:
        exit(1)

মূল্যায়ন তথ্য পরিদর্শন করুন

evaluator/ ডিরেক্টরি খুলুন। আপনি দুটি ডেটা ফাইল দেখতে পাবেন:

  • eval_data_researcher.json : গবেষকের জন্য প্রম্পট এবং গোল্ডেন/গ্রাউন্ড-ট্রুথ রেফারেন্স।
  • eval_data_orchestrator.json : অর্কেস্ট্রেটরের জন্য প্রম্পট (আমরা শুধুমাত্র অর্কেস্ট্রেটরের জন্য রেফারেন্স-মুক্ত মূল্যায়ন করি)।

প্রতিটি এন্ট্রিতে সাধারণত থাকে:

  • prompt : এজেন্টের জন্য প্রম্পট।
  • reference : আদর্শ উত্তর (মূল সত্য), যদি প্রযোজ্য হয়।
  • reference_trajectory : টুল কলের প্রত্যাশিত ক্রম।

৬. মূল্যায়ন কোডটি বুঝুন

shared/evaluation/evaluate.py খুলুন। এই মডিউলটিতে মূল্যায়ন চালানোর জন্য মূল যুক্তি রয়েছে। মূল ফাংশন হল evaluate_agent

এটি নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে:

  1. ডেটা লোডিং : একটি ফাইল থেকে মূল্যায়ন ডেটাসেট (প্রম্পট এবং রেফারেন্স) পড়ে।
  2. সমান্তরাল অনুমান : এজেন্টকে ডেটাসেটের বিপরীতে সমান্তরালভাবে চালায়। এটি সেশন তৈরি পরিচালনা করে, প্রম্পট পাঠায় এবং চূড়ান্ত প্রতিক্রিয়া এবং মধ্যবর্তী টুল এক্সিকিউশন ট্রেস উভয়ই ক্যাপচার করে।
  3. Vertex AI মূল্যায়ন : এটি চূড়ান্ত প্রতিক্রিয়া এবং মধ্যবর্তী সরঞ্জাম কার্যকরকরণ ট্রেসের সাথে মূল মূল্যায়ন ডেটা একত্রিত করে এবং Vertex AI SDK-তে GenAI ক্লায়েন্টের সাথে Vertex AI মূল্যায়ন পরিষেবাতে ফলাফল জমা দেয়। এই পরিষেবাটি এজেন্টের কর্মক্ষমতা গ্রেড করার জন্য কনফিগার করা মেট্রিক্স চালায়।

শেষ ধাপের মূল মুহূর্তটি হল Gen AI SDK এর eval মডিউলের create_evaluation_run ফাংশনটি কল করা:

evaluation_run = client.evals.create_evaluation_run(
    dataset=agent_dataset_with_inference,
    agent_info=agent_info,
    metrics=metrics,
    dest=evaluation_storage_uri
)

আমরা shared/evaluation/evaluate.pyevaluate_agent ফাংশনে এটি করি।

এটি মার্জ করা মূল্যায়ন ডেটাসেট, এজেন্ট সম্পর্কে তথ্য, ব্যবহারের জন্য মেট্রিক্স এবং গন্তব্য স্টোরেজ URI পায়। ফাংশনটি Vertex AI মূল্যায়ন পরিষেবাতে একটি মূল্যায়ন রান তৈরি করে এবং মূল্যায়ন রান অবজেক্টটি ফেরত দেয়।

এজেন্ট তথ্য API

সঠিক মূল্যায়ন করার জন্য, মূল্যায়ন পরিষেবাকে এজেন্টের কনফিগারেশন (সিস্টেম নির্দেশাবলী, বিবরণ এবং উপলব্ধ সরঞ্জাম) জানতে হবে। আমরা এটিকে agent_info প্যারামিটার হিসাবে create_evaluation_run এ পাস করি।

কিন্তু আমরা এই তথ্য কিভাবে পাবো? আমরা এটিকে ADK সার্ভিস API-এর অংশ করে তুলি।

shared/adk_app.py খুলুন এবং def agent_info অনুসন্ধান করুন। আপনি দেখতে পাবেন যে ADK অ্যাপ্লিকেশনটি একটি সহায়ক এন্ডপয়েন্ট প্রকাশ করে:

@app.get("/apps/{agent_name}/agent-info")
async def agent_info(agent_name: str) -> typing.Dict[str, typing.Any]:
    # ...
    return {
        "name": agent.name,
        "instruction": str(getattr(agent, "instruction", None)),
        "tool_declarations": tools_dict_list
    }

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

৭. মূল্যায়ন চালান

এখন যেহেতু আপনি মূল্যায়নকারীটি বাস্তবায়ন করেছেন, আসুন এটি চালাই!

  1. রিপোজিটরির রুট থেকে মূল্যায়ন স্ক্রিপ্টটি চালান:
    ./evaluate.sh
    
    এরপর কি হবে?
    1. এটি আপনার বর্তমান গিট কমিট হ্যাশ পায়।
    2. এটি কমিট হ্যাশের উপর ভিত্তি করে একটি ট্যাগ সহ একটি রিভিশন স্থাপনের জন্য deploy.sh আহ্বান করে।
    3. একবার স্থাপন করা হলে, এটি evaluator.evaluate_agent শুরু করে।
    4. আপনার ক্লাউড পরিষেবার বিরুদ্ধে টেস্ট কেস চালানোর সময় আপনি অগ্রগতি বার দেখতে পাবেন।
    5. অবশেষে, এটি ফলাফলের একটি সারাংশ JSON প্রিন্ট করে।
    স্ক্রিপ্টটি চালানোর সময় আপনি নিম্নলিখিত প্রম্পটটি দেখতে পাবেন:
    Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created.
    
    Do you want to continue (Y/n)?
    
    সংগ্রহস্থল তৈরির অনুমতি দিতে <Enter> টিপুন।
    দ্রষ্টব্য: প্রথম রানে পরিষেবাগুলি স্থাপন করতে কয়েক মিনিট সময় লাগতে পারে।

৮. নোটবুকে ফলাফল কল্পনা করুন

Raw JSON আউটপুট পড়া কঠিন। Vertex AI SDK-তে Gen AI ক্লায়েন্ট সময়ের সাথে সাথে এই রানগুলি ট্র্যাক করার একটি উপায় প্রদান করে। ফলাফলগুলি কল্পনা করার জন্য আমরা একটি Colab নোটবুক ব্যবহার করব।

  1. এই লিঙ্কটি ব্যবহার করে গুগল কোল্যাবে evaluator/show_evaluation_run.ipynb খুলুন।
  2. আপনার প্রোজেক্ট আইডি, রিজিওন এবং রান আইডিতে GOOGLE_CLOUD_PROJECT , GOOGLE_CLOUD_REGION এবং EVAL_RUN_ID ভেরিয়েবল সেট করুন।
  1. নির্ভরতা ইনস্টল করুন এবং প্রমাণীকরণ করুন।

মূল্যায়ন রান পুনরুদ্ধার করুন এবং ফলাফল প্রদর্শন করুন

আমাদের Vertex AI থেকে মূল্যায়ন রান ডেটা আনতে হবে। Retrieve মূল্যায়ন রান এবং প্রদর্শন ফলাফলের অধীনে ঘরটি খুঁজুন এবং নিম্নলিখিত কোড ব্লক দিয়ে # TODO লাইনটি প্রতিস্থাপন করুন:

from google.genai import types as genai_types
from vertexai import Client

# Initialize SDK
client = Client(
    project=GOOGLE_CLOUD_PROJECT,
    location=GOOGLE_CLOUD_REGION,
    http_options=genai_types.HttpOptions(api_version="v1beta1"),
)

evaluation_run = client.evals.get_evaluation_run(
    name=EVAL_RUN_ID,
    include_evaluation_items=True
)
evaluation_run.show()

ফলাফল ব্যাখ্যা করা

ফলাফলগুলি দেখার সময়, নিম্নলিখিত বিষয়গুলি মনে রাখবেন:

  1. রিগ্রেশন বনাম ক্ষমতা :
    • রিগ্রেশন : পুরনো পরীক্ষাগুলিতে কি স্কোর কমেছে? (ভাল না, তদন্তের প্রয়োজন)।
    • ক্ষমতা : নতুন পরীক্ষায় কি স্কোর উন্নত হয়েছে? (ভাল, এটাই অগ্রগতি)।
  2. ব্যর্থতা বিশ্লেষণ : শুধু স্কোরের দিকে তাকাবেন না।
    • ট্রেসটি দেখুন। এটি কি ভুল টুল কল করেছে? এটি কি আউটপুট পার্স করতে ব্যর্থ হয়েছে? এখানেই আপনি বাগ খুঁজে পাবেন।
    • বিচারক এলএলএম কর্তৃক প্রদত্ত ব্যাখ্যা এবং রায়গুলি দেখুন। তারা প্রায়শই আপনাকে পরীক্ষাটি কেন ব্যর্থ হয়েছিল তার একটি ভাল ধারণা দেয়।

Pass@1 বনাম Pass@k : একবার একটি নির্দিষ্ট পরীক্ষা চালানোর সময়, আমরা Pass@1 স্কোর পাই। যদি কোনও এজেন্ট ব্যর্থ হয়, তবে এটি অ-নির্ধারণীতার কারণে হতে পারে। অত্যাধুনিক সেটআপগুলিতে, আপনি প্রতিটি পরীক্ষা k বার চালাতে পারেন (যেমন, 5 বার) এবং pass@k গণনা করতে পারেন (এটি কি কমপক্ষে একবার সফল হয়েছিল?) অথবা pass^k (এটি কি প্রতিবার সফল হয়েছিল?)। অনেক মেট্রিক ইতিমধ্যেই হুডের নীচে এটি করে। উদাহরণস্বরূপ, types.RubricMetric.FINAL_RESPONSE_MATCH (ফাইনাল রেসপন্স ম্যাচ) চূড়ান্ত রেসপন্স ম্যাচ স্কোর নির্ধারণের জন্য বিচারক LLM-কে 5টি কল করে।

৯. ক্রমাগত ইন্টিগ্রেশন এবং ডিপ্লয়মেন্ট (CI/CD)

একটি উৎপাদন ব্যবস্থায়, এজেন্ট মূল্যায়ন CI/CD পাইপলাইনের অংশ হিসেবে চালানো উচিত। এর জন্য ক্লাউড বিল্ড একটি ভালো পছন্দ।

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

ধারাবাহিক মূল্যায়ন

ক্লাউড বিল্ড কনফিগারেশন

এখন, একটি ক্লাউড রান ডিপ্লয়মেন্ট কনফিগারেশন স্ক্রিপ্ট তৈরি করা যাক যা নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে:

  1. একটি ব্যক্তিগত রিভিশনে পরিষেবা স্থাপন করে।
  2. এজেন্ট মূল্যায়ন পরিচালনা করে।
  3. যদি মূল্যায়ন পাস হয়, তাহলে এটি ১০০% ট্র্যাফিক পরিবেশন করার জন্য সংশোধন স্থাপনাগুলিকে "প্রচার" করে।

cloudbuild.yaml তৈরি করুন:

steps:
- name: gcr.io/google.com/cloudsdktool/google-cloud-cli:latest
  entrypoint: /bin/bash
  args:
      - "-c"
      - |
        if [[ "$_COMMIT_SHORT_HASH" != "" ]]; then
          export COMMIT_SHORT_HASH=$_COMMIT_SHORT_HASH
        else
          export COMMIT_SHORT_HASH=$SHORT_SHA
        fi
        export COMMIT_REVISION_TAG="c-$${COMMIT_SHORT_HASH}"
        echo "Deploying with revision tag: $$COMMIT_REVISION_TAG"
        set -e
        # Install uv and sync dependencies.
        curl -LsSf https://astral.sh/uv/install.sh | sh
        source $$HOME/.local/bin/env
        uv sync

        # Deploy services with the revision tag.
        source ./deploy.sh --revision-tag $$COMMIT_REVISION_TAG --no-redeploy

        # Run evaluation.
        uv run -m evaluator.evaluate_agent
        # If evaluation fails, the deployment will stop here.

        # If evaluation passes, it will continue with promoting the revisions to serve 100% of traffic.
        echo "Promoting revisions $$COMMIT_REVISION_TAG to serve 100% of traffic."
        gcloud run services update-traffic researcher --to-tags $$COMMIT_REVISION_TAG=100 --region $$GOOGLE_CLOUD_REGION --project $$GOOGLE_CLOUD_PROJECT
        gcloud run services update-traffic judge --to-tags $$COMMIT_REVISION_TAG=100 --region $$GOOGLE_CLOUD_REGION --project $$GOOGLE_CLOUD_PROJECT
        gcloud run services update-traffic content-builder --to-tags $$COMMIT_REVISION_TAG=100 --region $$GOOGLE_CLOUD_REGION --project $$GOOGLE_CLOUD_PROJECT
        gcloud run services update-traffic orchestrator --to-tags $$COMMIT_REVISION_TAG=100 --region $$GOOGLE_CLOUD_REGION --project $$GOOGLE_CLOUD_PROJECT
        gcloud run services update-traffic course-creator --to-tags $$COMMIT_REVISION_TAG=100 --region $$GOOGLE_CLOUD_REGION --project $$GOOGLE_CLOUD_PROJECT

options:
  substitutionOption: 'ALLOW_LOOSE'
  defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET

পাইপলাইন চালানো

অবশেষে, আমরা মূল্যায়ন পাইপলাইন চালাতে পারি।

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

  1. স্ক্রিপ্ট তৈরি করুন run_cloud_build.sh :
    #!/bin/bash
    
    set -e
    source .env
    
    BUILD_SA_NAME="agent-eval-build-sa"
    BUILD_SA_EMAIL="${BUILD_SA_NAME}@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com"
    COMMIT_SHORT_HASH=$(git rev-parse --short HEAD)
    
    # Creating service account for build, if it doesn't exist
    if ! gcloud iam service-accounts describe "${BUILD_SA_EMAIL}" --project "${GOOGLE_CLOUD_PROJECT}" &> /dev/null; then
        echo "Creating service account ${BUILD_SA_NAME} for Cloud Build."
        gcloud iam service-accounts create ${BUILD_SA_NAME} --project "${GOOGLE_CLOUD_PROJECT}" --display-name "Agent Build Service Account"
    
        echo "Granting roles to service account ${BUILD_SA_NAME}."
        ROLES=(
            "roles/cloudbuild.builds.builder"
            "roles/run.admin"
            "roles/run.invoker"
            "roles/iam.serviceAccountOpenIdTokenCreator"
            "roles/iam.serviceAccountUser"
            "roles/serviceusage.serviceUsageAdmin"
            "roles/serviceusage.serviceUsageConsumer"
            "roles/aiplatform.user"
        )
    
        # Loop through and grant each role
        for ROLE in "${ROLES[@]}"; do
            gcloud projects add-iam-policy-binding "$GOOGLE_CLOUD_PROJECT" \
                --member="serviceAccount:$BUILD_SA_EMAIL" \
                --role="$ROLE"
        done
    fi
    
    gcloud builds submit --config cloudbuild.yaml \
        --service-account="projects/${GOOGLE_CLOUD_PROJECT}/serviceAccounts/${BUILD_SA_EMAIL}" \
        --machine-type=e2-highcpu-32 \
        --timeout=120m \
        --substitutions _COMMIT_SHORT_HASH=$COMMIT_SHORT_HASH,_GOOGLE_CLOUD_PROJECT=$GOOGLE_CLOUD_PROJECT,_GOOGLE_CLOUD_LOCATION=$GOOGLE_CLOUD_LOCATION,_GOOGLE_CLOUD_REGION=$GOOGLE_CLOUD_REGION
    
    
    এই স্ক্রিপ্ট:
    • একটি ডেডিকেটেড সার্ভিস অ্যাকাউন্ট তৈরি করে agent-eval-build-sa
    • প্রয়োজনীয় ভূমিকা প্রদান করে ( roles/run.admin , roles/aiplatform.user , ইত্যাদি)। *. ক্লাউড বিল্ডে বিল্ড জমা দেয়।
  2. পাইপলাইনটি চালান:
    chmod +x run_cloud_build.sh
    ./run_cloud_build.sh
    

আপনি টার্মিনালে নির্মাণের অগ্রগতি দেখতে পারেন অথবা ক্লাউড কনসোলের লিঙ্কে ক্লিক করতে পারেন।

দ্রষ্টব্য : একটি বাস্তব উৎপাদন পরিবেশে, আপনাকে প্রতিটি git push এ স্বয়ংক্রিয়ভাবে এটি চালানোর জন্য একটি Cloud Build Trigger সেট আপ করতে হবে। কর্মপ্রবাহ একই: ট্রিগারটি cloudbuild.yaml কার্যকর করবে, প্রতিটি কমিট মূল্যায়ন করা হবে তা নিশ্চিত করবে।

১০. সারাংশ

আপনি সফলভাবে একটি মূল্যায়ন পাইপলাইন তৈরি করেছেন!

  • ডিপ্লয়মেন্ট : আপনি git commit হ্যাশ সহ রিভিশন ট্যাগ ব্যবহার করেছেন যাতে প্রোডাকশন ডিপ্লয়মেন্টকে প্রভাবিত না করেই এজেন্টদের পরীক্ষার জন্য বাস্তব পরিবেশে নিরাপদে স্থাপন করা যায়।
  • মূল্যায়ন : আপনি মূল্যায়ন মেট্রিক্স সংজ্ঞায়িত করেছেন এবং Vertex AI Gen AI মূল্যায়ন পরিষেবা ব্যবহার করে মূল্যায়ন প্রক্রিয়াটি স্বয়ংক্রিয় করেছেন।
  • বিশ্লেষণ : মূল্যায়নের ফলাফল কল্পনা করতে এবং আপনার এজেন্টকে উন্নত করতে আপনি একটি Colab Notebook ব্যবহার করেছেন।
  • রোলআউট : আপনি ক্লাউড বিল্ড ব্যবহার করে মূল্যায়ন পাইপলাইনটি স্বয়ংক্রিয়ভাবে কার্যকর করেছেন এবং ১০০% ট্র্যাফিক পরিবেশন করার জন্য সেরা সংশোধন প্রচার করেছেন।

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