ক্রোম এক্সটেনশনে প্রম্পট API, ক্রোম এক্সটেনশনগুলিতে প্রম্পট API

প্রকাশিত: নভেম্বর 11, 2024

এক্সটেনশনের জন্য প্রম্পট API এখন একটি অরিজিন ট্রায়ালে উপলব্ধ, যাতে আপনি ব্রাউজারে আমাদের সবচেয়ে দক্ষ ভাষার মডেল জেমিনি ন্যানো ব্যবহার করে এমন Chrome এক্সটেনশনগুলি তৈরি করতে পারেন৷

ক্রোম এক্সটেনশনের সাথে প্রম্পট API-এর জন্য অনেকগুলি ব্যবহারের ক্ষেত্রে রয়েছে৷ এখানে কিছু উদাহরণ আছে:

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

এগুলি মাত্র কয়েকটি সম্ভাবনা, কিন্তু আপনি যা তৈরি করেন তা দেখে আমরা উত্তেজিত।

প্রাপ্যতা

  • এই API দিয়ে এক্সটেনশন তৈরি করতে Chrome 131 থেকে 136-এ চলমান প্রম্পট API অরিজিন ট্রায়ালে যোগ দিন। আপনি যদি অরিজিন ট্রায়ালে নতুন হয়ে থাকেন, তবে এগুলি সমস্ত ডেভেলপারদের জন্য উন্মুক্ত সময়-সীমিত প্রোগ্রাম, যা পরীক্ষামূলক প্ল্যাটফর্ম বৈশিষ্ট্যগুলিতে প্রাথমিক অ্যাক্সেস অফার করে৷ বিকাশকারীরা পরীক্ষা করতে পারে, ব্যবহারকারীর প্রতিক্রিয়া সংগ্রহ করতে পারে এবং ভবিষ্যতের লঞ্চের দিকে পুনরাবৃত্তি করতে পারে।
    • যদিও ব্যবহারের সীমা থাকতে পারে, আপনি লাইভ টেস্টিং এবং ব্যবহারকারীর প্রতিক্রিয়া সংগ্রহের জন্য এই বৈশিষ্ট্যগুলিকে একীভূত করতে পারেন। লক্ষ্য হল এই API এর ভবিষ্যত পুনরাবৃত্তিগুলি জানানো, কারণ আমরা বৃহত্তর প্রাপ্যতার দিকে কাজ করি।
  • নতুন বিল্ট-ইন এআই এপিআই এবং আমাদের মেলিং লিস্টে আলোচনায় অ্যাক্সেসের জন্য প্রাথমিক পূর্বরূপ প্রোগ্রামে যোগ দিন

মূল বিচারে অংশগ্রহণ করুন

ক্রোম এক্সটেনশনে প্রম্পট API ব্যবহার করতে, আপনার এক্সটেনশনের প্রয়োজন হতে পারে এমন অন্য কোনো অনুমতির সাথে নিম্নলিখিত উদ্ধৃতি অনুসারে আপনার manifest.json ফাইলে "aiLanguageModelOriginTrial" অনুমতি যোগ করুন।

অরিজিন ট্রায়ালের জন্য আপনার এক্সটেনশন সাইন আপ করতে, ওয়েব অরিজিন হিসাবে URL chrome-extension://YOUR_EXTENSION_ID ব্যবহার করুন৷ উদাহরণস্বরূপ, chrome-extension://ljjhjaakmncibonnjpaoglbhcjeolhkk

Chrome অরিজিন ট্রায়াল সাইন আপ করুন

এক্সটেনশন আইডি গতিশীলভাবে তৈরি করা হয়। একবার বরাদ্দ করা হলে, আপনি ম্যানিফেস্টে key বৈশিষ্ট্য যোগ করে আইডিটিকে স্থিতিশীল থাকতে বাধ্য করতে পারেন।

আপনি আসল ট্রায়ালের জন্য সাইন আপ করার পরে, আপনি একটি জেনারেটেড টোকেন পাবেন, যা আপনাকে ম্যানিফেস্টে trial_tokens ক্ষেত্রের মান হিসাবে একটি অ্যারেতে পাস করতে হবে।

{
  "manifest_version": 3,
  "name": "YOUR_EXTENSION_NAME",
  "permissions": ["aiLanguageModelOriginTrial"],
  "trial_tokens": ["GENERATED_TOKEN"],
}

লোকালহোস্টে সমর্থন যোগ করুন

অরিজিন ট্রায়ালের সময় localhost প্রম্পট API অ্যাক্সেস করতে, আপনাকে অবশ্যই ক্রোমকে সর্বশেষ সংস্করণে আপডেট করতে হবে। তারপর, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. এই প্ল্যাটফর্মগুলির একটিতে Chrome খুলুন: Windows, Mac, বা Linux৷
  2. chrome://flags/#optimization-guide-on-device-model এ যান।
  3. সক্রিয় বাইপাস পারফরিকুয়ারমেন্ট নির্বাচন করুন।
    • এটি পারফরম্যান্স চেক এড়িয়ে যায় যা আপনাকে আপনার ডিভাইসে জেমিনি ন্যানো ডাউনলোড করা থেকে বাধা দিতে পারে।
  4. পুনরায় চালু করুন বা Chrome পুনরায় চালু করুন ক্লিক করুন।

প্রম্পট API ব্যবহার করুন

একবার আপনি প্রম্পট API ব্যবহার করার অনুমতির অনুরোধ করলে, আপনি আপনার এক্সটেনশন তৈরি করতে পারেন। chrome.aiOriginTrial.languageModel নামস্থানে আপনার জন্য দুটি নতুন এক্সটেনশন ফাংশন উপলব্ধ রয়েছে:

  • capabilities() মডেলটি কী সক্ষম এবং এটি উপলব্ধ কিনা তা পরীক্ষা করতে।
  • create() একটি ভাষা মডেল সেশন শুরু করতে।

মডেল ডাউনলোড

প্রম্পট API Chrome-এ Gemini Nano মডেল ব্যবহার করে। যখন API Chrome-এ বিল্ট করা হয়, তখন প্রথমবার যখন কোনো এক্সটেনশন API ব্যবহার করে তখন মডেলটি আলাদাভাবে ডাউনলোড করা হয়।

মডেলটি ব্যবহারের জন্য প্রস্তুত কিনা তা নির্ধারণ করতে, অ্যাসিঙ্ক্রোনাস chrome.aiOriginTrial.languageModel.capabilities() ফাংশনটি কল করুন৷ এটি একটি available ক্ষেত্র সহ একটি AILanguageModelCapabilities অবজেক্ট প্রদান করে যা তিনটি সম্ভাব্য মান নিতে পারে:

  • 'no' : বর্তমান ব্রাউজারটি প্রম্পট API সমর্থন করে, কিন্তু এই মুহূর্তে এটি ব্যবহার করা যাবে না। এটি বেশ কয়েকটি কারণে হতে পারে, যেমন মডেলটি ডাউনলোড করার জন্য উপলব্ধ ডিস্কের অপর্যাপ্ত স্থান।
  • 'readily' : বর্তমান ব্রাউজারটি প্রম্পট API সমর্থন করে এবং এটি এখনই ব্যবহার করা যেতে পারে।
  • 'after-download' : বর্তমান ব্রাউজারটি প্রম্পট এপিআই সমর্থন করে, তবে এটিকে প্রথমে মডেলটি ডাউনলোড করতে হবে।

মডেল ডাউনলোড ট্রিগার করতে এবং ভাষা মডেল সেশন তৈরি করতে, অ্যাসিঙ্ক্রোনাস chrome.aiOriginTrial.languageModel.create() ফাংশনটিতে কল করুন৷ যদি capabilities() এর প্রতিক্রিয়া 'after-download' হয়, তাহলে ডাউনলোডের অগ্রগতি শোনার জন্য এটি সর্বোত্তম অনুশীলন। এইভাবে, ডাউনলোডে সময় লাগলে আপনি ব্যবহারকারীকে জানাতে পারেন।

const session = await chrome.aiOriginTrial.languageModel.create({
  monitor(m) {
    m.addEventListener("downloadprogress", (e) => {
      console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
    });
  },
});

মডেল ক্ষমতা

capabilities() ফাংশন আপনাকে ভাষা মডেলের ক্ষমতা সম্পর্কেও জানায়। available ছাড়াও, ফলস্বরূপ AILanguageModelCapabilities অবজেক্টের নিম্নলিখিত ক্ষেত্রগুলিও রয়েছে:

await chrome.aiOriginTrial.languageModel.capabilities();
// {available: 'readily', defaultTopK: 3, maxTopK: 8, defaultTemperature: 1}

একটি অধিবেশন তৈরি করুন

একবার আপনি প্রম্পট এপিআই চালানোর বিষয়ে নিশ্চিত হয়ে গেলে, আপনি create() ফাংশন সহ একটি সেশন তৈরি করেন, যা আপনাকে prompt() বা promptStreaming() ফাংশনগুলির সাথে মডেলটি প্রম্পট করতে দেয়।

সেশন অপশন

প্রতিটি সেশন একটি ঐচ্ছিক বিকল্প বস্তু ব্যবহার করে topK এবং temperature সাথে কাস্টমাইজ করা যেতে পারে। এই পরামিতিগুলির জন্য ডিফল্ট মানগুলি chrome.aiOriginTrial.languageModel.capabilities() থেকে ফেরত দেওয়া হয়।

const capabilities = await chrome.aiOriginTrial.languageModel.capabilities();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await chrome.aiOriginTrial.languageModel.create({
  temperature: Math.max(capabilities.defaultTemperature * 1.2, 2.0),
  topK: capabilities.defaultTopK,
});

create() ফাংশনের ঐচ্ছিক অপশন অবজেক্টটিও একটি signal ফিল্ড নেয়, যা আপনাকে সেশনটি ধ্বংস করতে AbortSignal পাস করতে দেয়।

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const session = await chrome.aiOriginTrial.languageModel.create({
  signal: controller.signal,
})
সিস্টেম প্রম্পট

সিস্টেম প্রম্পট দিয়ে, আপনি ভাষা মডেলকে কিছু প্রসঙ্গ দিতে পারেন।

const session = await chrome.aiOriginTrial.languageModel.create({
  systemPrompt: 'You are a helpful and friendly assistant.',
});
await session.prompt('What is the capital of Italy?');
// 'The capital of Italy is Rome.'

প্রাথমিক প্রম্পট

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

const session = await chrome.aiOriginTrial.languageModel.create({
  initialPrompts: [
    { role: 'system', content: 'You are a helpful and friendly assistant.' },
    { role: 'user', content: 'What is the capital of Italy?' },
    { role: 'assistant', content: 'The capital of Italy is Rome.'},
    { role: 'user', content: 'What language is spoken there?' },
    { role: 'assistant', content: 'The official language of Italy is Italian. [...]' }
  ]
});

সেশন তথ্য

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

console.log(`${session.tokensSoFar}/${session.maxTokens}
(${session.tokensLeft} left)`);

অধিবেশন অধ্যবসায়

প্রতিটি সেশন কথোপকথনের প্রেক্ষাপট ট্র্যাক রাখে। সেশনের প্রসঙ্গ উইন্ডোটি পূর্ণ না হওয়া পর্যন্ত পূর্ববর্তী মিথস্ক্রিয়াগুলি ভবিষ্যতের মিথস্ক্রিয়াগুলির জন্য বিবেচনা করা হয়।

const session = await chrome.aiOriginTrial.languageModel.create({
  systemPrompt: 'You are a friendly, helpful assistant specialized in clothing choices.'
});

const result1 = await session.prompt(
  'What should I wear today? It is sunny. I am unsure between a t-shirt and a polo.'
);
console.log(result1);

const result2 = await session.prompt(
  'That sounds great, but oh no, it is actually going to rain! New advice?'
);
console.log(result2);

একটি সেশন ক্লোন করুন

সম্পদ সংরক্ষণ করতে, আপনি clone() ফাংশন দিয়ে একটি বিদ্যমান সেশন ক্লোন করতে পারেন। কথোপকথনের প্রসঙ্গ পুনরায় সেট করা হয়েছে, কিন্তু প্রাথমিক প্রম্পট বা সিস্টেম প্রম্পটগুলি অক্ষত থাকবে। clone() ফাংশনটি একটি signal ক্ষেত্র সহ একটি ঐচ্ছিক বিকল্প অবজেক্ট নেয়, যা আপনাকে ক্লোন সেশনটি ধ্বংস করতে একটি AbortSignal পাস করতে দেয়।

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const clonedSession = await session.clone({
  signal: controller.signal,
});

মডেল প্রম্পট

আপনি prompt() বা promptStreaming() ফাংশনগুলির সাথে মডেলটিকে প্রম্পট করতে পারেন।

নন-স্ট্রিমিং আউটপুট

আপনি যদি একটি সংক্ষিপ্ত ফলাফল আশা করেন, আপনি prompt() ফাংশনটি ব্যবহার করতে পারেন যা একবার উপলব্ধ হলে প্রতিক্রিয়া প্রদান করে।

// Start by checking if it's possible to create a session based on the
// availability of the model, and the characteristics of the device.
const {available, defaultTemperature, defaultTopK, maxTopK } =
  await chrome.aiOriginTrial.languageModel.capabilities();

if (available !== 'no') {
  const session = await chrome.aiOriginTrial.languageModel.create();

  // Prompt the model and wait for the whole result to come back.
  const result = await session.prompt('Write me a poem!');
  console.log(result);
}

স্ট্রিমিং আউটপুট

যদি আপনি একটি দীর্ঘ প্রতিক্রিয়া আশা করেন, তাহলে আপনাকে promptStreaming() ফাংশন ব্যবহার করা উচিত যা আপনাকে মডেল থেকে আসা আংশিক ফলাফলগুলি দেখাতে দেয়।

const {available, defaultTemperature, defaultTopK, maxTopK } =
  await chrome.aiOriginTrial.languageModel.capabilities();

if (available !== 'no') {
  const session = await chrome.aiOriginTrial.languageModel.create();

  // Prompt the model and stream the result:
  const stream = session.promptStreaming('Write me an extra-long poem!');
  for await (const chunk of stream) {
    console.log(chunk);
  }
}

promptStreaming() একটি ReadableStream ফেরত দেয় যার খণ্ডগুলি পরস্পরকে একে অপরের উপর তৈরি করে। উদাহরণস্বরূপ, "Hello," , "Hello world," , "Hello world I am," , "Hello world I am an AI." . এটি উদ্দেশ্যমূলক আচরণ নয়। আমরা প্ল্যাটফর্মে অন্যান্য স্ট্রিমিং API-এর সাথে সারিবদ্ধ করতে চাই, যেখানে খণ্ডগুলি একটি একক দীর্ঘ স্ট্রিমের ধারাবাহিক টুকরা। এর মানে হল আউটপুট "Hello" , " world" , " I am" , " an AI" এর মতো একটি ক্রম হবে।

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

let result = '';
let previousChunk = '';

for await (const chunk of stream) {
  const newChunk = chunk.startsWith(previousChunk)
      ? chunk.slice(previousChunk.length) : chunk;
  console.log(newChunk);
  result += newChunk;
  previousChunk = chunk;
}
console.log(result);

একটি প্রম্পট চালানো বন্ধ করুন

prompt() এবং promptStreaming() উভয়ই একটি signal ক্ষেত্রের সাথে একটি ঐচ্ছিক দ্বিতীয় প্যারামিটার গ্রহণ করে, যা আপনাকে প্রম্পট চালানো বন্ধ করতে দেয়।

const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const result = await session.prompt(
  'Write me a poem!',
  { signal: controller.signal }
);

একটি অধিবেশন বন্ধ করুন

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

await session.prompt(
  'You are a friendly, helpful assistant specialized in clothing choices.'
);

session.destroy();

// The promise is rejected with an error explaining that
// the session is destroyed.
await session.prompt(
  'What should I wear today? It is sunny and I am unsure
  between a t-shirt and a polo.'
);

ডেমো

ক্রোম এক্সটেনশনে প্রম্পট API পরীক্ষা করতে, ডেমো এক্সটেনশন ইনস্টল করুন। এক্সটেনশন সোর্স কোড GitHub এ উপলব্ধ।

প্রম্পট API-এর জন্য ডেমো ইন্টারফেস

অংশগ্রহণ করুন এবং মতামত শেয়ার করুন

অরিজিন ট্রায়ালে যোগ দিয়ে আপনার ক্রোম এক্সটেনশনে এখনই প্রম্পট API পরীক্ষা করা শুরু করুন এবং আপনার প্রতিক্রিয়া শেয়ার করুন। আপনার ইনপুট সরাসরি প্রভাবিত করতে পারে কিভাবে আমরা এই API এর ভবিষ্যত সংস্করণগুলি তৈরি এবং প্রয়োগ করি এবং সমস্ত অন্তর্নির্মিত AI API গুলি।