Writer API

تاریخ انتشار: 20 می 2025

توضیح دهندهوببرنامه های افزودنیوضعیت کرومقصد
پشت پرچم آزمایش مبداپشت پرچم آزمایش مبدامشاهده کنیدقصد آزمایش

Writer API به شما کمک می کند محتوای جدیدی ایجاد کنید که با یک کار نوشتن مشخص مطابقت دارد. Writer API و Rewriter API بخشی از پیشنهاد APIهای Writing Assistance هستند.

این API های شریک می توانند به شما در بهبود محتوای ایجاد شده توسط کاربران کمک کنند.

موارد استفاده کنید

محتوای جدید را بر اساس ایده اولیه و زمینه اختیاری خود بنویسید. این می تواند مورد استفاده قرار گیرد:

  • پشتیبانی از کاربران برای نوشتن هر نوع محتوا، مانند نظرات، پست‌های وبلاگ یا ایمیل.
  • به کاربران کمک کنید تا درخواست های پشتیبانی بهتری بنویسند.
  • یک مقدمه برای یک سری نمونه کار تهیه کنید تا مهارت های خاص را بهتر به دست آورید.

آیا مورد استفاده شما گم شده است؟ برای به اشتراک گذاشتن نظرات خود به برنامه پیش نمایش اولیه بپیوندید.

شروع کنید

به نسخه آزمایشی اولیه Writer API بپیوندید که در Chrome 137 تا 142 اجرا می شود.

الزامات سخت افزاری را بررسی کنید

زبان شناساگر و API های مترجم فقط روی دسکتاپ در کروم کار می کنند.

Prompt API، Summarizer API، Writer API، و Rewriter API در Chrome کار می‌کنند که شرایط زیر رعایت شود:

  • سیستم عامل : ویندوز 10 یا 11؛ macOS 13+ (ونتورا و به بعد)؛ یا لینوکس Chrome for Android، iOS و ChromeOS هنوز توسط APIهای ما که توسط Gemini Nano پشتیبانی می‌شوند، پشتیبانی نمی‌شوند.
  • فضای ذخیره سازی : حداقل 22 گیگابایت در حجمی که نمایه کروم شما را در خود دارد.
  • GPU : به طور دقیق بیش از 4 گیگابایت VRAM.
  • شبکه : داده های نامحدود یا اتصال نامحدود.

این الزامات برای شما در فرآیند توسعه و کاربرانی که با ویژگی هایی که می سازید کار می کنند وجود دارد.

برای آزمایش اولیه ثبت نام کنید

Writer API در یک نسخه آزمایشی مشترک با Rewriter API در دسترس است. برای شروع استفاده از این API ها:

  1. خط‌مشی استفاده‌های ممنوعه هوش مصنوعی Google را بپذیرید.
  2. به نسخه آزمایشی اولیه Writer API بروید.
  3. روی ثبت نام کلیک کنید و فرم را پر کنید. در فیلد مبدا وب، شناسه مبدا یا افزونه خود، chrome-extension://YOUR_EXTENSION_ID ارائه دهید.
  4. برای ارسال، روی ثبت کلیک کنید.
  5. کد ارائه شده را کپی کنید و آن را به هر صفحه وب شرکت کننده در مبدا خود اضافه کنید یا آن را در مانیفست برنامه افزودنی خود قرار دهید.
  6. استفاده از API های Writer و Rewriter را شروع کنید.

درباره نحوه شروع آزمایشات مبدأ بیشتر بیاموزید.

پشتیبانی را به لوکال هاست اضافه کنید

برای دسترسی به API های Writer و Rewriter در لوکال هاست در طول آزمایش اولیه، باید Chrome را به آخرین نسخه به روز کنید . سپس، این مراحل را دنبال کنید:

  1. به chrome://flags/#writer-api-for-gemini-nano بروید.
  2. Enabled را انتخاب کنید.
  3. روی راه اندازی مجدد یا راه اندازی مجدد کروم کلیک کنید.

از Writer API استفاده کنید

ابتدا تشخیص ویژگی را اجرا کنید تا ببینید آیا مرورگر از این API ها پشتیبانی می کند یا خیر.

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

Writer API و سایر APIهای AI داخلی در مرورگر ادغام شده‌اند. Gemini Nano اولین باری که هر وب سایتی از API داخلی AI استفاده می کند به طور جداگانه دانلود می شود. در عمل، اگر کاربر قبلاً با یک API داخلی تعامل داشته باشد، مدل را در مرورگر خود دانلود کرده است.

برای تعیین اینکه آیا مدل آماده استفاده است، تابع Writer.availability() ناهمزمان را فراخوانی کنید. رشته ای را برمی گرداند که می تواند چهار مقدار ممکن را بگیرد:

  • unavailable : مرورگر از Writer API پشتیبانی می کند، اما در حال حاضر نمی توان از آن استفاده کرد. این ممکن است به دلایلی باشد، مانند فضای کافی در دسترس برای دانلود مدل.
  • available : مرورگر از Writer API پشتیبانی می کند و می توان بلافاصله از آن استفاده کرد.
  • downloadable : مرورگر از Writer API پشتیبانی می کند، اما ابتدا باید مدل را دانلود کند.
  • downloading : مرورگر از Writer API پشتیبانی می کند و در حال حاضر در حال دانلود مدل است.

برای شروع دانلود مدل و شروع نوشتن، تابع Writer.create() را فراخوانی کنید. اگر پاسخ به availability() downloadable بود، به پیشرفت دانلود گوش دهید و به کاربر اطلاع دهید، زیرا دانلود ممکن است زمان ببرد.

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

توابع API

تابع create() به شما امکان می دهد یک شی نویسنده جدید را پیکربندی کنید. یک شی 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.
  writer = await Writer.create(options);
  writer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

شروع به نوشتن کنید

دو راه برای خروجی نوشتن از مدل وجود دارد: بدون جریان و جریان.

خروجی بدون جریان

با نوشتن غیر جریانی، مدل ورودی را به عنوان یک کل پردازش می کند و سپس خروجی را تولید می کند.

برای دریافت خروجی غیر جریانی، تابع write() ناهمزمان را فراخوانی کنید. شما باید برای محتوایی که می خواهید نوشته شود، یک درخواست اضافه کنید. شما می توانید یک context اختیاری برای ارائه اطلاعات پس زمینه مدل اضافه کنید، که ممکن است به مدل کمک کند تا انتظارات شما را برای خروجی بهتر برآورده کند.

// Non-
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",
  },
);

خروجی نوشتن جریانی

جریان نتایج را در زمان واقعی ارائه می دهد. با اضافه شدن و تنظیم ورودی، خروجی به طور مداوم به روز می شود.

برای دریافت یک رایتر استریم، تابع write() را فراخوانی کنید و روی بخش‌های موجود متن در جریان تکرار کنید. شما می توانید یک context اختیاری برای ارائه اطلاعات پس زمینه مدل اضافه کنید، که ممکن است به مدل کمک کند تا انتظارات شما را برای خروجی بهتر برآورده کند.

// 
const writer = await Writer.create();
const stream = writer.write(
  "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({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});

const stream = writer.write(
  "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();

نسخه ی نمایشی

مشارکت کنید و بازخورد را به اشتراک بگذارید

API Writer و Rewriter تحت بحث فعال است و ممکن است در آینده تغییر کند. اگر این API را امتحان کردید و بازخورد دارید، مایلیم آن را بشنویم.

همه APIهای داخلی هوش مصنوعی را که از مدل‌هایی از جمله Gemini Nano و سایر مدل‌های خبره استفاده می‌کنند، در مرورگر کشف کنید.

،

تاریخ انتشار: 20 می 2025

توضیح دهندهوببرنامه های افزودنیوضعیت کرومقصد
پشت پرچم آزمایش مبداپشت پرچم آزمایش مبدامشاهده کنیدقصد آزمایش

Writer API به شما کمک می کند محتوای جدیدی ایجاد کنید که با یک کار نوشتن مشخص مطابقت دارد. Writer API و Rewriter API بخشی از پیشنهاد APIهای Writing Assistance هستند.

این API های شریک می توانند به شما در بهبود محتوای ایجاد شده توسط کاربران کمک کنند.

موارد استفاده کنید

محتوای جدید را بر اساس ایده اولیه و زمینه اختیاری خود بنویسید. این می تواند مورد استفاده قرار گیرد:

  • پشتیبانی از کاربران برای نوشتن هر نوع محتوا، مانند نظرات، پست‌های وبلاگ یا ایمیل.
  • به کاربران کمک کنید تا درخواست های پشتیبانی بهتری بنویسند.
  • یک مقدمه برای یک سری نمونه کار تهیه کنید تا مهارت های خاص را بهتر به دست آورید.

آیا مورد استفاده شما گم شده است؟ برای به اشتراک گذاشتن نظرات خود به برنامه پیش نمایش اولیه بپیوندید.

شروع کنید

به نسخه آزمایشی اولیه Writer API بپیوندید که در Chrome 137 تا 142 اجرا می شود.

الزامات سخت افزاری را بررسی کنید

زبان شناساگر و API های مترجم فقط روی دسکتاپ در کروم کار می کنند.

Prompt API، Summarizer API، Writer API، و Rewriter API در Chrome کار می‌کنند که شرایط زیر رعایت شود:

  • سیستم عامل : ویندوز 10 یا 11؛ macOS 13+ (ونتورا و به بعد)؛ یا لینوکس Chrome for Android، iOS و ChromeOS هنوز توسط APIهای ما که توسط Gemini Nano پشتیبانی می‌شوند، پشتیبانی نمی‌شوند.
  • فضای ذخیره سازی : حداقل 22 گیگابایت در حجمی که نمایه کروم شما را در خود دارد.
  • GPU : به طور دقیق بیش از 4 گیگابایت VRAM.
  • شبکه : داده های نامحدود یا اتصال نامحدود.

این الزامات برای شما در فرآیند توسعه و کاربرانی که با ویژگی هایی که می سازید کار می کنند وجود دارد.

برای آزمایش اولیه ثبت نام کنید

Writer API در یک نسخه آزمایشی مشترک با Rewriter API در دسترس است. برای شروع استفاده از این API ها:

  1. خط‌مشی استفاده‌های ممنوعه هوش مصنوعی Google را بپذیرید.
  2. به نسخه آزمایشی اولیه Writer API بروید.
  3. روی ثبت نام کلیک کنید و فرم را پر کنید. در فیلد مبدا وب، شناسه مبدا یا افزونه خود، chrome-extension://YOUR_EXTENSION_ID ارائه دهید.
  4. برای ارسال، روی ثبت کلیک کنید.
  5. کد ارائه شده را کپی کنید و آن را به هر صفحه وب شرکت کننده در مبدا خود اضافه کنید یا آن را در مانیفست برنامه افزودنی خود قرار دهید.
  6. استفاده از API های Writer و Rewriter را شروع کنید.

درباره نحوه شروع آزمایشات مبدأ بیشتر بیاموزید.

پشتیبانی را به لوکال هاست اضافه کنید

برای دسترسی به API های Writer و Rewriter در لوکال هاست در طول آزمایش اولیه، باید Chrome را به آخرین نسخه به روز کنید . سپس، این مراحل را دنبال کنید:

  1. به chrome://flags/#writer-api-for-gemini-nano بروید.
  2. Enabled را انتخاب کنید.
  3. روی راه اندازی مجدد یا راه اندازی مجدد کروم کلیک کنید.

از Writer API استفاده کنید

ابتدا تشخیص ویژگی را اجرا کنید تا ببینید آیا مرورگر از این API ها پشتیبانی می کند یا خیر.

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

Writer API و سایر APIهای AI داخلی در مرورگر ادغام شده‌اند. Gemini Nano اولین باری که هر وب سایتی از API داخلی AI استفاده می کند به طور جداگانه دانلود می شود. در عمل، اگر کاربر قبلاً با یک API داخلی تعامل داشته باشد، مدل را در مرورگر خود دانلود کرده است.

برای تعیین اینکه آیا مدل آماده استفاده است، تابع Writer.availability() ناهمزمان را فراخوانی کنید. رشته ای را برمی گرداند که می تواند چهار مقدار ممکن را بگیرد:

  • unavailable : مرورگر از Writer API پشتیبانی می کند، اما در حال حاضر نمی توان از آن استفاده کرد. این ممکن است به دلایلی باشد، مانند فضای کافی در دسترس برای دانلود مدل.
  • available : مرورگر از Writer API پشتیبانی می کند و می توان بلافاصله از آن استفاده کرد.
  • downloadable : مرورگر از Writer API پشتیبانی می کند، اما ابتدا باید مدل را دانلود کند.
  • downloading : مرورگر از Writer API پشتیبانی می کند و در حال حاضر در حال دانلود مدل است.

برای شروع دانلود مدل و شروع نوشتن، تابع Writer.create() را فراخوانی کنید. اگر پاسخ به availability() downloadable بود، به پیشرفت دانلود گوش دهید و به کاربر اطلاع دهید، زیرا دانلود ممکن است زمان ببرد.

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

توابع API

تابع create() به شما امکان می دهد یک شی نویسنده جدید را پیکربندی کنید. یک شی 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.
  writer = await Writer.create(options);
  writer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

شروع به نوشتن کنید

دو راه برای خروجی نوشتن از مدل وجود دارد: بدون جریان و جریان.

خروجی بدون جریان

با نوشتن غیر جریانی، مدل ورودی را به عنوان یک کل پردازش می کند و سپس خروجی را تولید می کند.

برای دریافت خروجی غیر جریانی، تابع write() ناهمزمان را فراخوانی کنید. شما باید برای محتوایی که می خواهید نوشته شود، یک درخواست اضافه کنید. شما می توانید یک context اختیاری برای ارائه اطلاعات پس زمینه مدل اضافه کنید، که ممکن است به مدل کمک کند تا انتظارات شما را برای خروجی بهتر برآورده کند.

// Non-
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",
  },
);

خروجی نوشتن جریانی

جریان نتایج را در زمان واقعی ارائه می دهد. با اضافه شدن و تنظیم ورودی، خروجی به طور مداوم به روز می شود.

برای دریافت یک رایتر استریم، تابع write() را فراخوانی کنید و روی بخش‌های موجود متن در جریان تکرار کنید. شما می توانید یک context اختیاری برای ارائه اطلاعات پس زمینه مدل اضافه کنید، که ممکن است به مدل کمک کند تا انتظارات شما را برای خروجی بهتر برآورده کند.

// 
const writer = await Writer.create();
const stream = writer.write(
  "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({
sharedContext: "This is for publishing on [popular website name], a business and employment-focused social media platform."
});

const stream = writer.write(
  "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();

نسخه ی نمایشی

مشارکت کنید و بازخورد را به اشتراک بگذارید

API Writer و Rewriter تحت بحث فعال است و ممکن است در آینده تغییر کند. اگر این API را امتحان کردید و بازخورد دارید، مایلیم آن را بشنویم.

همه APIهای داخلی هوش مصنوعی را که از مدل‌هایی از جمله Gemini Nano و سایر مدل‌های خبره استفاده می‌کنند، در مرورگر کشف کنید.