১০০ মাইল প্রতি ঘণ্টা গতিতে বিশ্বাসযোগ্য এআই তৈরি করা

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

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

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

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

আপনি যা তৈরি করবেন

এই কোডল্যাবে, আপনি একটি বিশ্বাসযোগ্য এআই প্রোটোটাইপ তৈরি করবেন যা:

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

আপনি যা শিখবেন

এই কোডল্যাবটি শেষে আপনি যা করতে সক্ষম হবেন:

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

২. আপনার যা যা প্রয়োজন হবে

শুরু করার আগে, নিশ্চিত করুন যে আপনার প্রয়োজনীয় অ্যাকাউন্ট, সরঞ্জাম এবং পরিষেবাগুলো প্রস্তুত আছে।

পূর্বশর্ত

আপনার যা থাকা উচিত:

  • জিমেইল ঠিকানা ব্যবহার করে একটি ব্যক্তিগত গুগল অ্যাকাউন্ট
  • গুগল ক্লাউডে প্রবেশাধিকার এবং সিএলআই সম্পর্কে প্রাথমিক ধারণা
  • একটি সক্রিয় বিলিং অ্যাকাউন্ট বা ক্লাউড ক্রেডিট
  • জেমিনি ব্যবহার করে গুগল ক্লাউড ও জেনারেটিভ এআই সম্পর্কে গভীর ধারণা

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

মিথুন

গুগল ক্লাউড ব্যবহারের জন্য ক্রেডিট অর্জন

আপনার ক্রেডিট দাবি করতে, এই লিঙ্কে যান এবং একটি Gmail ইমেল ঠিকানা ( gmail.com ডোমেইন) দিয়ে লগ ইন করুন। তারপর, আপনার Google Cloud Platform (GCP) বিলিং অ্যাকাউন্টে ক্রেডিটগুলি গ্রহণ করুন, এবং সেগুলি আপনার অ্যাকাউন্টে যোগ হয়ে যাবে।

৩. বিশ্বাসযোগ্য এআই কেন গুরুত্বপূর্ণ

অনেক এআই সিস্টেম সাবলীল এবং বিশ্বাসযোগ্য প্রতিক্রিয়া তৈরি করতে পারে, কিন্তু সাবলীলতা আর বিশ্বাসযোগ্যতা এক জিনিস নয়। বাস্তব জগতের সিস্টেমগুলিতে, ব্যবহারকারীদের প্রায়শই সময়োপযোগী ও বাস্তবসম্মত প্রতিক্রিয়ার প্রয়োজন হয়, যা নিরাপত্তা বিধি দ্বারা সীমাবদ্ধ এবং নির্দিষ্ট ক্ষেত্রের বিশেষজ্ঞ জ্ঞান দ্বারা গঠিত।

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

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

চলুন একটি ছোট টেলিমেট্রি নমুনা দেখে দুটি সম্ভাব্য আউটপুটের তুলনা করা যাক:

Racing Car Telemetry Data
{
   "speedMph": 118,
   "throttle": 91,
   "frontGrip": "nominal",
   "rearGrip": "low",
   "trackPosition": "Turn 1 Entry"
}

অনভিজ্ঞ এআই প্রতিক্রিয়া

"Stay aggressive on the throttle and carry your speed into Turn 1"

বিশ্বাস-সচেতন প্রতিক্রিয়া

"Rear grip is low at Turn 1 entry. Reduce your throttle slightly and prioritize a stable corner entry"

পার্থক্যটা লক্ষ্য করেছেন?

আমরা যদি শুধু অনভিজ্ঞ এআই প্রতিক্রিয়ার ওপর নির্ভর করি তাহলে কী হবে?

প্রথম প্রতিক্রিয়াটি আত্মবিশ্বাসী শোনালেও, এটি ঝুঁকিকে উপেক্ষা করে। দ্বিতীয় প্রতিক্রিয়াটি অধিকতর কার্যকর, কারণ এটি প্রেক্ষাপট ও সীমাবদ্ধতাকে প্রতিফলিত করে।

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

এখন, চলুন জেনে নেওয়া যাক কীভাবে এই ধরনের স্থাপত্য তৈরি করতে হয়।

৪. উচ্চ-গতিসম্পন্ন এআই এবং মডিউলার বিশ্বস্ত স্থাপত্য বোঝা

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

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

স্থাপত্য নকশা

কিছু সিদ্ধান্ত তাৎক্ষণিকভাবে নিতে হয়। কিছু সিদ্ধান্তের ক্ষেত্রে দীর্ঘ সময় ধরে চিন্তা করলে তা ফলপ্রসূ হয়।

বিশ্বাসযোগ্য এআই-এর প্রায়শই উভয়েরই প্রয়োজন হয়।

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

এই ছোট প্রোগ্রামটিতে, আমরা পাইথন ফাংশন হিসেবে একটি রিফ্লেক্স পাথ এবং একটি স্ট্র্যাটেজি পাথ বাস্তবায়ন করেছি।

const telemetry = {
  speed: 147,
  grip: 0.68,
  corner_type: "sharp",
  lap_trend: "entering_corners_too_fast",
};

function reflexPath(event: typeof telemetry): string {
  if (event.grip < 0.70) {
    return "REFLEX: Reduce throttle now";
  }
  return "REFLEX: No urgent issue";
}

function strategyPath(event: typeof telemetry): string {
  if (event.lap_trend === "entering_corners_too_fast") {
    return "STRATEGY: Brake earlier and prioritize corner exit";
  }
  return "STRATEGY: Driving pattern looks stable";
}

console.log(reflexPath(telemetry));
console.log(strategyPath(telemetry));

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

এই যুক্তিটিকে আলাদা রাখা কেন উপকারী বলে আপনি মনে করেন?

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

৫. একটি টেলিমেট্রি স্ট্রিমিং সার্ভার তৈরি করুন

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

এই অংশে, আপনি একটি ভার্চুয়াল রেস কারের জন্য একটি সাধারণ টেলিমেট্রি স্ট্রিম তৈরি করবেন। ডেটা আসবে GPS বা ট্র্যাক-পজিশন ডেটা সম্বলিত একটি CSV উৎস থেকে, এবং আপনার অ্যাপ্লিকেশনটি সেটিকে একটি লাইভ স্ট্রিমে রূপান্তর করবে যা UI এবং AI লেয়ার গ্রহণ করতে পারবে।

এই অংশে, আপনি যা শিখবেন:

  • আমাদের স্ট্রিমিং সার্ভার এবং অ্যাপ্লিকেশনের জন্য গুগল ক্লাউডে একটি নতুন প্রজেক্ট তৈরি করুন।
  • টেলিমেট্রি ডেটা প্রেরণের জন্য একটি ছোট সার্ভার তৈরি করুন।
  • সেই ইভেন্টগুলো ব্রাউজার UI বা কনসোলে স্ট্রিম করুন।

১. ক্লাউড শেল খুলুন

এ. গুগল ক্লাউড কনসোলে যান।
খ. এই কোডল্যাবের জন্য একটি নতুন প্রজেক্ট তৈরি করুন। উপরে থাকা প্রজেক্ট ড্রপডাউন মেনুতে ক্লিক করুন।

গুগল ক্লাউড কনসোল

প্রজেক্ট তৈরি করার সময় বিলিং অ্যাকাউন্টটি লিঙ্ক করে নেওয়ার এটি একটি ভালো সুযোগ:
বিলিং অ্যাকাউন্ট লিঙ্ক করুন

ঐচ্ছিকভাবে, যদি আপনি ইতিমধ্যেই একটি প্রজেক্ট তৈরি করে থাকেন, তাহলে আপনি বাম প্যানেলটি খুলে, Billing -এ ক্লিক করে, বিলিং অ্যাকাউন্টটি এই GCP অ্যাকাউন্টের সাথে লিঙ্ক করা আছে কিনা তা যাচাই করতে পারেন।

গ. একটি জেমিনি এপিআই কী প্রাপ্তি

একবার আপনার গুগল ক্লাউড ক্রেডিট সক্রিয় করা হয়ে গেলে, গুগল ক্লাউডে জেমিনি অ্যাক্সেস করার জন্য আপনার একটি জেমিনি এপিআই কী প্রয়োজন হবে।

একটি জেমিনি এপিআই কী তৈরি করতে, আমাদের কী জেনারেট করার জন্য গুগল ভার্টেক্স এআই স্টুডিও ব্যবহার করতে হবে।

Vertex AI Studio-এর মধ্যে, 'Documentation'-এর উপরে বাম দিকের নিচের কোণায় থাকা 'Get API key'-তে ক্লিক করুন। Gemini-এর জন্য একটি API কী তৈরি করুন (এটি দেখতে এলোমেলো অক্ষরের একটি দীর্ঘ স্ট্রিং-এর মতো)। এই কী-টি একটি সুরক্ষিত স্থানে সংরক্ষণ করুন। আমরা ধাপ ৬ 'Build the Racing Car Simulator'-এ Google Cloud-এ Gemini-তে আমাদের অ্যাক্সেস প্রমাণীকরণের জন্য এই API কী-টি ব্যবহার করব।

D. ব্রাউজার-ভিত্তিক টার্মিনাল খুলতে উপরের বারে থাকা ক্লাউড শেল আইকনে (টার্মিনাল আইকন) ক্লিক করুন।
ক্লাউড শেল

ই. টার্মিনাল সেশনটি চালু হওয়ার জন্য অপেক্ষা করুন।

টার্মিনাল সেশন

২. কোডটি নিন

মাস্টার রিপোটি ক্লোন করুন।

git clone https://github.com/ocupop/trustable-ai-codelab.git
cd trustable-ai-codelab

লক্ষ্য করুন যে এই রিপোটিতে দুটি ফোল্ডার আছে: 'koru-application' (ওয়েব অ্যাপ্লিকেশন) এবং 'streaming-telemetry-server' (সিমুলেটেড রিয়েল-টাইম রেস কার টেলিমেট্রি)। এই ধাপে 'streaming-telemetry-server' সম্পর্কে বর্ণনা করা হয়েছে। আমরা পরবর্তী ধাপে 'koru-application' ব্যবহার করব।

৩. প্রয়োজনীয় এপিআইগুলো সক্রিয় করুন

প্রতিটি প্রকল্পের জন্য একবার চালান:

# Set Project ID
gcloud config set project YOUR_PROJECT_ID
# Enable APIs
gcloud services enable \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com

YOUR_PROJECT_ID জায়গায় আপনার আসল প্রজেক্ট আইডি বসান (অথবা প্রজেক্ট আগে থেকে সেট করা থাকলে প্রথম লাইনটি বাদ দিন)।

আপনি প্রজেক্টের তালিকায় YOUR_PROJECT_ID খুঁজে নিতে পারেন।

টার্মিনাল সেশন

৪. ক্লাউড রান-এ ব্যাকএন্ড স্থাপন করুন

রিপো রুট থেকে (অর্থাৎ, নিশ্চিত করুন যে আপনি trustable-ai-codelab ফোল্ডারে আছেন):

gcloud run deploy streaming-telemetry-server \
  --source streaming-telemetry-server \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

মনে রাখবেন, নির্দেশিত হলে আপনাকে 'Y' চাপতে হতে পারে।

  • প্রথমবার চালানোর সময় আপনাকে এপিআই (API) সক্রিয় করতে বা একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপো (Artifact Registry repo) তৈরি করতে বলা হতে পারে; প্রয়োজন অনুযায়ী তা গ্রহণ করুন।
  • আপনি যদি us-central1 ছাড়া অন্য কোনো অঞ্চল ব্যবহার করেন, তাহলে --region ব্যবহার করে সেই অঞ্চলটি নির্দিষ্ট করুন।
  • ডিপ্লয়মেন্ট শেষ হলে, gcloud সার্ভিস-ইউআরএলটি প্রিন্ট করে। টেলিমেট্রি সার্ভারের পূর্ণ এন্ডপয়েন্ট হিসেবে এটি ব্যবহার করার জন্য, আমাদের শুধু এই ইউআরএলটির শেষে "events" শব্দটি যুক্ত করতে হবে।

৫. স্ট্রিম ইউআরএল ব্যবহার করুন

টেলিমেট্রি সার্ভারটি এখন সার্ভার-সেন্ট-ইভেন্টস (SSE) ব্যবহার করে নিম্নলিখিত ফর্মের একটি এন্ডপয়েন্টে সিমুলেটেড টেলিমেট্রি ডেটা নির্গত করছে:

service-URL/events		// service-URL - the last line displayed by "deploy"

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

ব্রাউজার ট্যাবে স্ট্রিম এন্ডপয়েন্ট থেকে আউটপুট

সংযোগটি বিচ্ছিন্ন করতে আপনি ব্রাউজার ট্যাবটি বন্ধ করতে পারেন।

কার্ল দিয়ে পরীক্ষা করুন:

এবার শেল কমান্ড লাইন থেকে পরীক্ষা করা যাক।

curl -N service-URL/events		# Replace service-URL with actual deployment endpoint

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

শেল কমান্ড লাইনের মাধ্যমে স্ট্রিমিং এন্ডপয়েন্ট থেকে আউটপুট

আমরা এই টেলিমেট্রি ডেটা ব্যবহার করে একটি রেসিং গাড়ির সেন্সর থেকে নির্গত ডেটা সিমুলেট করব। কোডল্যাবের বাকি অংশে এই ডেটা ব্যবহার করা হবে। আপনি টার্মিনাল উইন্ডোতে CTRL-C চেপে কার্ল প্রোগ্রামটি বন্ধ করতে পারেন।

আপনার যা লক্ষ্য করা উচিত

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

তবে প্রথমে, ডেটাগুলো দেখানোর জন্য ওয়েব ফ্রন্ট-এন্ড তৈরি করা যাক।

৬. রেসিং কার সিমুলেটরটি তৈরি করুন

এই অংশে, আপনি যা শিখবেন:

  • একটি রেসিং কার সিমুলেশন তৈরি করুন
  • রেসিং কার ওয়েব অ্যাপ্লিকেশনের সাথে টেলিমেট্রি সার্ভারটি সংযুক্ত করুন।
  • সিমুলেটেড রেসগুলি দেখুন

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

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

স্ট্রিমিং টেলিমেট্রি পরিষেবাটি গুগল ক্লাউডে চলে, কিন্তু রেসিং কার অ্যাপ্লিকেশনটি আপনার লোকাল মেশিনে চলে। এর মানে হলো, আপনাকে রিপোজিটরিটি আবার ক্লোন করতে হবে, এবার আপনার ল্যাপটপ বা ডেস্কটপ কম্পিউটারে।

সরলতার জন্য, একই রিপোজিটরিতে স্ট্রিমিং সার্ভার এবং রেসিং কার অ্যাপ্লিকেশন উভয়ের কোড রাখা হয়েছে।

গিটহাব থেকে ফ্রন্ট-এন্ড অ্যাপ্লিকেশনটি ক্লোন করুন:

git clone https://github.com/ocupop/trustable-ai-codelab.git
cd trustable-ai-codelab

আপনার ল্যাপটপ বা ডেস্কটপে রিপোটি ক্লোন করা হয়ে গেলে, চলুন অ্যাপ্লিকেশনটি রান করি।

cd koru-application		# racing car simulation app
npm install
npm run dev

ভিআইটিই

ক্রোমে, আপনার লোকাল মেশিনে পোর্টটি খুলুন (উপরের উদাহরণের মতো http://localhost:5173 )। আপনি "AI Motorsport Coaching" অ্যাপ্লিকেশনটির ল্যান্ডিং পেজটি দেখতে পাবেন।

আপনার কর্নার কোচ

'ওপেন ড্যাশবোর্ড ->' বোতামে ক্লিক করুন। এটি অ্যাপ্লিকেশনটির ইউজার ইন্টারফেস (UI) চালু করবে।

কোরু ড্যাশবোর্ড

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

অ্যাপ্লিকেশনটির উপরের ডান কোণায় থাকা গিয়ার আইকনে (সেটিংস) ক্লিক করুন।

কোরু সেটিংস

ধাপ ২ থেকে আপনার জেমিনি এপিআই কী (Gemini API key) প্রবেশ করান। এটি আপনাকে গুগল ক্লাউডে জেমিনি পরিষেবাগুলো ব্যবহারের সুযোগ দেবে।

'Save'-এ ক্লিক করুন, যাতে অ্যাপ্লিকেশনটি আপনার API কী মনে রাখে।

এখন, অ্যাপ্লিকেশনটিকে টেলিমেট্রি সার্ভারের সাথে সংযুক্ত করা যাক। অ্যাপ্লিকেশন ড্যাশবোর্ডে, "লাইভ সেশন"-এ ক্লিক করুন।

কোরু এসএসই স্ট্রিম ইনপুট

" SSE URL or .txt file path " লেখা টেক্সট ফিল্ডটিতে আপনার ক্লাউড-ভিত্তিক টেলিমেট্রি সার্ভারের নির্দিষ্ট URL (ধাপ ৫) প্রবেশ করান। আমাদের SSE URL-টি ছিল নিম্নরূপ:

https://streaming-telemetry-server-${PROJECT_NUMBER}.${REGION}.run.app/events

টেলিমেট্রি সার্ভার এন্ডপয়েন্ট ইউআরএল প্রবেশ করানোর পর, টেক্সট ফিল্ডের ডানদিকে থাকা 'কানেক্ট' বোতামে ক্লিক করুন। ইউআরএল-এর শেষে 'events' শব্দটি যোগ করতে ভুলবেন না।

এখন আপনি অ্যাপ্লিকেশনটিতে সিমুলেটেড ডেটা দেখতে পাবেন!

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

অ্যাপ্লিকেশনটি চলার উদাহরণ

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

৭. এআই যুক্তির জন্য টেলিমেট্রি প্রস্তুত করুন

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

এই অংশে, আপনি টেলিমেট্রিকে আরও উপযোগী আকারে পুনর্গঠন করবেন।

এই অংশে, আপনি যা শিখবেন:

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

বিশ্বাসযোগ্য এআই তৈরির ক্ষেত্রে এটি একটি গুরুত্বপূর্ণ পদক্ষেপ। প্রতিক্রিয়ার মান শুধু মডেলের উপরই নয়, বরং এটি যে ডেটা গ্রহণ করে তার গঠন এবং প্রাসঙ্গিকতার উপরও নির্ভর করে।

চলুন এবার রেসিং কারের নির্দিষ্ট ডেটাগুলো খতিয়ে দেখি। আমরা অ্যাপ্লিকেশনটির নির্দিষ্ট মান পরিবর্তন করে, সেটি রিলোড করে এবং ফলাফল পর্যবেক্ষণ করে পরীক্ষা চালাতে পারি।

../src/services/telemetryStreamService.ts near line 180

// Clamp G-forces
gLat = Math.max(-3, Math.min(3, gLat));		// sideways G-force
gLong = Math.max(-3, Math.min(3, gLong));	// front/back G-force

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

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

তারপর আপনার পরিবর্তনটি পূর্বাবস্থায় ফিরিয়ে আনুন এবং অ্যাপ্লিকেশনটি পুনরায় চালান। গাড়িটি যখন কোনো মোড়ে পৌঁছায় তখন সহায়ক অডিও পরামর্শটি লক্ষ্য করেছেন? চালককে পরামর্শ দেওয়ার জন্য জি-ফোর্স ডেটা পয়েন্টগুলো অত্যন্ত গুরুত্বপূর্ণ।

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

সেই একই ফাইলে ( telemetryStreamService.ts ) ১৫৮ নম্বর লাইনের কাছাকাছি, আপনি processPoint() ফাংশনটি পাবেন। সেই ফাংশনের ভেতরে, চলুন গতিকে সীমাবদ্ধ করি।

পরিবর্তন:

private processPoint(point: GpsSSEPoint) {
...
 const speedKmh = point.speed > 200 ? point.speed : point.speed * 3.6;
...

প্রতি:

private processPoint(point: GpsSSEPoint) {
...
 let speedKmh = point.speed > 200 ? point.speed : point.speed * 3.6;
 speedKmh = Math.min(speedKmh, 48);   // 48 kmh is approx 30 mph
...

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

এখন সেই পরিবর্তনগুলো পূর্বাবস্থায় ফিরিয়ে আনুন এবং অ্যাপ্লিকেশনটি পুনরায় চালান।

স্পষ্টতই, গাড়ির গতি একটি মূল্যবান তথ্য। মূল্যবান পরামর্শ দেওয়ার জন্য কোন নির্দিষ্ট তথ্যগুলো অপরিহার্য, তা বোঝা অত্যন্ত জরুরি। একইভাবে, কোন তথ্যগুলো প্রাসঙ্গিক নয়, তা মূল্যায়ন করাও সমান গুরুত্বপূর্ণ।

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

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

৮. সুরক্ষা বেষ্টনী এবং সংকেতায়িত মানবীয় দক্ষতা যোগ করুন

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

এই অংশে আপনি ওই লেয়ারটি যোগ করবেন।

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

এই অংশে, আপনি যা শিখবেন:

  • মডেলের আচরণ নির্ধারণকারী প্রতিক্রিয়া নিয়মাবলী প্রবর্তন করুন।
  • বিভ্রান্তিকর পরামর্শ কমাতে নিরাপত্তা যাচাই প্রয়োগ করুন।
  • পাইপলাইনে এনকোডেড মানব দক্ষতা অন্তর্ভুক্ত করুন
  • এই সংযোজনগুলির আগে ও পরের প্রতিক্রিয়াগুলি তুলনা করুন

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

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

../src/utils/coachingKnowledge.ts near line 115

...
export const RACING_PHYSICS_KNOWLEDGE = `
CORE PRINCIPLES:
1. **The Friction Circle:** A tire has 100% grip. If you use 100% for braking, you have 0% for turning.
  - *Error:* Turning while 100% braking = Understeer (Plowing).
  - *Fix:* "Trail braking" (releasing brake pressure as steering angle increases).

2. **Weight Transfer:**
  - Braking shifts weight forward (Front grip UP, Rear grip DOWN).
  - Accelerating shifts weight backward (Front grip DOWN, Rear grip UP).
  - *Error:* Lifting off throttle mid-corner shifts weight forward abruptly -> Oversteer (Spin risk).

3. **The racing line:**
...

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

চলুন RACING_PHYSICS_KNOWLEDGE বাদ দিয়ে আমাদের রেসিং বিষয়ক পরামর্শগুলো খতিয়ে দেখি।

export const RACING_PHYSICS_KNOWLEDGE = ``;

অ্যাপ্লিকেশনটি পুনরায় চালান। এখন আমরা কী ধরনের কোচিং পরামর্শ পাব?

সাধারণ পরামর্শটি লক্ষ্য করুন।

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

এই ধাপটি একটি বিশ্বাসযোগ্য এআই সিস্টেমের একটি অত্যন্ত গুরুত্বপূর্ণ দিক। জোরালো কোনো ইঙ্গিত দিলেই বিশ্বাস এমনি এমনি তৈরি হয়ে যায় না। সিস্টেমের নকশা এবং সমালোচনামূলক চিন্তাভাবনা থেকেই বিশ্বাসের জন্ম হয়।

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

৯. কোচিং পারসোনা এবং ইউজার এক্সপেরিয়েন্স ডিজাইন করুন

আপনার যুক্তি-প্রক্রিয়াটি একবার তৈরি হয়ে গেলে, পরবর্তী প্রশ্ন হলো সিস্টেমটি কীভাবে ব্যবহারকারীর সাথে যোগাযোগ করবে।

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

এই অংশে, আপনি যা শিখবেন:

  • কোচিং পার্সোনার জন্য একটি সিস্টেম প্রম্পট তৈরি বা পরিমার্জন করুন
  • বিভিন্ন কোচিং শৈলী নিয়ে পরীক্ষা-নিরীক্ষা করুন
  • লক্ষ্য করুন কিভাবে নির্দেশনার পরিবর্তন প্রতিক্রিয়াগুলিকে প্রভাবিত করে।
  • বিশ্বাসযোগ্য প্রতিক্রিয়ার জন্য UI প্রয়োজনীয়তা নির্ধারণ করুন
  • জরুরি এবং অ-জরুরি বার্তার জন্য টেক্সট-টু-স্পিচ (TTS) সমর্থন সম্পর্কে জানুন।

আমাদের অ্যাপ্লিকেশনে একাধিক কোচিং পার্সোনা রয়েছে। প্রতিটি ভিন্ন ভিন্ন ধরনের কোচিং পরামর্শ প্রদান করে।

ব্যক্তিত্ব

বৈশিষ্ট্য

টনি

অনুপ্রেরণামূলক, অনুভূতি-ভিত্তিক

র‍্যাচেল

প্রযুক্তিগত, পদার্থবিদ্যা-কেন্দ্রিক

এজে

সরাসরি, স্পষ্ট নির্দেশ

গারমিন

ডেটা-কেন্দ্রিক, ডেল্টা অপ্টিমাইজেশন

সুপার এজে

অভিযোজিত, ত্রুটির ধরণ অনুযায়ী স্যুইচ হয়

এই পারসোনাগুলো ../src/utils/coachingKnowledge.ts ফাইলে সংজ্ঞায়িত করা আছে।

এই ফাইলে, আপনি একটি অবজেক্ট ম্যাপ ( COACHES ) দেখতে পাবেন যা স্ট্রিং কী-গুলোকে CoachPersonas এর সাথে যুক্ত করে। একটি CoachPersona প্রত্যেক ধরনের কোচের অ্যাট্রিবিউট থাকে। একটি গুরুত্বপূর্ণ অ্যাট্রিবিউট হলো systemPrompt । প্রত্যেক পার্সোনার নিজস্ব systemPrompt থাকে যা LLM-কে কীভাবে উত্তর দিতে হবে সে বিষয়ে নির্দেশনা দেয়।

চলুন, system prompts একটি পরিবর্তন করে দেখি LLM কীভাবে সাড়া দেয়।

৩১ নম্বর লাইনের কাছাকাছি, আপনি 'AJ'-এর জন্য systemPrompt দেখতে পাবেন, যিনি তার পরামর্শের ক্ষেত্রে খুবই সরাসরি এবং স্পষ্টভাষী। চলুন সেই systemPrompt পরিবর্তন করে দিই যাতে AJ অতিরিক্ত বিনয়ী হয়ে ওঠে।

systemPrompt: `You are AJ, a race engineer that is excessively polite. 
	Use telemtry terminology.  Be actionable
	Examples: 	"Lat G settling. please throttle", 
				"Brake when its convenient."
	Keep responses under 12 words. Never explain  just command.`

অ্যাপ্লিকেশনটি পুনরায় চালান, কোচ হিসেবে এজে-কে নির্বাচন করুন এবং দেখুন কী ধরনের প্রতিক্রিয়া তৈরি হয়।

এখন মূল systemPrompt পুনরুদ্ধার করুন এবং অ্যাপ্লিকেশনটি পুনরায় চালান। লক্ষ্য করুন যে, এলএলএম-কে পার্সোনার সাথে মানানসই একটি প্রতিক্রিয়া প্রদানে পথনির্দেশনা দেওয়ার ক্ষেত্রে সিস্টেম প্রম্পটটি অত্যন্ত গুরুত্বপূর্ণ।

বিশ্বাস শুধু নির্ভুলতার উপরই নির্ভর করে না, বরং তা উপস্থাপনের উপরও নির্ভরশীল। প্রযুক্তিগতভাবে সঠিক পরামর্শও অকার্যকর হতে পারে, যদি তা অস্পষ্ট, অসময়ে দেওয়া বা মনোযোগ বিঘ্নকারী হয়।

একটি বিশ্বাসযোগ্য সিস্টেমকে অবশ্যই ভালোভাবে যোগাযোগ করতে হবে। ব্যবহারকারীর অভিজ্ঞতা হলো বিশ্বাসযোগ্যতার কাঠামোরই একটি অংশ।

১০. এন্ড-টু-এন্ড আর্কিটেকচার পর্যালোচনা করুন

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

আপনার অ্যাপ্লিকেশনে এখন এই উপাদানগুলো অন্তর্ভুক্ত রয়েছে:

  • টেলিমেট্রি স্ট্রিম
  • ভিজ্যুয়ালাইজেশন স্তর
  • এআই-প্রস্তুত ডেটা রূপান্তর পর্যায়
  • যুক্তিনির্ভর এলএলএম দ্বারা চালিত কৌশলের উপাদানসমূহ
  • রক্ষাকবচ এবং সংকেতায়িত মানবিক নির্দেশনা
  • ব্যবহারকারী-কেন্দ্রিক কোচিং অভিজ্ঞতা

এই উপাদানগুলোর সামগ্রিক কার্যপ্রবাহ বোঝার একটি কার্যকর ও সহজ উপায় হলো আমাদের অ্যাপ্লিকেশনে লগিং যুক্ত করা।

পাথগুলোর মধ্য দিয়ে টেলিমেট্রি ডেটা প্রবাহিত হওয়ার সময় তা দেখার জন্য আমরা লগিং যুক্ত করব।

প্রথমে, চলুন টেলিমেট্রি ডেটা দেখে নেওয়া যাক। telemetryStreamService.ts ফাইলে, প্রায় ২১২ নম্বর লাইনে ( this.emit(frame) , এমন একটি লাইন যোগ করুন যা গতি, ল্যাটারাল জি-ফোর্স (পার্শ্বীয় ত্বরণ), এবং চালক কতটা জোরে ব্রেক প্যাডেল চাপছেন তা প্রদর্শন করে।

console.log('FRAME', { 
    speed: frame.speed.toFixed(1), 
    gLat: frame.gLat.toFixed(2),
    brake: frame.brake.toFixed(0) }
);

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

ডেভটুলস কনসোল

অ্যাপ্লিকেশনটিতে টেলিমেট্রি এন্ডপয়েন্টটি প্রবেশ করান এবং "কানেক্ট" এ ক্লিক করুন। এখন আপনি আগত টেলিমেট্রি ডেটা দেখতে পাবেন।

এখন, রিফ্লেক্স পাথ এবং স্ট্র্যাটেজি পাথের জন্য লগিং যোগ করা যাক।

../src/services/coachingService.ts ফাইলের প্রায় ৭১ নম্বর লাইনে this.emit() এর আগে, রিফ্লেক্স পাথের জন্য একটি লগিং লাইন যোগ করুন:

console.log('Reflex', { 
	action: rule.action, 
	text, 
	coach: this.coachId }
);

এবং একই ফাইলে, প্রায় ২৮৭ নম্বর লাইনে, this.emit() এর আগে, স্ট্র্যাটেজি পাথের জন্য একটি অনুরূপ লগিং লাইন যোগ করুন (আসুন Gemini API থেকে প্রাপ্ত কোচিং রেসপন্স text যোগ করি):

console.log('Strategy', { 
	coach: coach.id, 
	chars: text.length, 
	preview: text.slice(0, 60) }
);

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

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

বিশ্বাসযোগ্য এআই একটি স্থাপত্যগত ফলাফল, কোনো একক বৈশিষ্ট্য নয়।

ভেঙে ফেলা (পরিষেবাটি অপসারণ করা)

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

gcloud run services delete streaming-telemetry-server \
  --region us-central1 \
  --platform managed

প্রয়োজনে, ডিপ্লয় করার সময় ব্যবহৃত অঞ্চলের নাম দিয়ে us-central1 প্রতিস্থাপন করতে ভুলবেন না। অনুরোধ করা হলে নিশ্চিত করুন।

১১. চ্যালেঞ্জ

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

প্রস্তাবিত চ্যালেঞ্জ

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

উদাহরণস্বরূপ, এই ল্যাবে অর্জিত শিক্ষা অন্য কোনো ক্ষেত্রে প্রয়োগ করার সময় এই প্রশ্নগুলো বিবেচনা করুন:

  • অন্য কোনো ক্ষেত্রে রেসিং টেলিমেট্রি, অর্থাৎ অবিচ্ছিন্ন ডেটার সমতুল্য কী?
  • কোন সিদ্ধান্তগুলো তাৎক্ষণিক হওয়া প্রয়োজন এবং কোন সিদ্ধান্তগুলো অধিক কৌশলগত?
  • কোন ধরনের মানবীয় দক্ষতাকে সংকেতায়িত করার প্রয়োজন হবে?
  • সিস্টেমটিকে বিশ্বাসযোগ্য মনে করার জন্য ব্যবহারকারীদের কী দেখতে হবে?

এই চ্যালেঞ্জগুলো আপনাকে রেসিংয়ের উদাহরণের বাইরে গিয়ে ভাবতে এবং এই কোডল্যাবের পেছনের বিশ্বাসযোগ্যতার বৃহত্তর ডিজাইন প্যাটার্নটি উপলব্ধি করতে উৎসাহিত করে।

১২. উপসংহার এবং পরবর্তী পদক্ষেপ

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

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

একটি বিশ্বাসযোগ্য এআই সিস্টেমে প্রায়শই নিম্নলিখিত বিষয়গুলোর সমন্বয় থাকে:

  • কাঠামোগত রিয়েল-টাইম ডেটা
  • মডেল-ভিত্তিক যুক্তি
  • এনকোডেড ডোমেইন বিশেষজ্ঞতা
  • সুস্পষ্ট রক্ষাকবচ
  • চিন্তাশীল ব্যবহারকারীর অভিজ্ঞতা ডিজাইন

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

শেষ রেখা