লেখক API

প্রকাশিত: ২২ অক্টোবর, ২০২৫

ব্যাখ্যাকারী ওয়েব এক্সটেনশন ক্রোম স্ট্যাটাস উদ্দেশ্য
গিটহাব ডেভেলপার ট্রায়াল ডেভেলপার ট্রায়াল ডেভেলপার ট্রায়াল ডেভেলপার ট্রায়াল দেখুন পরীক্ষা করার অভিপ্রায়

রাইটার এপিআই আপনাকে একটি নির্দিষ্ট লেখার কাজ অনুযায়ী নতুন কন্টেন্ট তৈরি করতে সাহায্য করে। রাইটার এপিআই এবং রিরাইটার এপিআই হলো রাইটিং অ্যাসিস্ট্যান্স এপিআই প্রস্তাবনার অংশ।

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

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

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

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

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

শুরু করুন

ক্রোম ১৩৭ থেকে ১৪৮-এ চলমান রাইটার এপিআই অরিজিন ট্রায়ালে যোগ দিন

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

ক্রোমে এই এপিআইগুলো ব্যবহার করে ফিচার পরিচালনা করেন এমন ডেভেলপার এবং ব্যবহারকারীদের জন্য নিম্নলিখিত শর্তাবলী প্রযোজ্য। অন্যান্য ব্রাউজারের ক্ষেত্রে পরিচালনার শর্তাবলী ভিন্ন হতে পারে।

ল্যাঙ্গুয়েজ ডিটেক্টর এবং ট্রান্সলেটর এপিআইগুলো ডেস্কটপের ক্রোমে কাজ করে। এই এপিআইগুলো মোবাইল ডিভাইসে কাজ করে না।

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

  • অপারেটিং সিস্টেম : উইন্ডোজ ১০ বা ১১; ম্যাকওএস ১৩+ (ভেনচুরা এবং তার পরবর্তী সংস্করণ); লিনাক্স; অথবা ক্রোমবুক প্লাস ডিভাইসে ক্রোমওএস (প্ল্যাটফর্ম ১৬৩৮৯.০.০ এবং তার পরবর্তী সংস্করণ)। জেমিনি ন্যানো ব্যবহারকারী এপিআইগুলো দ্বারা নন-ক্রোমবুক প্লাস ডিভাইসের অ্যান্ড্রয়েড, আইওএস এবং ক্রোমওএস-এর জন্য ক্রোম এখনও সমর্থিত নয়।
  • স্টোরেজ : আপনার ক্রোম প্রোফাইল ধারণকারী ভলিউমে কমপক্ষে ২২ জিবি খালি জায়গা থাকতে হবে।
  • জিপিইউ বা সিপিইউ : বিল্ট-ইন মডেলগুলো জিপিইউ বা সিপিইউ দিয়ে চলতে পারে।
    • জিপিইউ : অবশ্যই ৪ জিবির বেশি ভিআরএএম থাকতে হবে।
    • সিপিইউ : ১৬ জিবি বা তার বেশি র‍্যাম এবং ৪টি বা তার বেশি সিপিইউ কোর।
    • দ্রষ্টব্য : অডিও ইনপুট সহ প্রম্পট এপিআই ব্যবহার করার জন্য একটি জিপিইউ প্রয়োজন।
  • নেটওয়ার্ক : আনলিমিটেড ডেটা অথবা আনমিটারড কানেকশন।

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

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

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

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

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

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

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

  1. chrome://flags/#optimization-guide-on-device-model Enabled- এ সেট করুন।
  2. নিম্নলিখিত ফ্ল্যাগগুলিকে Enabled অথবা Enabled Multilingual- এ সেট করুন:
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. Click Relaunch or restart Chrome.

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

প্রথমে, ব্রাউজারটি এই এপিআইগুলো সমর্থন করে কিনা তা দেখতে ফিচার ডিটেকশন চালান।

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}%`);
    });
  }
});

এপিআই ফাংশন

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

  • tone : Writing tone can refer to the style, character, or attitude of the content. The value can be set to formal , neutral (default), or casual .
  • format : আউটপুটের ফরম্যাটিং, যার অনুমোদিত মানগুলো markdown (ডিফল্ট) এবং plain-text
  • length : আউটপুটের দৈর্ঘ্য, যার অনুমোদিত মানগুলো short (ডিফল্ট), medium এবং long
  • sharedContext : একাধিক আউটপুট লেখার সময়, একটি shared context মডেলকে আপনার প্রত্যাশার সাথে আরও ভালোভাবে সামঞ্জস্যপূর্ণ কন্টেন্ট তৈরি করতে সাহায্য করতে পারে।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে একটি 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}%`);
      });
    }
  });
}

প্রত্যাশিত ভাষা নির্ধারণ করুন

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

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 যোগ করতে পারেন, যা আউটপুট সম্পর্কে আপনার প্রত্যাশা পূরণে মডেলকে আরও ভালোভাবে সাহায্য করতে পারে।

// Request-based
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();

ডেমো

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

By default, the Writer API is only available to top-level windows and to their same-origin iframes. Access to the API can be delegated to cross-origin iframes using the Permission Policy allow="" attribute:

<!--
  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) উপলব্ধ নয়। এর কারণ হলো, পারমিশন পলিসি (Permissions Policy)-র অবস্থা পরীক্ষা করার জন্য প্রতিটি ওয়ার্কারের জন্য একটি দায়িত্বশীল ডকুমেন্ট তৈরি করার জটিলতা।

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

The Writer and Rewriter API are under active discussion and subject to change in the future. If you try this API and have feedback, we'd love to hear it.

ব্রাউজারে জেমিনি ন্যানো এবং অন্যান্য বিশেষজ্ঞ মডেলসহ বিভিন্ন মডেল ব্যবহারকারী সমস্ত বিল্ট-ইন এআই এপিআই সম্পর্কে জানুন।