প্রকাশিত: 11 নভেম্বর, 2024, সর্বশেষ আপডেট: মে 20, 2025
ব্যাখ্যাকারী | ওয়েব | এক্সটেনশন | ক্রোম স্ট্যাটাস | অভিপ্রায় |
---|---|---|---|---|
গিটহাব | দেখুন | পরীক্ষা করার অভিপ্রায় |
প্রম্পট API-এর সাহায্যে, আপনি ব্রাউজারে জেমিনি ন্যানোকে প্রাকৃতিক ভাষার অনুরোধ পাঠাতে পারেন।
আপনি Chrome এক্সটেনশনে প্রম্পট API ব্যবহার করতে পারেন এমন অনেক উপায় আছে। যেমন:
- তাত্ক্ষণিক ক্যালেন্ডার ইভেন্ট । একটি Chrome এক্সটেনশন বিকাশ করুন যা ওয়েব পৃষ্ঠাগুলি থেকে স্বয়ংক্রিয়ভাবে ইভেন্টের বিবরণ বের করে, যাতে ব্যবহারকারীরা কয়েক ধাপে ক্যালেন্ডার এন্ট্রি তৈরি করতে পারে৷
- বিজোড় যোগাযোগ নিষ্কাশন . একটি এক্সটেনশন তৈরি করুন যা ওয়েবসাইটগুলি থেকে যোগাযোগের তথ্য বের করে, ব্যবহারকারীদের জন্য একটি ব্যবসার সাথে যোগাযোগ করা বা তাদের পরিচিতির তালিকায় বিশদ যোগ করা সহজ করে তোলে।
- ডায়নামিক কন্টেন্ট ফিল্টারিং । একটি Chrome এক্সটেনশন তৈরি করুন যা সংবাদ নিবন্ধ বিশ্লেষণ করে এবং স্বয়ংক্রিয়ভাবে ব্যবহারকারী-সংজ্ঞায়িত বিষয়ের উপর ভিত্তি করে বিষয়বস্তু অস্পষ্ট বা লুকিয়ে রাখে।
এগুলি মাত্র কয়েকটি সম্ভাবনা, কিন্তু আপনি যা তৈরি করেন তা দেখে আমরা উত্তেজিত।
এক্সটেনশনে প্রম্পট API ব্যবহার করুন
LanguageModel
নামস্থানে আপনার জন্য দুটি এক্সটেনশন ফাংশন উপলব্ধ রয়েছে:
-
availability()
মডেলটি কী সক্ষম এবং এটি উপলব্ধ কিনা তা পরীক্ষা করতে। -
create()
একটি ভাষা মডেল সেশন শুরু করতে।
মডেল ডাউনলোড
প্রম্পট API Chrome-এ Gemini Nano মডেল ব্যবহার করে। যখন API Chrome-এ বিল্ট করা হয়, তখন প্রথমবার যখন কোনো এক্সটেনশন API ব্যবহার করে তখন মডেলটি আলাদাভাবে ডাউনলোড করা হয়।
মডেলটি ব্যবহারের জন্য প্রস্তুত কিনা তা নির্ধারণ করতে, অ্যাসিঙ্ক্রোনাস LanguageModel.availability()
ফাংশনটি কল করুন। এটি নিম্নলিখিত প্রতিক্রিয়াগুলির মধ্যে একটি ফিরিয়ে দেওয়া উচিত:
-
'no'
: ব্রাউজারটি প্রম্পট API সমর্থন করে, কিন্তু এই মুহূর্তে এটি ব্যবহার করা যাবে না। এটি বেশ কয়েকটি কারণে হতে পারে, যেমন মডেলটি ডাউনলোড করার জন্য উপলব্ধ ডিস্কের অপর্যাপ্ত স্থান। -
'readily'
: ব্রাউজারটি প্রম্পট API সমর্থন করে এবং এটি এখনই ব্যবহার করা যেতে পারে। -
'after-download'
: ব্রাউজারটি প্রম্পট এপিআই সমর্থন করে, তবে প্রথমে মডেলটি ডাউনলোড করতে হবে।
মডেল ডাউনলোড ট্রিগার করতে এবং ভাষা মডেল সেশন তৈরি করতে, অ্যাসিঙ্ক্রোনাস LanguageModel.availability()
ফাংশনটি কল করুন। যদি availability()
এর প্রতিক্রিয়া 'after-download'
হয়, তাহলে ডাউনলোডের অগ্রগতি শোনার জন্য এটি সর্বোত্তম অনুশীলন। এইভাবে, ডাউনলোডে সময় লাগলে আপনি ব্যবহারকারীকে জানাতে পারেন।
const session = await LanguageModel.create({
monitor(m) {
m.addEventListener("downloadprogress", (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
},
});
মডেল ক্ষমতা
availability()
ফাংশন আপনাকে ভাষা মডেলের ক্ষমতা সম্পর্কেও জানায়। available
ছাড়াও, বস্তুর নিম্নলিখিত ক্ষেত্রগুলিও রয়েছে:
-
defaultTopK
: ডিফল্ট টপ-কে মান (ডিফল্ট:3
)। -
maxTopK
: সর্বোচ্চ টপ-কে মান (8
)। -
defaultTemperature
: ডিফল্ট তাপমাত্রা (1.0
)। তাপমাত্রার মান অবশ্যই0.0
এবং2.0
মধ্যে হতে হবে।
await LanguageModel.availability();
// {available: 'readily', defaultTopK: 3, maxTopK: 8, defaultTemperature: 1}
একটি অধিবেশন তৈরি করুন
একবার প্রম্পট API রান করতে পারলে, আপনি create()
ফাংশন দিয়ে একটি সেশন তৈরি করুন। আপনি prompt()
বা promptStreaming()
ফাংশনগুলির সাথে মডেলটিকে প্রম্পট করতে পারেন।
আপনার সেশন কাস্টমাইজ করুন
প্রতিটি সেশন একটি ঐচ্ছিক বিকল্প বস্তু ব্যবহার করে topK
এবং temperature
সাথে কাস্টমাইজ করা যেতে পারে। এই প্যারামিটারগুলির জন্য ডিফল্ট মানগুলি LanguageModel.availability()
থেকে ফেরত দেওয়া হয়।
const capabilities = await LanguageModel.availability();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
temperature: Math.max(availability.defaultTemperature * 1.2, 2.0),
topK: capabilities.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. [...]' }
]
});
সেশনের সীমা
একটি প্রদত্ত ভাষা মডেল সেশন এটি প্রক্রিয়া করতে পারে সর্বাধিক সংখ্যক টোকেন আছে। আপনি সেশন অবজেক্টে নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে সেই সীমার দিকে ব্যবহার এবং অগ্রগতি পরীক্ষা করতে পারেন:
console.log(`${session.tokensSoFar}/${session.maxTokens}
(${session.tokensLeft} left)`);
অধিবেশন অধ্যবসায়
প্রতিটি সেশন কথোপকথনের প্রেক্ষাপট ট্র্যাক রাখে। সেশনের প্রসঙ্গ উইন্ডোটি পূর্ণ না হওয়া পর্যন্ত পূর্ববর্তী মিথস্ক্রিয়াগুলি ভবিষ্যতের মিথস্ক্রিয়াগুলির জন্য বিবেচনা করা হয়।
const session = await LanguageModel.create({
initialPrompts: [{
role: "system",
content: "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 LanguageModel.availability();
if (available !== 'no') {
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()
ফাংশন ব্যবহার করা উচিত যা আপনাকে মডেল থেকে আসা আংশিক ফলাফলগুলি দেখাতে দেয়।
const {available, defaultTemperature, defaultTopK, maxTopK } =
await LanguageModel.availability();
if (available !== 'no') {
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);
}
}
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 এর ভবিষ্যত সংস্করণগুলি তৈরি এবং প্রয়োগ করি এবং সমস্ত অন্তর্নির্মিত AI API গুলি।
- Chrome এর বাস্তবায়ন সম্পর্কে প্রতিক্রিয়ার জন্য, একটি বাগ রিপোর্ট বা একটি বৈশিষ্ট্য অনুরোধ ফাইল করুন৷
- একটি বিদ্যমান ইস্যুতে মন্তব্য করে বা প্রম্পট API GitHub সংগ্রহস্থলে একটি নতুন খোলার মাধ্যমে API আকারে আপনার প্রতিক্রিয়া শেয়ার করুন।
- GitHub এ প্রম্পট API নমুনা এক্সটেনশন ডাউনলোড করুন।
- ওয়েব ইনকিউবেটর কমিউনিটি গ্রুপে যোগদানের মাধ্যমে মানক প্রচেষ্টায় অংশগ্রহণ করুন।
প্রকাশিত: 11 নভেম্বর, 2024, সর্বশেষ আপডেট: মে 20, 2025
ব্যাখ্যাকারী | ওয়েব | এক্সটেনশন | ক্রোম স্ট্যাটাস | অভিপ্রায় |
---|---|---|---|---|
গিটহাব | দেখুন | পরীক্ষা করার অভিপ্রায় |
প্রম্পট API-এর সাহায্যে, আপনি ব্রাউজারে জেমিনি ন্যানোকে প্রাকৃতিক ভাষার অনুরোধ পাঠাতে পারেন।
আপনি Chrome এক্সটেনশনে প্রম্পট API ব্যবহার করতে পারেন এমন অনেক উপায় আছে। যেমন:
- তাত্ক্ষণিক ক্যালেন্ডার ইভেন্ট । একটি Chrome এক্সটেনশন বিকাশ করুন যা ওয়েব পৃষ্ঠাগুলি থেকে স্বয়ংক্রিয়ভাবে ইভেন্টের বিবরণ বের করে, যাতে ব্যবহারকারীরা কয়েক ধাপে ক্যালেন্ডার এন্ট্রি তৈরি করতে পারে৷
- বিজোড় যোগাযোগ নিষ্কাশন . একটি এক্সটেনশন তৈরি করুন যা ওয়েবসাইটগুলি থেকে যোগাযোগের তথ্য বের করে, ব্যবহারকারীদের জন্য একটি ব্যবসার সাথে যোগাযোগ করা বা তাদের পরিচিতির তালিকায় বিশদ যোগ করা সহজ করে তোলে।
- ডায়নামিক কন্টেন্ট ফিল্টারিং । একটি Chrome এক্সটেনশন তৈরি করুন যা সংবাদ নিবন্ধ বিশ্লেষণ করে এবং স্বয়ংক্রিয়ভাবে ব্যবহারকারী-সংজ্ঞায়িত বিষয়ের উপর ভিত্তি করে বিষয়বস্তু অস্পষ্ট বা লুকিয়ে রাখে।
এগুলি মাত্র কয়েকটি সম্ভাবনা, কিন্তু আপনি যা তৈরি করেন তা দেখে আমরা উত্তেজিত।
এক্সটেনশনে প্রম্পট API ব্যবহার করুন
LanguageModel
নামস্থানে আপনার জন্য দুটি এক্সটেনশন ফাংশন উপলব্ধ রয়েছে:
-
availability()
মডেলটি কী সক্ষম এবং এটি উপলব্ধ কিনা তা পরীক্ষা করতে। -
create()
একটি ভাষা মডেল সেশন শুরু করতে।
মডেল ডাউনলোড
প্রম্পট API Chrome-এ Gemini Nano মডেল ব্যবহার করে। যখন API Chrome-এ বিল্ট করা হয়, তখন প্রথমবার যখন কোনো এক্সটেনশন API ব্যবহার করে তখন মডেলটি আলাদাভাবে ডাউনলোড করা হয়।
মডেলটি ব্যবহারের জন্য প্রস্তুত কিনা তা নির্ধারণ করতে, অ্যাসিঙ্ক্রোনাস LanguageModel.availability()
ফাংশনটি কল করুন। এটি নিম্নলিখিত প্রতিক্রিয়াগুলির মধ্যে একটি ফিরিয়ে দেওয়া উচিত:
-
'no'
: ব্রাউজারটি প্রম্পট API সমর্থন করে, কিন্তু এই মুহূর্তে এটি ব্যবহার করা যাবে না। এটি বেশ কয়েকটি কারণে হতে পারে, যেমন মডেলটি ডাউনলোড করার জন্য উপলব্ধ ডিস্কের অপর্যাপ্ত স্থান। -
'readily'
: ব্রাউজারটি প্রম্পট API সমর্থন করে এবং এটি এখনই ব্যবহার করা যেতে পারে। -
'after-download'
: ব্রাউজারটি প্রম্পট এপিআই সমর্থন করে, তবে প্রথমে মডেলটি ডাউনলোড করতে হবে।
মডেল ডাউনলোড ট্রিগার করতে এবং ভাষা মডেল সেশন তৈরি করতে, অ্যাসিঙ্ক্রোনাস LanguageModel.availability()
ফাংশনটি কল করুন। যদি availability()
এর প্রতিক্রিয়া 'after-download'
হয়, তাহলে ডাউনলোডের অগ্রগতি শোনার জন্য এটি সর্বোত্তম অনুশীলন। এইভাবে, ডাউনলোডে সময় লাগলে আপনি ব্যবহারকারীকে জানাতে পারেন।
const session = await LanguageModel.create({
monitor(m) {
m.addEventListener("downloadprogress", (e) => {
console.log(`Downloaded ${e.loaded} of ${e.total} bytes.`);
});
},
});
মডেল ক্ষমতা
availability()
ফাংশন আপনাকে ভাষা মডেলের ক্ষমতা সম্পর্কেও জানায়। available
ছাড়াও, বস্তুর নিম্নলিখিত ক্ষেত্রগুলিও রয়েছে:
-
defaultTopK
: ডিফল্ট টপ-কে মান (ডিফল্ট:3
)। -
maxTopK
: সর্বোচ্চ টপ-কে মান (8
)। -
defaultTemperature
: ডিফল্ট তাপমাত্রা (1.0
)। তাপমাত্রার মান অবশ্যই0.0
এবং2.0
মধ্যে হতে হবে।
await LanguageModel.availability();
// {available: 'readily', defaultTopK: 3, maxTopK: 8, defaultTemperature: 1}
একটি অধিবেশন তৈরি করুন
একবার প্রম্পট API রান করতে পারলে, আপনি create()
ফাংশন দিয়ে একটি সেশন তৈরি করুন। আপনি prompt()
বা promptStreaming()
ফাংশনগুলির সাথে মডেলটিকে প্রম্পট করতে পারেন।
আপনার সেশন কাস্টমাইজ করুন
প্রতিটি সেশন একটি ঐচ্ছিক বিকল্প বস্তু ব্যবহার করে topK
এবং temperature
সাথে কাস্টমাইজ করা যেতে পারে। এই প্যারামিটারগুলির জন্য ডিফল্ট মানগুলি LanguageModel.availability()
থেকে ফেরত দেওয়া হয়।
const capabilities = await LanguageModel.availability();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
temperature: Math.max(availability.defaultTemperature * 1.2, 2.0),
topK: capabilities.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. [...]' }
]
});
সেশনের সীমা
একটি প্রদত্ত ভাষা মডেল সেশন এটি প্রক্রিয়া করতে পারে সর্বাধিক সংখ্যক টোকেন আছে। আপনি সেশন অবজেক্টে নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে সেই সীমার দিকে ব্যবহার এবং অগ্রগতি পরীক্ষা করতে পারেন:
console.log(`${session.tokensSoFar}/${session.maxTokens}
(${session.tokensLeft} left)`);
অধিবেশন অধ্যবসায়
প্রতিটি সেশন কথোপকথনের প্রেক্ষাপট ট্র্যাক রাখে। সেশনের প্রসঙ্গ উইন্ডোটি পূর্ণ না হওয়া পর্যন্ত পূর্ববর্তী মিথস্ক্রিয়াগুলি ভবিষ্যতের মিথস্ক্রিয়াগুলির জন্য বিবেচনা করা হয়।
const session = await LanguageModel.create({
initialPrompts: [{
role: "system",
content: "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 LanguageModel.availability();
if (available !== 'no') {
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()
ফাংশন ব্যবহার করা উচিত যা আপনাকে মডেল থেকে আসা আংশিক ফলাফলগুলি দেখাতে দেয়।
const {available, defaultTemperature, defaultTopK, maxTopK } =
await LanguageModel.availability();
if (available !== 'no') {
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);
}
}
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 এর ভবিষ্যত সংস্করণগুলি তৈরি এবং প্রয়োগ করি এবং সমস্ত অন্তর্নির্মিত AI API গুলি।
- Chrome এর বাস্তবায়ন সম্পর্কে প্রতিক্রিয়ার জন্য, একটি বাগ রিপোর্ট বা একটি বৈশিষ্ট্য অনুরোধ ফাইল করুন৷
- একটি বিদ্যমান ইস্যুতে মন্তব্য করে বা প্রম্পট API GitHub সংগ্রহস্থলে একটি নতুন খোলার মাধ্যমে API আকারে আপনার প্রতিক্রিয়া শেয়ার করুন।
- GitHub এ প্রম্পট API নমুনা এক্সটেনশন ডাউনলোড করুন।
- ওয়েব ইনকিউবেটর কমিউনিটি গ্রুপে যোগদানের মাধ্যমে মানক প্রচেষ্টায় অংশগ্রহণ করুন।