প্রকাশিত: 20 মে, 2025, শেষ আপডেট: সেপ্টেম্বর 21, 2025
ব্যাখ্যাকারী | ওয়েব | এক্সটেনশন | ক্রোম স্ট্যাটাস | অভিপ্রায় |
---|---|---|---|---|
গিটহাব | দেখুন | পরীক্ষা করার অভিপ্রায় |
প্রম্পট API-এর সাহায্যে, আপনি ব্রাউজারে জেমিনি ন্যানোকে প্রাকৃতিক ভাষার অনুরোধ পাঠাতে পারেন।
আপনি প্রম্পট API ব্যবহার করতে পারেন অনেক উপায় আছে. উদাহরণস্বরূপ, আপনি নির্মাণ করতে পারেন:
- এআই-চালিত অনুসন্ধান : একটি ওয়েব পৃষ্ঠার বিষয়বস্তুর উপর ভিত্তি করে প্রশ্নের উত্তর দিন।
- ব্যক্তিগতকৃত সংবাদ ফিড : একটি ফিড তৈরি করুন যা গতিশীলভাবে নিবন্ধগুলিকে বিভাগগুলির সাথে শ্রেণীবদ্ধ করে এবং ব্যবহারকারীদের সেই বিষয়বস্তুর জন্য ফিল্টার করার অনুমতি দেয়৷
- কাস্টম কন্টেন্ট ফিল্টার । সংবাদ নিবন্ধগুলি বিশ্লেষণ করুন এবং ব্যবহারকারী-সংজ্ঞায়িত বিষয়গুলির উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে বিষয়বস্তু অস্পষ্ট বা লুকান৷
- ক্যালেন্ডার ইভেন্ট তৈরি । একটি Chrome এক্সটেনশন বিকাশ করুন যা ওয়েব পৃষ্ঠাগুলি থেকে স্বয়ংক্রিয়ভাবে ইভেন্টের বিবরণ বের করে, যাতে ব্যবহারকারীরা কয়েক ধাপে ক্যালেন্ডার এন্ট্রি তৈরি করতে পারে৷
- বিজোড় যোগাযোগ নিষ্কাশন . একটি এক্সটেনশন তৈরি করুন যা ওয়েবসাইটগুলি থেকে যোগাযোগের তথ্য বের করে, ব্যবহারকারীদের জন্য একটি ব্যবসার সাথে যোগাযোগ করা বা তাদের পরিচিতির তালিকায় বিশদ যোগ করা সহজ করে তোলে।
এগুলি মাত্র কয়েকটি সম্ভাবনা, এবং আপনি যা তৈরি করেন তা দেখে আমরা উত্তেজিত।
হার্ডওয়্যার প্রয়োজনীয়তা পর্যালোচনা করুন
নিম্নলিখিত প্রয়োজনীয়তাগুলি বিকাশকারী এবং ব্যবহারকারীদের জন্য বিদ্যমান যারা Chrome-এ এই APIগুলি ব্যবহার করে বৈশিষ্ট্যগুলি পরিচালনা করে৷ অন্যান্য ব্রাউজারগুলির বিভিন্ন অপারেটিং প্রয়োজনীয়তা থাকতে পারে।
ল্যাঙ্গুয়েজ ডিটেক্টর এবং ট্রান্সলেটর এপিআই ডেস্কটপে Chrome-এ কাজ করে। এই APIগুলি মোবাইল ডিভাইসে কাজ করে না। প্রম্পট এপিআই, সামারাইজার এপিআই, রাইটার এপিআই, রিরাইটার এপিআই, এবং প্রুফরিডার এপিআই Chrome-এ কাজ করে যখন নিম্নলিখিত শর্তগুলি পূরণ হয়:
- অপারেটিং সিস্টেম : উইন্ডোজ 10 বা 11; macOS 13+ (ভেন্টুরা এবং তার পরে); লিনাক্স; অথবা ChromeOS (প্ল্যাটফর্ম 16389.0.0 এবং পরবর্তীতে) Chromebook Plus ডিভাইসে। অ-Chromebook প্লাস ডিভাইসে Android, iOS এবং ChromeOS-এর জন্য Chrome এখনও জেমিনি ন্যানো ব্যবহার করে এমন API দ্বারা সমর্থিত নয়৷
- সঞ্চয়স্থান : আপনার Chrome প্রোফাইলে থাকা ভলিউমে কমপক্ষে 22 GB খালি স্থান।
- GPU : কঠোরভাবে 4 GB এর বেশি VRAM।
- নেটওয়ার্ক : সীমাহীন ডেটা বা একটি আনমিটার সংযোগ।
ব্রাউজার মডেল আপডেট করার সাথে সাথে জেমিনি ন্যানো এর সঠিক আকার পরিবর্তিত হতে পারে। বর্তমান আকার নির্ধারণ করতে, chrome://on-device-internals
যান৷
প্রম্পট API ব্যবহার করুন
প্রম্পট API Chrome-এ Gemini Nano মডেল ব্যবহার করে। যখন এপিআই ক্রোমে বিল্ট করা হয়, তখন প্রথমবার কোনো অরিজিন API ব্যবহার করলে মডেলটি আলাদাভাবে ডাউনলোড করা হয়। আপনি এই API ব্যবহার করার আগে, Google এর জেনারেটিভ AI নিষিদ্ধ ব্যবহারের নীতি স্বীকার করুন৷
মডেলটি ব্যবহারের জন্য প্রস্তুত কিনা তা নির্ধারণ করতে, LanguageModel.availability()
কল করুন।
const availability = await LanguageModel.availability();
মডেলটি ডাউনলোড করার আগে, একটি ব্যবহারকারীর মিথস্ক্রিয়া থাকতে হবে, যেমন একটি ক্লিক, আলতো চাপুন বা কী প্রেস করুন৷
যদি প্রতিক্রিয়াটি downloadable
বা downloading
হয় তবে মডেল এবং APIগুলি উপলব্ধ তবে বৈশিষ্ট্যগুলি ব্যবহার করার আগে অবশ্যই ডাউনলোড করতে হবে৷ ডাউনলোডের অনুমতি দেওয়ার জন্য ব্যবহারকারীকে অবশ্যই পৃষ্ঠাটির সাথে ইন্টারঅ্যাক্ট করতে হবে (যেমন একটি ক্লিক, ট্যাপ বা কী প্রেস)।
মডেলটি ডাউনলোড এবং ইনস্ট্যান্ট করতে, create()
ফাংশনটি কল করুন।
const session = await LanguageModel.create({
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
যদি availability()
এর প্রতিক্রিয়া downloading
হয়, তাহলে ডাউনলোডের অগ্রগতি শুনুন এবং ব্যবহারকারীকে জানান, কারণ ডাউনলোডে সময় লাগতে পারে।
মডেল পরামিতি
params()
ফাংশন আপনাকে ভাষা মডেলের পরামিতি সম্পর্কে অবহিত করে। বস্তুটির নিম্নলিখিত ক্ষেত্র রয়েছে:
-
defaultTopK
: ডিফল্ট টপ-কে মান। -
maxTopK
: সর্বোচ্চ টপ-কে মান। -
defaultTemperature
: ডিফল্ট তাপমাত্রা । -
maxTemperature
: সর্বোচ্চ তাপমাত্রা।
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 128, defaultTemperature: 1, maxTemperature: 2}
একটি অধিবেশন তৈরি করুন
একবার প্রম্পট API রান করতে পারলে, আপনি create()
ফাংশন দিয়ে একটি সেশন তৈরি করুন।
প্রতিটি সেশন একটি ঐচ্ছিক বিকল্প বস্তু ব্যবহার করে topK
এবং temperature
সাথে কাস্টমাইজ করা যেতে পারে। এই প্যারামিটারগুলির জন্য ডিফল্ট মানগুলি LanguageModel.params()
থেকে ফেরত দেওয়া হয়।
const params = await LanguageModel.params();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
temperature: Math.max(params.defaultTemperature * 1.2, 2.0),
topK: params.defaultTopK,
});
create()
ফাংশনের ঐচ্ছিক অপশন অবজেক্টটিও একটি 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"
- ভূমিকা প্রতিক্রিয়া বার্তার অংশটি আগে থেকে পূরণ করতে চাইতে পারেন৷ এটি একটি নির্দিষ্ট প্রতিক্রিয়া বিন্যাস ব্যবহার করার জন্য ভাষা মডেলকে গাইড করতে সহায়ক হতে পারে। এটি করার জন্য, 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,
},
]);
প্রত্যাশিত ইনপুট এবং আউটপুট যোগ করুন
প্রম্পট API-এর মাল্টিমোডাল ক্ষমতা রয়েছে এবং একাধিক ভাষা সমর্থন করে। আপনার সেশন তৈরি করার সময় expectedInputs
এবং expectedOutputs
পদ্ধতি এবং ভাষা সেট করুন।
-
type
: মডেলটি প্রত্যাশিত।-
expectedInputs
জন্য, এটিtext
,image
বাaudio
হতে পারে। -
expectedOutputs
জন্য, প্রম্পট API শুধুমাত্রtext
অনুমতি দেয়।
-
-
languages
: প্রত্যাশিত ভাষা বা ভাষা সেট করতে অ্যারে। প্রম্পট API"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"
DOM ব্যতিক্রম পেতে পারেন যদি মডেলটি একটি অসমর্থিত ইনপুট বা আউটপুটের সম্মুখীন হয়।
মাল্টিমোডাল ক্ষমতা
এই ক্ষমতাগুলির সাথে, আপনি করতে পারেন:
- ব্যবহারকারীদের একটি চ্যাট অ্যাপ্লিকেশনে পাঠানো অডিও বার্তা প্রতিলিপি করার অনুমতি দিন।
- একটি ক্যাপশন বা বিকল্প পাঠ্যে ব্যবহারের জন্য আপনার ওয়েবসাইটে আপলোড করা একটি চিত্র বর্ণনা করুন৷
অডিও ইনপুট সহ প্রম্পট API ব্যবহার করার জন্য Mediarecorder অডিও প্রম্পট ডেমো এবং চিত্র ইনপুট সহ প্রম্পট API ব্যবহার করার জন্য ক্যানভাস চিত্র প্রম্পট ডেমো দেখুন।
বার্তা যোগ করুন
অনুমানে কিছু সময় লাগতে পারে, বিশেষ করে যখন মাল্টিমোডাল ইনপুটগুলির সাথে প্রম্পট করা হয়। সেশনটি পপুলেট করার জন্য পূর্বনির্ধারিত প্রম্পটগুলি পাঠানোর জন্য এটি কার্যকর হতে পারে, যাতে মডেলটি প্রক্রিয়াকরণের শুরু করতে পারে।
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
ক্ষেত্র যোগ করুন। তারপর আপনি প্রম্পট 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.measureInputUsage()
এ 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 { defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
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 { defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
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.inputUsage}/${session.inputQuota}`);
সেশন ম্যানেজমেন্ট সম্পর্কে আরও জানুন।
একটি সেশন ক্লোন করুন
সম্পদ সংরক্ষণ করতে, আপনি 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."
);
ডেমো
প্রম্পট API-এর জন্য অনেকগুলি ব্যবহারের ক্ষেত্রে অন্বেষণ করতে আমরা একাধিক ডেমো তৈরি করেছি। নিম্নলিখিত ডেমো হল ওয়েব অ্যাপ্লিকেশন:
ক্রোম এক্সটেনশনে প্রম্পট API পরীক্ষা করতে, ডেমো এক্সটেনশন ইনস্টল করুন। এক্সটেনশন সোর্স কোড GitHub এ উপলব্ধ।
কর্মক্ষমতা কৌশল
ওয়েবের জন্য প্রম্পট API এখনও তৈরি করা হচ্ছে। আমরা এই API তৈরি করার সময়, সর্বোত্তম কর্মক্ষমতার জন্য সেশন পরিচালনার উপর আমাদের সেরা অনুশীলনগুলি দেখুন।
অনুমতি নীতি, iframes, এবং ওয়েব কর্মী
ডিফল্টরূপে, প্রম্পট API শুধুমাত্র শীর্ষ-স্তরের উইন্ডোতে এবং তাদের একই-অরিজিন আইফ্রেমে উপলব্ধ। পারমিশন পলিসি 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>
অনুমতি নীতির স্থিতি পরীক্ষা করার জন্য প্রতিটি কর্মীর জন্য একটি দায়িত্বশীল নথি প্রতিষ্ঠার জটিলতার কারণে প্রম্পট API এখন ওয়েব ওয়ার্কার-এ উপলব্ধ নেই৷
অংশগ্রহণ করুন এবং মতামত শেয়ার করুন
আপনার ইনপুট সরাসরি প্রভাবিত করতে পারে কিভাবে আমরা এই API এবং সমস্ত অন্তর্নির্মিত AI API এর ভবিষ্যত সংস্করণগুলি তৈরি এবং প্রয়োগ করি৷
- Chrome এর বাস্তবায়ন সম্পর্কে প্রতিক্রিয়ার জন্য, একটি বাগ রিপোর্ট বা একটি বৈশিষ্ট্য অনুরোধ ফাইল করুন৷
- একটি বিদ্যমান ইস্যুতে মন্তব্য করে বা প্রম্পট API GitHub সংগ্রহস্থলে একটি নতুন খোলার মাধ্যমে API আকারে আপনার প্রতিক্রিয়া শেয়ার করুন।
- প্রারম্ভিক প্রিভিউ প্রোগ্রামে যোগ দিন ।