Prompt API

প্রকাশিত: ২০ মে, ২০২৫, শেষবার আপডেট করা হয়েছে: ২১ অক্টোবর, ২০২৬

ব্যাখ্যামূলক ওয়েব এক্সটেনশন Chrome স্ট্যাটাস ইনটেন্ট
GitHub Chrome 148 Chrome 138 ভিউ শিপিং করার উদ্দেশ্য
GitHub অরিজিন ট্রায়াল স্যাম্পলিং প্যারামিটারের জন্য অরিজিন ট্রায়াল Chrome 148 ভিউ পরীক্ষা করার উদ্দেশ্য

Prompt API-এর সাহায্যে, আপনি Chrome-এ ফাউন্ডেশন মডেলে ন্যাচারাল ল্যাঙ্গুয়েজ অনুরোধ পাঠাতে পারবেন।

আপনি অনেক উপায়ে Prompt API ব্যবহার করতে পারেন। যেমন, আপনি এগুলি তৈরি করতে পারেন:

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

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

হার্ডওয়্যার সংক্রান্ত প্রয়োজনীয়তা পর্যালোচনা করুন

Chrome-এ এইসব API ব্যবহার করে ফিচার অপারেট করেন এমন ডেভেলপার ও ব্যবহারকারীদের জন্য নিম্নলিখিত প্রয়োজনীয়তা রয়েছে। অন্যান্য ব্রাউজারের ক্ষেত্রে অপারেটিং সংক্রান্ত প্রয়োজনীয়তা আলাদা হতে পারে।

Language Detector এবং Translator API ডেস্কটপে Chrome-এ কাজ করে। এইসব API মোবাইল ডিভাইসে কাজ করে না।

Prompt API, Summarizer API, Writer API, Rewriter API এবং Proofreader API Chrome-এ কাজ করে যখন নিম্নলিখিত শর্তগুলি পূরণ করা হয়:

  • অপারেটিং সিস্টেম: Windows 10 বা 11; macOS 13+ (Ventura এবং তার পরবর্তী ভার্সন); Linux; অথবা Chromebook Plus ডিভাইসে ChromeOS (Platform 16389.0.0 এবং তার পরবর্তী ভার্সন)। Android, iOS-এর জন্য Chrome এবং Chromebook Plus নয় এমন ডিভাইসে ChromeOS-এ এখনও API কাজ করে না যা ফাউন্ডেশন মডেল ব্যবহার করে।
  • স্টোরেজ: আপনার Chrome প্রোফাইল যে ভলিউমে আছে সেখানে অন্তত ২২ জিবি খালি জায়গা থাকতে হবে।
  • GPU বা CPU: বিল্ট-ইন মডেল GPU বা CPU-এর মাধ্যমে রান করতে পারে।
    • GPU: ৪ জিবির বেশি VRAM থাকতেই হবে।
    • CPU: ১৬ জিবি বা তার বেশি র‌্যাম এবং ৪টি বা তার বেশি CPU কোর।
    • মনে রাখবেন: অডিও ইনপুট সহ Prompt API-এর জন্য GPU প্রয়োজন।
  • নেটওয়ার্ক: আনলিমিটেড ডেটা বা আনমিটার্ড কানেকশন।

ব্রাউজার মডেল আপডেট করার সাথে সাথে Gemini Nano-এর সঠিক সাইজ পরিবর্তিত হতে পারে। বর্তমান সাইজ নির্ধারণ করতে, chrome://on-device-internals দেখুন।

Prompt API ব্যবহার করা

Prompt API, Chrome-এ Gemini Nano মডেল ব্যবহার করে। API, Chrome-এ বিল্ট-ইন হলেও, প্রথমবার কোনও অরিজিন API ব্যবহার করলে, মডেলটি আলাদাভাবে ডাউনলোড করা হয়।

মডেলটি ব্যবহারের জন্য প্রস্তুত কিনা তা নির্ধারণ করতে, LanguageModel.availability() কল করুন।

const availability = await LanguageModel.availability({
  // The same options in `prompt()` or `promptStreaming()`
});

ডাউনলোড ট্রিগার করতে এবং ল্যাঙ্গুয়েজ মডেল ইনস্ট্যান্টিয়েট করতে, ব্যবহারকারী অ্যাক্টিভেশন চেক করুন। তারপর, create() ফাংশন কল করুন।

const session = await LanguageModel.create({
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  },
});

availability()-এর উত্তর downloading হলে, ডাউনলোডের প্রগ্রেস শুনুন এবং ব্যবহারকারীকে জানান, কারণ ডাউনলোড হতে সময় লাগতে পারে।

সেশন তৈরি করুন

Prompt API রান করতে পারলে, আপনি create() ফাংশনের মাধ্যমে সেশন তৈরি করেন।

const session = await LanguageModel.create();

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

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

const session = await LanguageModel.create({
  signal: controller.signal,
});

স্যাম্পলিং প্যারামিটার

স্যাম্পলিং কন্ট্রোল করার মাধ্যমে আপনি মডেলের উত্তর কতটা অনুমানযোগ্য (নির্ধারক) বা ক্রিয়েটিভ (বিভিন্ন ধরনের) হবে তা টিউন করতে পারবেন। ওয়েব প্ল্যাটফর্ম ও Chrome এক্সটেনশনের মধ্যে স্যাম্পেলিং প্যারামিটারের উপলভ্যতা আলাদা হয়:

  • ওয়েব: samplingMode বিকল্প ব্যবহার করুন, যা আউটপুট প্রেডিক্টেবিলিটি অ্যাডজাস্ট করার জন্য র-নম্বরের পরিবর্তে বর্ণনামূলক enum ভ্যালু ব্যবহার করে।
  • Chrome এক্সটেনশন: লিগ্যাসি নিউমেরিক্যাল প্যারামিটার (topK, temperature) এবং LanguageModel.params() পদ্ধতি কাজ করে।

ওয়েব স্যাম্পলিং মোড

samplingMode বিকল্পটি LanguageModel.create() (বা LanguageModel.availability())-এ পাস করুন।

কাজ করে এমন samplingMode enum ভ্যালুগুলি হল:

  • "most-predictable": সর্বোচ্চ নির্ধারক ও পূর্বাভাসযোগ্যতা।
  • "predictable": ন্যূনতম পরিবর্তন সহ আরও অনুমানযোগ্য আউটপুট।
  • "slightly-predictable": কিছুটা অনুমানযোগ্য আউটপুট।
  • "balanced": অনুমানযোগ্যতা ও সৃজনশীলতার মধ্যে ব্যালেন্স (সাধারণ ডিফল্ট অ্যাকশন)।
  • "slightly-creative": সামান্য বৈচিত্র্যপূর্ণ ও ক্রিয়েটিভ আউটপুট।
  • "creative": ক্রিয়েটিভ ও বৈচিত্র্যপূর্ণ আউটপুট।
  • "most-creative": সর্বাধিক পরিবর্তনশীলতা ও সৃজনশীলতা।
// Available on the web with the Sampling Parameters Origin Trial enabled
const session = await LanguageModel.create({
  samplingMode: 'creative',
});

// The configured sampling mode is exposed on the session instance
console.log(session.samplingMode);
// "creative"

Chrome এক্সটেনশনের জন্য স্যাম্পলিং প্যারামিটার

Chrome এক্সটেনশনে Prompt API ব্যবহার করার সময়, প্রতিটি সেশন এখনও topK এবং temperature-এর মাধ্যমে কাস্টমাইজ করা যেতে পারে, এর জন্য অবজেক্ট বিকল্প ব্যবহার করা হয়।

স্ট্যাটিক LanguageModel.params() ফাংশন আপনাকে ল্যাঙ্গুয়েজ মডেলের ডিফল্ট ও সর্বাধিক প্যারামিটার সীমা সম্পর্কে জানায়:

// Only available in Chrome Extensions
const params = await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 128, defaultTemperature: 1, maxTemperature: 2}

// Initializing a new session in extensions must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
  temperature: Math.min(params.defaultTemperature * 1.2, params.maxTemperature),
  topK: params.defaultTopK,
});

console.log(slightlyHighTemperatureSession.temperature);
console.log(slightlyHighTemperatureSession.topK);

প্রাথমিক প্রম্পটের সাথে প্রসঙ্গ যোগ করুন

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

const session = await 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. [...]',
    },
  ],
});

প্রিফিক্স সহ উত্তর সীমাবদ্ধ করুন

মডেলের আগের উত্তরগুলি বিস্তারিতভাবে ব্যাখ্যা করতে, আপনি আগের ভূমিকা ছাড়াও একটি "assistant" ভূমিকা যোগ করতে পারেন। যেমন:

const followup = await session.prompt([
  {
    role: "user",
    content: "I'm nervous about my presentation tomorrow"
  },
  {
    role: "assistant",
    content: "Presentations are tough!"
  }
]);

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

const characterSheet = await session.prompt([
  {
    role: 'user',
    content: 'Create a TOML character sheet for a gnome barbarian',
  },
  {
    role: 'assistant',
    content: '```toml\n',
    prefix: true,
  },
]);

প্রত্যাশিত ইনপুট ও আউটপুট যোগ করুন

Prompt API-তে মাল্টিমোডাল ক্ষমতা আছে এবং একাধিক ভাষা কাজ করে। আপনার সেশন তৈরি করার সময় expectedInputs এবং expectedOutputs মোডালিটি ও ভাষা সেট করুন।

  • type: মোডালিটি প্রত্যাশিত।
    • expectedInputs-এর জন্য, এটি text, image বা audio হতে পারে।
    • expectedOutputs-এর জন্য, Prompt API শুধুমাত্র text-কে অনুমতি দেয়।
  • languages: ভাষা বা প্রত্যাশিত ভাষা সেট করার জন্য অ্যারে। Prompt API "en", "ja", "es", "de" এবং "fr" গ্রহণ করে। আরও ভাষায় অনুবাদ করার সুবিধা ডেভেলপ করা হচ্ছে।
    • expectedInputs-এর জন্য, সিস্টেম প্রম্পটের ভাষা এবং এক বা একাধিক প্রত্যাশিত ব্যবহারকারীর প্রম্পটের ভাষা সেট করুন।
    • এক বা একাধিক expectedOutputs ভাষা সেট করুন।
const session = await LanguageModel.create({
  expectedInputs: [
    { type: "text", languages: ["en" /* system prompt */, "ja" /* user prompt */] }
  ],
  expectedOutputs: [
    { type: "text", languages: ["ja"] }
  ]
});

মডেল কাজ করে না এমন ইনপুট বা আউটপুটের সম্মুখীন হলে, আপনি "NotSupportedError" DOMException পেতে পারেন।

মাল্টিমোডাল ক্ষমতা

এইসব ক্ষমতার সাহায্যে, আপনি এগুলি করতে পারবেন:

  • চ্যাট অ্যাপ্লিকেশনে পাঠানো অডিও মেসেজ ট্রান্সক্রাইব করার জন্য ব্যবহারকারীদের অনুমতি দিন।
  • ক্যাপশন বা অলটারনেট টেক্সটে ব্যবহার করার জন্য আপনার ওয়েবসাইটে আপলোড করা কোনও ছবির বর্ণনা দিন।

অডিও ইনপুট সহ Prompt API ব্যবহার করার জন্য Mediarecorder Audio Prompt ডেমো এবং ছবি ইনপুট সহ Prompt API ব্যবহার করার জন্য Canvas Image Prompt ডেমো দেখুন।

Prompt API-তে নিম্নলিখিত ইনপুট টাইপ কাজ করে:

এই স্নিপেট একটি মাল্টিমোডাল সেশন দেখায় যা প্রথমে দুটি ভিজ্যুয়াল (একটি ছবি Blob এবং একটি HTMLCanvasElement) প্রসেস করে এবং AI-কে সেগুলি তুলনা করতে দেয় এবং দ্বিতীয়ত ব্যবহারকারীকে একটি অডিও রেকর্ডিং (AudioBuffer হিসেবে) দিয়ে উত্তর দিতে দেয়।

const session = await LanguageModel.create({
  expectedInputs: [
    { type: "text", languages: ["en"] },
    { type: "audio" },
    { type: "image" },
  ],
  expectedOutputs: [{ type: "text", languages: ["en"] }],
});

const referenceImage = await (await fetch("reference-image.jpeg")).blob();
const userDrawnImage = document.querySelector("canvas");

const response1 = await session.prompt([
  {
    role: "user",
    content: [
      {
        type: "text",
        value:
          "Give a helpful artistic critique of how well the second image matches the first:",
      },
      { type: "image", value: referenceImage },
      { type: "image", value: userDrawnImage },
    ],
  },
]);
console.log(response1);

const audioBuffer = await captureMicrophoneInput({ seconds: 10 });

const response2 = await session.prompt([
  {
    role: "user",
    content: [
      { type: "text", value: "My response to your critique:" },
      { type: "audio", value: audioBuffer },
    ],
  },
]);
console.log(response2);

মেসেজ যোগ করুন

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

সেশন তৈরি করার সময় initialPrompts উপযোগী হলেও, সেশন তৈরি করার পরে অতিরিক্ত প্রাসঙ্গিক প্রম্পট দেওয়ার জন্য prompt() বা promptStreaming() পদ্ধতির সাথে append() পদ্ধতি ব্যবহার করা যেতে পারে।

যেমন:

const session = await LanguageModel.create({
  initialPrompts: [
    {
      role: 'system',
      content:
        'You are a skilled analyst who correlates patterns across multiple images.',
    },
  ],
  expectedInputs: [{ type: 'image' }],
});

fileUpload.onchange = async () => {
  await session.append([
    {
      role: 'user',
      content: [
        {
          type: 'text',
          value: `Here's one image. Notes: ${fileNotesInput.value}`,
        },
        { type: 'image', value: fileUpload.files[0] },
      ],
    },
  ]);
};

analyzeButton.onclick = async (e) => {
  analysisResult.textContent = await session.prompt(userQuestionInput.value);
};

প্রম্পট যাচাই, প্রসেস ও সেশনে যোগ করা হয়ে গেলে append()-এর মাধ্যমে রিটার্ন করা প্রমিস পূরণ হয়। প্রম্পট যোগ করা না গেলে প্রমিস বাতিল করা হয়।

JSON স্কিমা পাস করুন

ভ্যালু হিসেবে JSON স্কিমা পাস করতে, prompt() বা promptStreaming() পদ্ধতিতে responseConstraint ফিল্ড যোগ করুন। তারপর আপনি Prompt API-এর সাথে স্ট্রাকচার্ড আউটপুট ব্যবহার করতে পারবেন।

নিম্নলিখিত উদাহরণে, JSON স্কিমা নিশ্চিত করে যে মডেলটি true বা false-এর মাধ্যমে উত্তর দেয় যাতে কোনও মেসেজ মৃৎশিল্প সম্পর্কে কিনা তা শ্রেণীবদ্ধ করা যায়।

const session = await LanguageModel.create();

const schema = {
  "type": "boolean"
};

const post = "Mugs and ramen bowls, both a bit smaller than intended, but that
happens with reclaim. Glaze crawled the first time around, but pretty happy
with it after refiring.";

const result = await session.prompt(
  `Is this post about pottery?\n\n${post}`,
  {
    responseConstraint: schema,
  }
);
console.log(JSON.parse(result));
// true

আপনার ইমপ্লিমেন্টেশনে JSON স্কিমা বা রেগুলার এক্সপ্রেশন অন্তর্ভুক্ত থাকতে পারে, যা মডেলকে পাঠানো মেসেজের অংশ হিসেবে কাজ করে। এটি কিছু কন্টেক্সট উইন্ডো ব্যবহার করে। session.measureContextUsage()-এ responseConstraint বিকল্প পাস করে আপনি পরিমাপ করতে পারবেন যে এটি কতটা কন্টেক্সট উইন্ডো ব্যবহার করবে।

omitResponseConstraintInput বিকল্পের মাধ্যমে আপনি এই আচরণ এড়াতে পারবেন। আপনি যদি তা করেন, তাহলে আমরা সাজেস্ট করি যে আপনি প্রম্পটে কিছু নির্দেশিকা অন্তর্ভুক্ত করুন:

const result = await session.prompt(`
  Summarize this feedback into a rating between 0-5. Only output a JSON
  object { rating }, with a single property whose value is a number:
  The food was delicious, service was excellent, will recommend.
`, { responseConstraint: schema, omitResponseConstraintInput: true });

মডেলকে প্রম্পট করুন

আপনি 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 = await LanguageModel.availability({
  expectedInputs: [{type: 'text', languages: ['en']}],
  expectedOutputs: [{type: 'text', languages: ['en']}],
});

if (available !== 'unavailable') {
  const session = await 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() ফাংশন ব্যবহার করা উচিত যা আপনাকে মডেল থেকে আংশিক ফলাফল আসার সাথে সাথে তা দেখাতে দেয়। promptStreaming() ফাংশন ReadableStream রিটার্ন করে।

const available = await LanguageModel.availability({
  expectedInputs: [{type: 'text', languages: ['en']}],
  expectedOutputs: [{type: 'text', languages: ['en']}],
});
if (available !== 'unavailable') {
  const session = await 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);
  }
}

প্রম্পট করা বন্ধ করুন

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

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

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

সেশন ম্যানেজমেন্ট

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

প্রতিটি সেশনে সর্বাধিক যতগুলি টোকেন প্রসেস করা যায় তার একটি সীমা আছে। এই সীমার দিকে আপনার অগ্রগতি নিম্নলিখিত উপায়ে চেক করুন:

console.log(`${session.contextUsage}/${session.contextWindow}`);

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

সেশনে contextoverflow ইভেন্ট শুনে এই ধরনের ওভারফ্লো শনাক্ত করা যেতে পারে:

session.addEventListener("contextoverflow", () => {
  console.log("We've gone past the context window, and some inputs will be dropped!");
});

নতুন প্রম্পট প্রসেস করার জন্য কথোপকথনের ইতিহাস থেকে পর্যাপ্ত টোকেন সরানো সম্ভব না হলে, prompt() বা promptStreaming() কল QuotaExceededError এক্সেপশন সহ ব্যর্থ হবে এবং কিছুই সরানো হবে না। QuotaExceededError-এর নিম্নলিখিত প্রপার্টি আছে:

  • requested: ইনপুটে কতগুলি টোকেন আছে
  • contextWindow: কতগুলি টোকেন উপলভ্য ছিল

সেশন ম্যানেজমেন্ট সম্পর্কে আরও জানুন।

সেশন ক্লোন করুন

রিসোর্স সংরক্ষণ করতে, আপনি clone() ফাংশন ব্যবহার করে আগে থেকে থাকা সেশন কপি করতে পারবেন। এটি কথোপকথনের একটি ফর্ক তৈরি করে, যেখানে প্রসঙ্গ এবং প্রাথমিক প্রম্পট সংরক্ষিত থাকে।

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

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

const clonedSession = await session.clone({
  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 choosing between a t-shirt
  and a polo."
);

ডেমো

Prompt API-এর বিভিন্ন ব্যবহারিক প্রয়োগ এক্সপ্লোর করার জন্য আমরা একাধিক ডেমো তৈরি করেছি। নিম্নলিখিত ডেমো হল ওয়েব অ্যাপ্লিকেশন:

Chrome এক্সটেনশনে Prompt API পরীক্ষা করতে, ডেমো এক্সটেনশন ইনস্টল করুন। এক্সটেনশন সোর্স কোড GitHub-এ উপলভ্য।

পারফর্ম্যান্স স্ট্র্যাটেজি

ওয়েবের জন্য Prompt API এখনও ডেভেলপ করা হচ্ছে। আমরা এই API তৈরি করার সময়, সেরা পারফর্ম্যান্সের জন্য সেশন ম্যানেজমেন্ট সংক্রান্ত পেশাদার পদ্ধতি দেখুন।

অনুমতি সংক্রান্ত নীতি, iframe ও ওয়েব ওয়ার্কার

ডিফল্ট হিসেবে, Prompt API শুধুমাত্র টপ-লেভেল উইন্ডো এবং সেগুলির একই-অরিজিন iframe-এর জন্য উপলভ্য। অনুমতি সংক্রান্ত নীতি allow="" অ্যাট্রিবিউট ব্যবহার করে API-এর অ্যাক্সেস ক্রস-অরিজিন iframe-এ ডেলিগেট করা যেতে পারে:

<!--
  The hosting site at https://main.example.com can grant a cross-origin iframe
  at https://cross-origin.example.com/ access to the Prompt API by
  setting the `allow="language-model"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="language-model"></iframe>

Prompt API বর্তমানে ওয়েব ওয়ার্কারদের জন্য উপলভ্য নয়, কারণ প্রতিটি ওয়ার্কারের জন্য একটি দায়িত্বশীল ডকুমেন্ট তৈরি করা জটিল, যা অনুমতি নীতির স্ট্যাটাস চেক করার জন্য প্রয়োজন।

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

আপনার ইনপুট সরাসরি এই API এবং সমস্ত বিল্ট-ইন AI API-এর ভবিষ্যৎ ভার্সন তৈরি ও প্রয়োগ করার ক্ষেত্রে প্রভাব ফেলতে পারে।