লেখক API

প্রকাশিত: ২০ মে, ২০২৫

ব্যাখ্যাকারী ওয়েব এক্সটেনশন Chrome স্ট্যাটাস অভিপ্রায়
গিটহাব অরিজিন ট্রায়াল অরিজিন ট্রায়াল অরিজিন ট্রায়াল অরিজিন ট্রায়াল দৃশ্য পরীক্ষা-নিরীক্ষার অভিপ্রায়

রাইটার এপিআই আপনাকে নতুন কন্টেন্ট তৈরি করতে সাহায্য করে যা একটি নির্দিষ্ট লেখার কাজের সাথে সঙ্গতিপূর্ণ। রাইটার এপিআই এবং রিরাইটার এপিআই হল রাইটিং অ্যাসিস্ট্যান্স এপিআই প্রস্তাবনার অংশ।

এই পার্টনার এপিআইগুলি আপনাকে ব্যবহারকারীদের তৈরি কন্টেন্ট উন্নত করতে সাহায্য করতে পারে।

ব্যবহারের ক্ষেত্রে

আপনার প্রাথমিক ধারণা এবং ঐচ্ছিক প্রেক্ষাপটের উপর ভিত্তি করে নতুন কন্টেন্ট লিখুন। এটি ব্যবহার করা যেতে পারে:

  • ব্যবহারকারীদের যেকোনো ধরনের সামগ্রী লিখতে সহায়তা করুন, যেমন পর্যালোচনা, ব্লগ পোস্ট, বা ইমেল।
  • ব্যবহারকারীদের আরও ভালো সহায়তা অনুরোধ লিখতে সাহায্য করুন।
  • নির্দিষ্ট দক্ষতা আরও ভালোভাবে অর্জনের জন্য, কাজের নমুনার একটি সিরিজের ভূমিকা তৈরি করুন।

আপনার ব্যবহারের কেস কি অনুপস্থিত? আপনার প্রতিক্রিয়া জানাতে প্রারম্ভিক প্রিভিউ প্রোগ্রামে যোগ দিন।

শুরু করুন

Chrome 137 থেকে 142 পর্যন্ত চলমান Writer API অরিজিন ট্রায়ালে যোগ দিন

হার্ডওয়্যারের প্রয়োজনীয়তাগুলি পর্যালোচনা করুন

Chrome-এ এই API গুলি ব্যবহার করে বৈশিষ্ট্যগুলি পরিচালনাকারী ডেভেলপার এবং ব্যবহারকারীদের জন্য নিম্নলিখিত প্রয়োজনীয়তাগুলি বিদ্যমান। অন্যান্য ব্রাউজারগুলির বিভিন্ন অপারেটিং প্রয়োজনীয়তা থাকতে পারে।

ল্যাঙ্গুয়েজ ডিটেক্টর এবং ট্রান্সলেটর এপিআই ডেস্কটপে ক্রোমে কাজ করে। এই এপিআইগুলি মোবাইল ডিভাইসে কাজ করে না। প্রম্পট এপিআই, সামারাইজার এপিআই, রাইটার এপিআই, রিরাইটার এপিআই এবং প্রুফরিডার এপিআই ক্রোমে কাজ করে যখন নিম্নলিখিত শর্তগুলি পূরণ হয়:

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

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

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

রাইটার এপিআই রিরাইটার এপিআই-এর সাথে যৌথ অরিজিন ট্রায়ালে উপলব্ধ। এই এপিআইগুলি ব্যবহার শুরু করতে:

  1. গুগলের জেনারেটিভ এআই নিষিদ্ধ ব্যবহারের নীতি স্বীকার করুন।
  2. Writer API অরিজিন ট্রায়ালে যান।
  3. "রেজিস্টার" এ ক্লিক করুন এবং ফর্মটি পূরণ করুন। ওয়েব অরিজিন ফিল্ডে, আপনার অরিজিন বা এক্সটেনশন আইডি, chrome-extension://YOUR_EXTENSION_ID প্রদান করুন।
  4. জমা দিতে, নিবন্ধন করুন এ ক্লিক করুন।
  5. প্রদত্ত টোকেনটি কপি করুন, এবং এটি আপনার অরিজিনের প্রতিটি অংশগ্রহণকারী ওয়েব পৃষ্ঠায় যোগ করুন অথবা আপনার এক্সটেনশন ম্যানিফেস্টে অন্তর্ভুক্ত করুন।
  6. রাইটার এবং রিরাইটার এপিআই ব্যবহার শুরু করুন।

অরিজিন ট্রায়াল কীভাবে শুরু করবেন সে সম্পর্কে আরও জানুন।

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

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

  1. chrome://flags/#writer-api-for-gemini-nano এ যান।
  2. সক্রিয় নির্বাচন করুন।
  3. Chrome পুনরায় চালু করুন বা পুনরায় চালু করুন ক্লিক করুন।

রাইটার এপিআই ব্যবহার করুন

প্রথমে, ব্রাউজারটি এই API গুলিকে সমর্থন করে কিনা তা দেখতে বৈশিষ্ট্য সনাক্তকরণ চালান।

if ('Writer' in self) {
  // The Writer API is supported.
}

রাইটার এপিআই এবং অন্যান্য সমস্ত বিল্ট-ইন এআই এপিআই ব্রাউজারে ইন্টিগ্রেটেড। কোনও ওয়েবসাইট প্রথমবার বিল্ট-ইন এআই এপিআই ব্যবহার করলে জেমিনি ন্যানো আলাদাভাবে ডাউনলোড করা হয়। বাস্তবে, যদি কোনও ব্যবহারকারী ইতিমধ্যেই বিল্ট-ইন এপিআই ব্যবহার করে থাকেন, তাহলে তারা তাদের ব্রাউজারে মডেলটি ডাউনলোড করেছেন।

মডেলটি ব্যবহারের জন্য প্রস্তুত কিনা তা নির্ধারণ করতে, অ্যাসিঙ্ক্রোনাস Writer.availability() ফাংশনে কল করুন। যদি availability() এর প্রতিক্রিয়া downloadable হয়, তাহলে ডাউনলোডের অগ্রগতি শুনুন এবং ব্যবহারকারীকে জানান, কারণ ডাউনলোডে সময় লাগতে পারে।

const availability = await Writer.availability();

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

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

API ফাংশন

create() ফাংশন আপনাকে একটি নতুন writer অবজেক্ট কনফিগার করতে দেয়। এটি নিম্নলিখিত প্যারামিটার সহ একটি ঐচ্ছিক options অবজেক্ট নেয়:

  • tone : লেখার স্বর কন্টেন্টের স্টাইল, চরিত্র বা মনোভাবকে বোঝাতে পারে। মানটি formal , neutral (ডিফল্ট), অথবা casual এ সেট করা যেতে পারে।
  • format : আউটপুট বিন্যাস, অনুমোদিত মান markdown (ডিফল্ট) এবং plain-text সহ।
  • length : আউটপুটের দৈর্ঘ্য, অনুমোদিত মান short , medium (ডিফল্ট) এবং long সহ।
  • sharedContext : একাধিক আউটপুট লেখার সময়, একটি ভাগ করা প্রসঙ্গ মডেলটিকে আপনার প্রত্যাশার সাথে আরও ভালভাবে সামঞ্জস্যপূর্ণ সামগ্রী তৈরি করতে সহায়তা করতে পারে।

নিচের উদাহরণটি দেখায় কিভাবে একটি writer অবজেক্ট শুরু করতে হয়:

const options = {
  sharedContext: 'This is an email to acquaintances about an upcoming event.',
  tone: 'casual',
  format: 'plain-text',
  length: 'medium',
};

const available = await Writer.availability();
let writer;
if (available === 'unavailable') {
  // The Writer API isn't usable.
  return;
}
if (available === 'available') {
  // The Writer API can be used immediately .
  writer = await Writer.create(options);
} else {
  // The Writer can be used after the model is downloaded.
  const writer = await Writer.create({
    ...options,
    monitor(m) {
      m.addEventListener("downloadprogress", e => {
        console.log(`Downloaded ${e.loaded * 100}%`);
      });
    }
  });
}

প্রত্যাশিত ভাষা বরাদ্দ করুন

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

const writer = await Writer.create({
  tone: "formal",
  expectedInputLanguages: ["en", "ja", "es"],
  expectedContextLanguages: ["en", "ja", "es"],
  outputLanguage: "es",
  sharedContext: "These are requests to write messages to teachers in a Spanish
    language program, by students who may speak Spanish, Japanese, or English.
    Staff expect questions to be written in Spanish."
});

লেখা শুরু করুন

মডেলটি থেকে লেখা আউটপুট করার দুটি উপায় রয়েছে: নন-স্ট্রিমিং এবং স্ট্রিমিং।

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

নন-স্ট্রিমিং লেখার ক্ষেত্রে, মডেলটি সম্পূর্ণ ইনপুট প্রক্রিয়া করে এবং তারপর আউটপুট তৈরি করে।

নন-স্ট্রিমিং আউটপুট পেতে, অ্যাসিঙ্ক্রোনাস write() ফাংশনটি কল করুন। আপনি যে কন্টেন্টটি লিখতে চান তার জন্য আপনাকে অবশ্যই একটি প্রম্পট অন্তর্ভুক্ত করতে হবে। মডেলের পটভূমির তথ্য প্রদানের জন্য আপনি একটি ঐচ্ছিক context যোগ করতে পারেন, যা মডেলটিকে আউটপুটের জন্য আপনার প্রত্যাশাগুলি আরও ভালভাবে পূরণ করতে সহায়তা করতে পারে।

// Non-streaming
const writer = await Writer.create();
const result = await writer.write(
  "An inquiry to my bank about how to enable wire transfers on my account.", {
    context: "I'm a longstanding customer",
  },
);

স্ট্রিম লেখার আউটপুট

স্ট্রিমিং রিয়েল-টাইমে ফলাফল প্রদান করে। ইনপুট যোগ এবং সমন্বয় করার সাথে সাথে আউটপুট ক্রমাগত আপডেট হয়।

স্ট্রিমিং রাইটার পেতে, writeStreaming() ফাংশনটি কল করুন এবং স্ট্রিমের উপলব্ধ টেক্সট সেগমেন্টগুলিতে পুনরাবৃত্তি করুন। আপনি মডেলের ব্যাকগ্রাউন্ড তথ্য প্রদানের জন্য একটি ঐচ্ছিক context যোগ করতে পারেন, যা মডেলটিকে আউটপুটের জন্য আপনার প্রত্যাশা পূরণ করতে সহায়তা করতে পারে।

// Streaming
const writer = await Writer.create(
  expectedInputLanguages: ["en"],
  expectedContextLanguages: ["en"],
  outputLanguage: "en",
);
const stream = writer.writeStreaming(
  "An inquiry to my bank about how to enable wire transfers on my account.", {
    context: "I'm a longstanding customer",
  },
);
for await (const chunk of stream) {
  composeTextbox.append(chunk);
}

একাধিক কাজের জন্য প্রসঙ্গ শেয়ার করুন

একাধিক কন্টেন্ট তৈরি করার জন্য আপনি একজন writer ব্যবহার করতে পারেন। এই ক্ষেত্রে, sharedContext যোগ করা কার্যকর। উদাহরণস্বরূপ, আপনি পর্যালোচনাকারীদের মন্তব্যে আরও ভাল প্রতিক্রিয়া জানাতে সাহায্য করতে পারেন।

// Shared context and per writing task context
const writer = await Writer.create({
    expectedInputLanguages: ["en"],
    expectedContextLanguages: ["en"],
    outputLanguage: "en",
    sharedContext:
      "This is for publishing on [popular website name], a business" +
      "and employment-focused social media platform."
});

const stream = writer.writeStreaming(
  "Write a blog post about how I love all this work on gen AI at Google!" +
  "Mention that there's so much to learn and so many new things I can do!",
  { context: " The request comes from someone working at a startup providing an e-commerce CMS solution."}
);

for await (const chunk of stream) {
  composeTextbox.append(chunk);
}

একজন লেখককে পুনঃব্যবহার করুন

আপনি একই লেখককে ব্যবহার করে একাধিক কন্টেন্ট তৈরি করতে পারেন।

// Reuse a writer
const writer = await Writer.create({ tone: "formal" });

const reviews = await Promise.all(
  Array.from(
    document.querySelectorAll("#reviews > .review"),
    (reviewEl) => writer.write(reviewEl.textContent)
  ),
);

লেখককে থামান।

লেখার প্রক্রিয়াটি শেষ করতে, কন্ট্রোলারটি বাতিল করুন এবং লেখকটিকে ধ্বংস করুন।

// Aborting a writer
const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const writer = await Writer.create({ signal: controller.signal });
await writer.write(reviewEl.textContent, { signal: controller.signal });

// Destroying a writer
writer.destroy();

ডেমো

অনুমতি নীতি, আইফ্রেম এবং ওয়েব ওয়ার্কার

ডিফল্টরূপে, Writer API শুধুমাত্র শীর্ষ-স্তরের উইন্ডো এবং তাদের একই-অরিজিন আইফ্রেমগুলিতে উপলব্ধ। অনুমতি নীতি allow="" বৈশিষ্ট্য ব্যবহার করে ক্রস-অরিজিন আইফ্রেমগুলিতে API-এর অ্যাক্সেস অর্পণ করা যেতে পারে:

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

ওয়েব ওয়ার্কার্সে Writer API উপলব্ধ নেই। অনুমতি নীতির স্থিতি পরীক্ষা করার জন্য প্রতিটি কর্মীর জন্য একটি দায়িত্বশীল নথি স্থাপনের জটিলতার কারণে এটি ঘটে।

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

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

ব্রাউজারে জেমিনি ন্যানো এবং অন্যান্য বিশেষজ্ঞ মডেল সহ মডেল ব্যবহার করে এমন সমস্ত অন্তর্নির্মিত AI API আবিষ্কার করুন।