প্রকাশিত: ২০ মে, ২০২৫, সর্বশেষ হালনাগাদ: ২১ সেপ্টেম্বর, ২০২৫
| ব্যাখ্যাকারী | ওয়েব | এক্সটেনশন | ক্রোম স্ট্যাটাস | উদ্দেশ্য |
|---|---|---|---|---|
| গিটহাব | দেখুন | পরীক্ষা করার অভিপ্রায় |
প্রম্পট এপিআই (Prompt API) ব্যবহার করে আপনি ব্রাউজারে জেমিনি ন্যানো (Gemini Nano) -তে স্বাভাবিক ভাষার অনুরোধ পাঠাতে পারেন।
প্রম্পট এপিআই ব্যবহার করার অনেক উপায় আছে। উদাহরণস্বরূপ, আপনি তৈরি করতে পারেন:
- এআই-চালিত অনুসন্ধান : একটি ওয়েব পেজের বিষয়বস্তুর উপর ভিত্তি করে প্রশ্নের উত্তর দিন।
- ব্যক্তিগতকৃত নিউজ ফিড : এমন একটি ফিড তৈরি করুন যা আর্টিকেলগুলোকে গতিশীলভাবে বিভিন্ন ক্যাটাগরিতে ভাগ করে এবং ব্যবহারকারীদের সেই কন্টেন্ট ফিল্টার করার সুযোগ দেয়।
- কাস্টম কন্টেন্ট ফিল্টার । সংবাদ নিবন্ধ বিশ্লেষণ করুন এবং ব্যবহারকারী-নির্ধারিত বিষয়ের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে বিষয়বস্তু ঝাপসা করুন বা লুকান।
- ক্যালেন্ডার ইভেন্ট তৈরি । একটি ক্রোম এক্সটেনশন তৈরি করুন যা স্বয়ংক্রিয়ভাবে ওয়েব পেজ থেকে ইভেন্টের বিবরণ সংগ্রহ করবে, যাতে ব্যবহারকারীরা মাত্র কয়েকটি ধাপে ক্যালেন্ডারে ইভেন্ট যুক্ত করতে পারেন।
- নির্বিঘ্নে কন্টাক্ট সংগ্রহ । এমন একটি এক্সটেনশন তৈরি করুন যা ওয়েবসাইট থেকে যোগাযোগের তথ্য সংগ্রহ করে, যার ফলে ব্যবহারকারীরা আরও সহজে কোনো ব্যবসার সাথে যোগাযোগ করতে পারেন অথবা তাদের কন্টাক্ট লিস্টে বিস্তারিত তথ্য যোগ করতে পারেন।
এগুলো কয়েকটি সম্ভাবনা মাত্র, এবং আপনি কী তৈরি করেন তা দেখার জন্য আমরা অধীর আগ্রহে অপেক্ষা করছি।
হার্ডওয়্যারের প্রয়োজনীয়তা পর্যালোচনা করুন
ক্রোমে এই এপিআইগুলো ব্যবহার করে ফিচার পরিচালনা করেন এমন ডেভেলপার এবং ব্যবহারকারীদের জন্য নিম্নলিখিত শর্তাবলী প্রযোজ্য। অন্যান্য ব্রাউজারের ক্ষেত্রে পরিচালনার শর্তাবলী ভিন্ন হতে পারে।
ল্যাঙ্গুয়েজ ডিটেক্টর এবং ট্রান্সলেটর এপিআইগুলো ডেস্কটপের ক্রোমে কাজ করে। এই এপিআইগুলো মোবাইল ডিভাইসে কাজ করে না।
নিম্নলিখিত শর্তগুলো পূরণ হলে Prompt API , Summarizer API , Writer API , Rewriter API , এবং Proofreader API ক্রোমে কাজ করে:
- অপারেটিং সিস্টেম : উইন্ডোজ ১০ বা ১১; ম্যাকওএস ১৩+ (ভেনচুরা এবং তার পরবর্তী সংস্করণ); লিনাক্স; অথবা ক্রোমবুক প্লাস ডিভাইসে ক্রোমওএস (প্ল্যাটফর্ম ১৬৩৮৯.০.০ এবং তার পরবর্তী সংস্করণ)। জেমিনি ন্যানো ব্যবহারকারী এপিআইগুলো দ্বারা নন-ক্রোমবুক প্লাস ডিভাইসের অ্যান্ড্রয়েড, আইওএস এবং ক্রোমওএস-এর জন্য ক্রোম এখনও সমর্থিত নয়।
- স্টোরেজ : আপনার ক্রোম প্রোফাইল ধারণকারী ভলিউমে কমপক্ষে ২২ জিবি খালি জায়গা থাকতে হবে।
- জিপিইউ বা সিপিইউ : বিল্ট-ইন মডেলগুলো জিপিইউ বা সিপিইউ দিয়ে চলতে পারে।
- জিপিইউ : অবশ্যই ৪ জিবির বেশি ভিআরএএম থাকতে হবে।
- সিপিইউ : ১৬ জিবি বা তার বেশি র্যাম এবং ৪টি বা তার বেশি সিপিইউ কোর।
- দ্রষ্টব্য : অডিও ইনপুট সহ প্রম্পট এপিআই ব্যবহার করার জন্য একটি জিপিইউ প্রয়োজন।
- নেটওয়ার্ক : আনলিমিটেড ডেটা অথবা আনমিটারড কানেকশন।
ব্রাউজার মডেল আপডেট করার কারণে জেমিনি ন্যানো-র সঠিক আকার পরিবর্তিত হতে পারে। বর্তমান আকার জানতে, chrome://on-device-internals ওয়েবসাইটে যান।
প্রম্পট এপিআই ব্যবহার করুন
প্রম্পট এপিআই ক্রোমে জেমিনি ন্যানো মডেল ব্যবহার করে। যদিও এপিআইটি ক্রোমের মধ্যেই অন্তর্নির্মিত, কোনো অরিজিন প্রথমবার এপিআইটি ব্যবহার করার সময় মডেলটি আলাদাভাবে ডাউনলোড করা হয়। এই এপিআই ব্যবহার করার আগে, গুগলের জেনারেটিভ এআই নিষিদ্ধ ব্যবহার নীতি স্বীকার করে নিন।
মডেলটি ব্যবহারের জন্য প্রস্তুত কিনা তা নির্ধারণ করতে, 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 হয়, তাহলে ডাউনলোডের অগ্রগতি পর্যবেক্ষণ করুন এবং ব্যবহারকারীকে জানান , কারণ ডাউনলোড হতে সময় লাগতে পারে।
লোকালহোস্টে ব্যবহার করুন
ক্রোমের localhost সমস্ত বিল্ট-ইন এআই এপিআই উপলব্ধ। নিম্নলিখিত ফ্ল্যাগগুলিকে ' এনাবলড' করুন:
-
chrome://flags/#optimization-guide-on-device-model -
chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
এরপর রিলঞ্চ-এ ক্লিক করুন অথবা ক্রোম রিস্টার্ট করুন। যদি কোনো ত্রুটি দেখা দেয়, তাহলে লোকালহোস্ট ট্রাবলশুট করুন ।
মডেল পরামিতি
` params() ` ফাংশনটি আপনাকে ল্যাঙ্গুয়েজ মডেলের প্যারামিটারগুলো সম্পর্কে অবহিত করে। অবজেক্টটিতে নিম্নলিখিত ফিল্ডগুলো রয়েছে:
-
defaultTopK: ডিফল্ট টপ-K মান। -
maxTopK: সর্বোচ্চ শীর্ষ-K মান। -
defaultTemperature: ডিফল্ট তাপমাত্রা । -
maxTemperature: সর্বোচ্চ তাপমাত্রা।
// Only available when using the Prompt API for Chrome Extensions.
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 128, defaultTemperature: 1, maxTemperature: 2}
একটি সেশন তৈরি করুন
প্রম্পট এপিআই চালু হয়ে গেলে, আপনি create() ফাংশন ব্যবহার করে একটি সেশন তৈরি করেন।
const session = await LanguageModel.create();
ক্রোম এক্সটেনশনের জন্য প্রম্পট এপিআই ব্যবহার করে একটি সেশন তৈরি করুন
আপনি যখন ক্রোম এক্সটেনশনের জন্য প্রম্পট এপিআই ব্যবহার করেন, তখন একটি ঐচ্ছিক অপশনস অবজেক্টের মাধ্যমে প্রতিটি সেশনকে topK এবং temperature দিয়ে কাস্টমাইজ করা যায়। এই প্যারামিটারগুলোর ডিফল্ট মান LanguageModel.params() থেকে রিটার্ন করা হয়।
// Only available when using the Prompt API for Chrome Extensions.
const params = await LanguageModel.params();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
// Only available when using the Prompt API for Chrome Extensions.
const slightlyHighTemperatureSession = await LanguageModel.create({
temperature: Math.max(params.defaultTemperature * 1.2, 2.0),
topK: params.defaultTopK,
});
create() ফাংশনের ঐচ্ছিক options অবজেক্টটিতে একটি signal ফিল্ডও থাকে, যা আপনাকে সেশনটি ধ্বংস করার জন্য একটি AbortSignal পাস করার সুযোগ দেয়।
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const session = await LanguageModel.create({
signal: controller.signal,
});
প্রাথমিক প্রম্পটগুলির সাথে প্রাসঙ্গিক তথ্য যোগ করুন
প্রাথমিক প্রম্পটের মাধ্যমে, আপনি ল্যাঙ্গুয়েজ মডেলকে পূর্ববর্তী ইন্টারঅ্যাকশন সম্পর্কিত প্রাসঙ্গিক তথ্য সরবরাহ করতে পারেন, যেমন—ব্রাউজার রিস্টার্টের পর ব্যবহারকারীকে একটি সংরক্ষিত সেশন পুনরায় শুরু করার সুযোগ দেওয়া।
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 প্রতিক্রিয়া বার্তার একটি অংশ আগে থেকেই পূরণ করে রাখতে চাইতে পারেন। এটি ল্যাঙ্গুয়েজ মডেলকে একটি নির্দিষ্ট প্রতিক্রিয়া ফরম্যাট ব্যবহার করার জন্য নির্দেশ দিতে সহায়ক হতে পারে। এটি করার জন্য, বার্তার শেষে থাকা "assistant" -role বার্তার সাথে prefix: true যোগ করুন। উদাহরণস্বরূপ:
const characterSheet = await session.prompt([
{
role: 'user',
content: 'Create a TOML character sheet for a gnome barbarian',
},
{
role: 'assistant',
content: '```toml\n',
prefix: true,
},
]);
প্রত্যাশিত ইনপুট এবং আউটপুট যোগ করুন
প্রম্পট এপিআই-এর মাল্টিমোডাল সক্ষমতা এবং একাধিক ভাষা সমর্থন রয়েছে। আপনার সেশন তৈরি করার সময় expectedInputs ও expectedOutputs মোডালিটি এবং ভাষা নির্ধারণ করুন।
-
type: প্রত্যাশিত পদ্ধতি।-
expectedInputsএর ক্ষেত্রে, এটিtext,imageবাaudioহতে পারে। -
expectedOutputsএর ক্ষেত্রে, Prompt API শুধুমাত্রtextগ্রহণ করে।
-
-
languages: প্রত্যাশিত ভাষা বা ভাষাগুলো নির্ধারণ করার জন্য অ্যারে। প্রম্পট এপিআই"en","ja", এবং"es"গ্রহণ করে। অতিরিক্ত ভাষার জন্য সমর্থন তৈরির কাজ চলছে।-
expectedInputsএর জন্য, সিস্টেম প্রম্পট ভাষা এবং এক বা একাধিক প্রত্যাশিত ব্যবহারকারী প্রম্পট ভাষা সেট করুন। - এক বা একাধিক
expectedOutputsভাষা নির্ধারণ করুন।
-
const session = await LanguageModel.create({
expectedInputs: [
{ type: "text", languages: ["en" /* system prompt */, "ja" /* user prompt */] }
],
expectedOutputs: [
{ type: "text", languages: ["ja"] }
]
});
মডেলটি কোনো অসমর্থিত ইনপুট বা আউটপুটের সম্মুখীন হলে আপনি একটি "NotSupportedError" DOMException পেতে পারেন।
বহুমুখী সক্ষমতা
এই সক্ষমতাগুলো দিয়ে আপনি যা করতে পারেন:
- চ্যাট অ্যাপ্লিকেশনে পাঠানো অডিও বার্তাগুলো প্রতিলিপি করার জন্য ব্যবহারকারীদের অনুমতি দিন।
- আপনার ওয়েবসাইটে আপলোড করা একটি ছবির ক্যাপশন বা অল্ট টেক্সট হিসেবে ব্যবহারের জন্য সেটির বর্ণনা দিন।
অডিও ইনপুটের সাথে প্রম্পট এপিআই ব্যবহার করার জন্য মিডিয়ারেকর্ডার অডিও প্রম্পট ডেমোটি এবং ইমেজ ইনপুটের সাথে প্রম্পট এপিআই ব্যবহার করার জন্য ক্যানভাস ইমেজ প্রম্পট ডেমোটি দেখুন।
প্রম্পট এপিআই নিম্নলিখিত ইনপুট প্রকারগুলি সমর্থন করে:
- অডিও:
- দৃশ্যমান:
-
HTMLImageElement -
SVGImageElement -
HTMLVideoElement(বর্তমান ভিডিও পজিশনে থাকা ভিডিও ফ্রেমটি ব্যবহার করে) -
HTMLCanvasElement -
ImageBitmap -
OffscreenCanvas -
VideoFrame -
Blob -
ImageData
-
এই কোড স্নিপেটটি একটি মাল্টিমোডাল সেশন দেখায়, যা প্রথমে দুটি ভিজ্যুয়াল (একটি ইমেজ Blob এবং একটি HTMLCanvasElement ) প্রসেস করে এবং এআই-কে দিয়ে সেগুলোর তুলনা করায়, এবং দ্বিতীয়ত, ব্যবহারকারীকে একটি অডিও রেকর্ডিং ( 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 Schema পাস করার জন্য 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() ফাংশনটি একটি ঐচ্ছিক options অবজেক্ট গ্রহণ করে, যাতে একটি signal ফিল্ড থাকে। এই 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."
);
ডেমো
প্রম্পট এপিআই-এর বিভিন্ন ব্যবহার অন্বেষণ করার জন্য আমরা একাধিক ডেমো তৈরি করেছি। নিম্নলিখিত ডেমোগুলো হলো ওয়েব অ্যাপ্লিকেশন:
ক্রোম এক্সটেনশনে প্রম্পট এপিআই পরীক্ষা করার জন্য, ডেমো এক্সটেনশনটি ইনস্টল করুন। এক্সটেনশনটির সোর্স কোড গিটহাবে পাওয়া যাবে।
কর্মক্ষমতা কৌশল
ওয়েবের জন্য প্রম্পট এপিআই এখনও নির্মাণাধীন। এই এপিআইটি তৈরি করার সময়, সর্বোত্তম পারফরম্যান্সের জন্য সেশন ম্যানেজমেন্ট বিষয়ে আমাদের সেরা অনুশীলনগুলো অনুসরণ করুন।
অনুমতি নীতি, আইফ্রেম এবং ওয়েব ওয়ার্কার
ডিফল্টরূপে, প্রম্পট এপিআই শুধুমাত্র টপ-লেভেল উইন্ডো এবং তাদের সেম-অরিজিন আইফ্রেমগুলির জন্য উপলব্ধ থাকে। পারমিশন পলিসি allow="" অ্যাট্রিবিউট ব্যবহার করে ক্রস-অরিজিন আইফ্রেমগুলিতে এপিআই-এর অ্যাক্সেস অর্পণ করা যেতে পারে:
<!--
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>
পারমিশন পলিসির স্ট্যাটাস চেক করার জন্য প্রতিটি ওয়ার্কারের জন্য একটি দায়িত্বশীল ডকুমেন্ট তৈরি করার জটিলতার কারণে, আপাতত ওয়েব ওয়ার্কারগুলিতে প্রম্পট এপিআই উপলব্ধ নয়।
অংশগ্রহণ করুন এবং মতামত জানান।
আপনার মতামত এই এপিআই এবং সমস্ত অন্তর্নির্মিত এআই এপিআই -এর ভবিষ্যৎ সংস্করণগুলো আমরা কীভাবে তৈরি ও বাস্তবায়ন করব, তার উপর সরাসরি প্রভাব ফেলতে পারে।
- ক্রোমের বাস্তবায়ন সম্পর্কে মতামত জানাতে, একটি বাগ রিপোর্ট অথবা একটি ফিচার রিকোয়েস্ট জমা দিন।
- প্রম্পট এপিআই গিটহাব রিপোজিটরিতে বিদ্যমান কোনো ইস্যুতে মন্তব্য করে অথবা একটি নতুন ইস্যু খুলে এপিআই-এর গঠন সম্পর্কে আপনার মতামত জানান।
- আর্লি প্রিভিউ প্রোগ্রামে যোগদান করুন ।