প্রম্পট এপিআই দিয়ে একটি স্থানীয় এবং অফলাইন-সক্ষম চ্যাটবট তৈরি করুন

প্রকাশিত: ১৩ জানুয়ারি, ২০২৫

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

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

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

শেয়ার করা মডেল অ্যাক্সেস

প্রম্পট এপিআই (Prompt API) ওয়েবএলএলএম (WebLLM)-এর মতোই কাজ করে। তবে, এক্ষেত্রে মডেল নির্বাচনের কোনো সুযোগ নেই (আপনাকে ব্রাউজারের সাথে আসা এলএলএম-টিই ব্যবহার করতে হবে)। বিল্ট-ইন এআই (AI) চালু করলে, ক্রোম ব্রাউজারে একটি ফাউন্ডেশন মডেল ডাউনলোড করে। এরপর এই মডেলটি একাধিক অরিজিনের মধ্যে শেয়ার করা যায় এবং এটি সর্বোচ্চ পারফরম্যান্সে চলে। গিটহাবে (GitHub) একটি ইস্যু রয়েছে যেখানে একজন ডেভেলপার মডেল নির্বাচনের সুবিধা যোগ করার জন্য অনুরোধ করেছেন।

কথোপকথন শুরু করুন

আপনি ঠিক একই উপায়ে মেসেজ কথোপকথন শুরু করতে পারেন, তবে প্রম্পট এপিআই (Prompt API) সিস্টেম প্রম্পট নির্দিষ্ট করার জন্য একটি সংক্ষিপ্ত সিনট্যাক্সও প্রদান করে। LanguageModel ইন্টারফেসের create() মেথড ব্যবহার করে ল্যাঙ্গুয়েজ মডেল সেশনটি শুরু করুন:

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `You are a helpful assistant. You will answer questions related
        to the user's to-do list. Decline all other requests not related to the
         user's todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
    },
  ],
});

আপনার প্রথম প্রশ্নের উত্তর দিন

স্ট্রিমিং কনফিগার করার জন্য একটি কনফিগারেশন অবজেক্ট থাকার পরিবর্তে, প্রম্পট এপিআই দুটি পৃথক পদ্ধতি প্রদান করে:

  • prompt() সম্পূর্ণ স্ট্রিংটি ফেরত দেয়।
  • promptStreaming() একটি async iterable রিটার্ন করে। WebLLM-এর বিপরীতে, Prompt API সম্পূর্ণ স্ট্রিং রেসপন্স দিয়ে থাকে, তাই আপনাকে নিজে থেকে ফলাফলগুলো একত্রিত করতে হয় না।

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

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

ডেমো

সারসংক্ষেপ

অ্যাপ্লিকেশনগুলিতে এলএলএম (LLM) অন্তর্ভুক্ত করা ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে। যদিও ক্লাউড পরিষেবাগুলি ব্যবহারকারীর ডিভাইস নির্বিশেষে উচ্চ-মানের মডেল এবং উচ্চ ইনফারেন্স পারফরম্যান্স প্রদান করে, ওয়েবএলএলএম (WebLLM) এবং ক্রোমের প্রম্পট এপিআই (Prompt API)-এর মতো অন-ডিভাইস সমাধানগুলি অফলাইনে ব্যবহারযোগ্য, গোপনীয়তা উন্নত করে এবং ক্লাউড-ভিত্তিক বিকল্পগুলির তুলনায় খরচ সাশ্রয় করে। এই নতুন এপিআইগুলি ব্যবহার করে দেখুন এবং আপনার ওয়েব অ্যাপ্লিকেশনগুলিকে আরও স্মার্ট করে তুলুন।