প্রম্পট API কী?

প্রম্পট API হল W3C ওয়েব মেশিন লার্নিং কমিউনিটি গ্রুপের একটি পরীক্ষামূলক ওয়েব প্ল্যাটফর্ম প্রস্তাব যা ব্রাউজার-প্রদত্ত বড় ভাষা মডেলকে window.LanguageModel ইন্টারফেসের মাধ্যমে JavaScript-এ প্রকাশ করে। পৃষ্ঠাগুলি LanguageModel.create() দিয়ে একটি সেশন তৈরি করে, ঐচ্ছিকভাবে এটিকে একটি সিস্টেম প্রম্পট দিয়ে কনফিগার করে, এবং তারপর prompt() বা promptStreaming() কল করে একটি প্রতিক্রিয়া পেতে।

হোস্ট করা LLM API কল করার বিপরীতে, মডেলটি ব্যবহারকারীর ডিভাইসে চলে। এর মানে ইনপুটগুলি কখনও মেশিন ছাড়ে না, মডেল ক্যাশ করা হলে পৃষ্ঠাটি অফলাইনে কাজ করে, এবং কোনও প্রতি-অনুরোধ খরচ নেই। Chrome-এ অন্তর্নিহিত মডেল হল Gemini Nano, কিন্তু API ইচ্ছাকৃতভাবে মডেল-অজ্ঞেয়বাদী যাতে অন্যান্য ব্রাউজারগুলি বিভিন্ন বাস্তবায়ন প্লাগ করতে পারে।

একটি সেশন স্টেটফুল: এটি একটি context window-এর মধ্যে কথোপকথনের ইতিহাস ট্র্যাক করে যা টোকেনে পরিমাপ করা হয়। যখন উইন্ডোটি পূর্ণ হয়, সবচেয়ে পুরানো অ-সিস্টেম বার্তাগুলি স্বয়ংক্রিয়ভাবে বহিষ্কৃত হয় (একটি contextoverflow ইভেন্ট ফায়ার হয়), এবং আপনি যেকোনো সময় session.contextUsage এবং session.contextWindow পরিদর্শন করে কতটা স্থান বাকি আছে তা দেখতে পারেন।

টুল বর্ণনা

এই প্লেগ্রাউন্ডটি একটি ইন্টারেক্টিভ চ্যাট সারফেস যা window.LanguageModel-এ সংযুক্ত। এটি আপনাকে একটি সিস্টেম প্রম্পট সেট করতে, বার্তা পাঠাতে এবং মডেলটি রিয়েল টাইমে টোকেন স্ট্রিম করতে দেখতে দেয়। একটি প্রগতি বার মডেলের উপলব্ধতা এবং ডাউনলোড অগ্রগতি দেখায়, এবং একটি টোকেন-ব্যবহার বার রিপোর্ট করে সেশনের context window-এর কতটা ব্যবহার করা হচ্ছে।

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

বৈশিষ্ট্য

  • স্ট্রিমিং প্রতিক্রিয়াpromptStreaming() ব্যবহার করে যাতে টোকেনগুলি তৈরি হওয়ার সাথে সাথে চ্যাটে প্রদর্শিত হয়।
  • সিস্টেম প্রম্পট সম্পাদক — একটি স্থায়ী ভূমিকা বা আচরণ সংজ্ঞায়িত করুন যা প্রতিটি প্রতিক্রিয়া শর্তাধীন করে।
  • স্টপ বাটন — একটি AbortController ছাড়াই একটি ইন-ফ্লাইট প্রম্পট বাতিল করুন সেশন ভেঙে না দিয়ে।
  • লাইভ context ব্যবহারcontextUsage-কে contextWindow-এর বিপরীতে ভিজ্যুয়ালাইজ করে যাতে আপনি দেখতে পারেন কখন কথোপকথন ওভারফ্লো হতে চলেছে।
  • উপলব্ধতা এবং ডাউনলোড অগ্রগতি — মডেল ফেচ করা হচ্ছে এমন সময় availability() অবস্থা এবং downloadprogress ইভেন্টগুলি সারফেস করে।

ব্যবহারের ক্ষেত্র

  • স্থানীয়ভাবে প্রম্পট চেষ্টা করা — ক্লাউড API-এর জন্য অর্থ প্রদান না করে সিস্টেম প্রম্পট এবং ফিউ-শট প্যাটার্নগুলিতে পুনরাবৃত্তি করুন।
  • অন-ডিভাইস AI সম্ভাব্যতা পরীক্ষা করা — যাচাই করুন যে প্রম্পট API উপলব্ধ, context window কতটা বড় তা দেখুন এবং আপনার হার্ডওয়্যারে প্রতিক্রিয়া গতি বেঞ্চমার্ক করুন।
  • গোপনীয়তা-সংবেদনশীল খসড়া — পাঠ্য ব্রেনস্টর্ম বা পুনর্বাক্যাস করুন যা তৃতীয় পক্ষের সার্ভারে পাঠানো উচিত নয়।

প্রয়োজনীয়তা

  • একটি ব্রাউজার যা প্রম্পট API বাস্তবায়ন করে। Chrome 138+ এটি পরীক্ষামূলকভাবে প্রকাশ করে; পুরানো সংস্করণে আপনার chrome://flags/#prompt-api-for-gemini-nano এর মাধ্যমে এটি সক্ষম করতে হতে পারে এবং অন-ডিভাইস মডেল ডাউনলোড করতে হতে পারে।
  • একটি নিরাপদ context (HTTPS বা localhost)।
  • একটি ডিভাইস যা মডেলের হার্ডওয়্যার প্রয়োজনীয়তা পূরণ করে (পর্যাপ্ত ডিস্ক স্থান, RAM এবং একটি সমর্থিত GPU/CPU)। অসমর্থিত ডিভাইসে availability() unavailable রিটার্ন করে।
  • মডেল ডাউনলোড করার জন্য প্রাথমিক ব্যান্ডউইথ। পরবর্তী সেশনগুলি ক্যাশ করা মডেল পুনরায় ব্যবহার করে।

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

  1. মাউন্টে, টুলটি typeof window.LanguageModel চেক করে। যদি অনুপস্থিত থাকে, একটি সতর্কতা চ্যাট ইনপুট প্রতিস্থাপন করে।
  2. LanguageModel.availability() available, downloadable, downloading বা unavailable-এর একটি রিপোর্ট করে। ফলাফল প্রগতি বারে দেখানো হয়।
  3. প্রথমবার আপনি Send চাপলে, টুলটি LanguageModel.create() কল করে একটি monitor দিয়ে যা downloadprogress ইভেন্টগুলি UI-তে স্ট্রিম করে। যদি একটি সিস্টেম প্রম্পট সেট করা থাকে, এটি initialPrompts: [{ role: "system", content: ... }]-এর মাধ্যমে পাস করা হয়।
  4. ব্যবহারকারীর বার্তা session.promptStreaming(text, { signal })-এর মাধ্যমে পাঠানো হয়। রিটার্ন করা ReadableStream<string> চাংক দ্বারা চাংক ভোগ করা হয় এবং সহায়ক বার্তায় যোগ করা হয়।
  5. প্রতিটি প্রতিক্রিয়ার পরে, session.contextUsage এবং session.contextWindow পড়া হয় এবং টোকেন-ব্যবহার বারে প্রতিফলিত হয়।
  6. Stop চাপলে controller.abort() কল করে, যা ইন-ফ্লাইট স্ট্রিমকে একটি AbortError দিয়ে প্রত্যাখ্যান করে যখন পরবর্তী প্রম্পটের জন্য সেশনটি জীবিত রাখে।
  7. সিস্টেম প্রম্পট সম্পাদন করা ক্যাশ করা সেশনটি অবৈধ করে: বিদ্যমানটি destroy() করা হয় এবং পরবর্তী পাঠান আপডেট করা নির্দেশাবলী সহ একটি নতুন সেশন তৈরি করে।

বিকল্পগুলি ব্যাখ্যা করা হয়েছে

  • সিস্টেম প্রম্পট — একটি মুক্ত-ফর্ম নির্দেশনা যা প্রথম system-ভূমিকা বার্তা হিসাবে পাস করা হয়। এটি সমস্ত পরবর্তী পালা শর্তাধীন করে। এটি খালি রেখে একটি সিস্টেম বার্তা ছাড়াই একটি সেশন তৈরি করে।
  • Send / StopSend ইনপুটটি একটি user বার্তা হিসাবে জমা দেয়। Stop পূর্ববর্তী বার্তা মুছে না দিয়ে স্ট্রিমিং প্রতিক্রিয়া বাতিল করে।
  • টোকেন ব্যবহার — বর্তমান সেশনের জন্য used / total টোকেন। যখন used total-এর কাছাকাছি পৌঁছায়, পরবর্তী প্রম্পটে পুরানো ব্যবহারকারী/সহায়ক জোড়গুলি বহিষ্কৃত হবে।
  • মডেল অবস্থাavailability() এবং downloadprogress-এর সম্মিলিত পাঠ। মডেল ডাউনলোড করার সময়, বারটি অ্যানিমেট হয় এবং একটি শতাংশ দেখায়।

সীমাবদ্ধতা

  • প্রম্পট API পরীক্ষামূলক। পদ্ধতির নাম, বিকল্প (যেমন inputUsage বনাম contextUsage) এবং ইভেন্ট শব্দার্থ Chrome রিলিজের মধ্যে পরিবর্তিত হতে পারে।
  • আউটপুট গুণমান, সত্যতা এবং নির্দেশ-অনুসরণ সম্পূর্ণভাবে ব্রাউজার-প্রদত্ত মডেলের উপর নির্ভর করে এবং গ্যারান্টিযুক্ত নয়।
  • Context window হোস্ট করা LLM-এর তুলনায় ছোট। দীর্ঘ কথোপকথন ওভারফ্লো হবে এবং নীরবে প্রাথমিক পালাগুলি ড্রপ করবে।
  • API ওয়েব ওয়ার্কারদের কাছে প্রকাশ করা হয় না এবং ক্রস-অরিজিন iframes-এ Permissions Policy (language-model) প্রতিনিধিত্ব প্রয়োজন হতে পারে।
  • এই টুলটি ইচ্ছাকৃতভাবে temperature, topK, টুল ব্যবহার, মাল্টিমোডাল ইনপুট, কাঠামোগত আউটপুট (responseConstraint) বা সেশন ক্লোনিং প্রকাশ করে না। তারা স্পেসিফিকেশনের অংশ কিন্তু সাধারণ চ্যাটে ফোকাস রাখার জন্য প্লেগ্রাউন্ডের বাইরে রাখা হয়েছে।

FAQ

এটি কেন বলে যে API অসমর্থিত? window.LanguageModel আপনার ব্রাউজারে অসংজ্ঞায়িত। ডেস্কটপে সর্বশেষ Chrome চেষ্টা করুন এবং প্রয়োজনে প্রম্পট API ফ্ল্যাগ সক্ষম করুন এবং chrome://components-এর মাধ্যমে অন-ডিভাইস মডেল ডাউনলোড হওয়ার জন্য অপেক্ষা করুন।

প্রথম প্রতিক্রিয়া কেন ধীর? প্রথম কল একটি মডেল ডাউনলোড (প্রগতি বার দেখুন) এবং একটি সেশন-সৃষ্টি পদক্ষেপ ট্রিগার করতে পারে। পরবর্তী প্রম্পটগুলি একই সেশন পুনরায় ব্যবহার করে এবং প্রায় অবিলম্বে স্ট্রিম করা শুরু করে।

আমার প্রম্পট কি ডিভাইস ছেড়ে যায়? না। মডেল স্থানীয়ভাবে চলে। আপনার পাঠ এই টুল দ্বারা কোনও সার্ভারে পাঠানো হয় না।

Context পূর্ণ হলে কী ঘটে? সেশনটি একটি contextoverflow ইভেন্ট ফায়ার করে এবং স্থান তৈরি করতে সবচেয়ে পুরানো অ-সিস্টেম পালাগুলি বহিষ্কার করে। সিস্টেম প্রম্পট সংরক্ষিত থাকে।

সিস্টেম প্রম্পট পরিবর্তন করা কথোপকথনের মাঝপথে প্রতিক্রিয়া শৈলী কেন পরিষ্কার করেছে? সিস্টেম প্রম্পট সম্পাদন করা বর্তমান সেশনটি ধ্বংস করে এবং পরবর্তী পাঠানে একটি নতুন সেশন তৈরি করে। নতুন সেশনের পূর্ববর্তী পালাগুলির কোনও স্মৃতি নেই।