Rewriter API

منتشر شده: ۲۰ مه ۲۰۲۵

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

API نویسنده‌ی متن (Rewriter API) به شما کمک می‌کند تا متن را اصلاح و بازسازی کنید. این API و API نویسنده بخشی از پیشنهاد APIهای کمک به نگارش هستند.

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

موارد استفاده

متن موجود را با بلندتر یا کوتاه‌تر کردن یا تغییر لحن، اصلاح کنید. برای مثال، می‌توانید:

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

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

شروع کنید

به نسخه آزمایشی Rewriter API origin که در کروم ۱۳۷ تا ۱۴۲ اجرا می‌شود، بپیوندید .

بررسی نیازمندی‌های سخت‌افزاری

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

APIهای تشخیص زبان و مترجم در کروم دسکتاپ کار می‌کنند. این APIها در دستگاه‌های تلفن همراه کار نمی‌کنند. APIهای Prompt، Summarizer، Writer، Rewriter و Proofreader در کروم زمانی کار می‌کنند که شرایط زیر برقرار باشند:

  • سیستم عامل : ویندوز ۱۰ یا ۱۱؛ macOS 13+ (Ventura و بعد از آن)؛ لینوکس؛ یا ChromeOS (از پلتفرم ۱۶۳۸۹.۰.۰ و بعد از آن) در دستگاه‌های Chromebook Plus . Chrome برای اندروید، iOS و ChromeOS در دستگاه‌های غیر Chromebook Plus هنوز توسط APIهایی که از Gemini Nano استفاده می‌کنند پشتیبانی نمی‌شوند.
  • فضای ذخیره‌سازی : حداقل ۲۲ گیگابایت فضای خالی در درایوی که نمایه کروم شما در آن قرار دارد.
  • پردازنده گرافیکی (GPU) یا پردازنده مرکزی (CPU) : مدل‌های توکار می‌توانند با پردازنده گرافیکی (GPU) یا پردازنده مرکزی (CPU) کار کنند.
    • پردازنده گرافیکی (GPU) : دقیقاً بیش از ۴ گیگابایت حافظه ویدیویی (VRAM).
    • پردازنده : ۱۶ گیگابایت رم یا بیشتر و ۴ هسته پردازنده یا بیشتر.
  • شبکه : داده نامحدود یا اتصال بدون محدودیت حجمی.

اندازه دقیق Gemini Nano ممکن است با به‌روزرسانی مدل مرورگر تغییر کند. برای تعیین اندازه فعلی، به chrome://on-device-internals مراجعه کنید.

برای نسخه آزمایشی Origin ثبت نام کنید

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

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

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

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

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

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

از API بازنویسی استفاده کنید

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

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

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

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

const availability = await Rewriter.availability();

برای شروع دانلود مدل و شروع بازنویسی، فعال‌سازی کاربر را بررسی کنید و تابع Rewriter.create() را فراخوانی کنید.

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

توابع API

تابع create() به شما امکان می‌دهد یک شیء rewriter جدید پیکربندی کنید. این تابع یک شیء options اختیاری با پارامترهای زیر می‌گیرد:

  • tone : لحن نوشتاری می‌تواند به سبک، شخصیت یا نگرش محتوا اشاره داشته باشد. مقدار آن را می‌توان به more-formal ، as-is (پیش‌فرض) یا more-casual تنظیم کرد.
  • format : قالب‌بندی خروجی، با مقادیر مجاز as-is (پیش‌فرض)، markdown و plain-text .
  • length : طول خروجی، با مقادیر مجاز shorter ، as-is (پیش‌فرض) و longer .
  • sharedContext : هنگام بازنویسی چندین محتوا ، یک context مشترک می‌تواند به مدل کمک کند تا محتوایی را ایجاد کند که با انتظارات شما هماهنگ‌تر باشد.

مثال زیر نحوه‌ی آغاز یک شیء rewriter را نشان می‌دهد:

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

const available = await Rewriter.availability();
let rewriter;
if (available === 'unavailable') {
  // The Rewriter API isn't usable.
  return;
}
if (available === 'available') {
  // The Rewriter API can be used immediately .
  rewriter = await Rewriter.create(options);
} else {
  // The Rewriter can be used after the model is downloaded.
  rewriter = await Rewriter.create(options);
  rewriter.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

زبان‌های مورد انتظار را اختصاص دهید

API Rewriter از چندین زبان پشتیبانی می‌کند. هنگام ایجاد جلسه، زبان‌های ورودی، خروجی و زمینه مورد انتظار را تنظیم کنید. این به مرورگر اجازه می‌دهد در صورتی که نتواند از ترکیب زبان خاصی پشتیبانی کند، درخواست را رد کند.

const rewriter = await Rewriter.create({
  tone: "more-formal",
  expectedInputLanguages: ["en", "ja", "es"],
  expectedContextLanguages: ["en", "ja", "es"],
  outputLanguage: "es",
  sharedContext: "These are requests to rewrite 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."
});

شروع به بازنویسی کنید

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

خروجی غیر استریمینگ

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

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

// Non-streaming
const rewriter = await Rewriter.create({
  sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});
const result = await rewriter.rewrite(reviewEl.textContent, {
  context: "Avoid any toxic language and be as constructive as possible."
});

خروجی بازنویسی جریان

استریمینگ نتایج را به صورت بلادرنگ ارائه می‌دهد. خروجی به طور مداوم با اضافه شدن و تنظیم ورودی، به‌روزرسانی می‌شود.

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

const rewriter = await Rewriter.create({
  sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});

const stream = rewriter.rewriteStreaming(reviewEl.textContent, {
  context: "Avoid any toxic language and be as constructive as possible.",
  tone: "more-casual",
});

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

اشتراک‌گذاری زمینه برای چندین وظیفه

ممکن است بخواهید از یک rewriter برای تولید چندین محتوا استفاده کنید. در این حالت، اضافه کردن sharedContext مفید است. به عنوان مثال، ممکن است بخواهید به داوران کمک کنید تا بازخورد بهتری در نظرات ارائه دهند.

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

const stream = rewriter.rewriteStreaming(
  "Love all this work on generative AI at Google! 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.",
    tone: "more-casual",
  }
);

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

استفاده مجدد از یک بازنویس

شما می‌توانید از یک بازنویس برای ویرایش چندین محتوا استفاده کنید. این امر می‌تواند به ویژه در صورت اضافه کردن بازنویس به ابزار بازخورد یا نظردهی مفید باشد تا به نویسندگان کمک کند بازخوردهای مفید و سازنده‌ای ارائه دهند.

// Reusing a rewriter
const rewriter = await Rewriter.create({
  sharedContext: "A review for the Flux Capacitor 3000 from TimeMachines Inc."
});

const rewrittenReviews = await Promise.all(
  Array.from(
    document.querySelectorAll("#reviews > .review"),
    (reviewEl) => rewriter.rewrite(reviewEl.textContent, {
      context: "Avoid any toxic language and be as constructive as possible.",
      tone: "more-casual",
    })
  ),
);

بازنویس را متوقف کنید

برای پایان دادن به فرآیند بازنویسی، کنترلر را لغو کرده و rewriter از بین ببرید.

// Stop a rewriter
const controller = new AbortController();
stopButton.onclick = () => controller.abort();

const rewriter = await Rewriter.create({ signal: controller.signal });
await rewriter.rewrite(reviewEl.textContent, { signal: controller.signal });

// Destroy a rewriter
rewriter.destroy();

نسخه آزمایشی

سیاست دسترسی، iframeها و Web Workerها

به طور پیش‌فرض، API Rewriter فقط برای پنجره‌های سطح بالا و iframe های هم‌مبنای آنها در دسترس است. دسترسی به API را می‌توان با استفاده از ویژگی allow="" در Permission Policy به iframe های بین‌منبعی واگذار کرد:

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

رابط برنامه‌نویسی کاربردی (API) Rewriter در Web Workerها موجود نیست. این به دلیل پیچیدگی ایجاد یک سند مسئول برای هر Worker است تا بتوان وضعیت سیاست مجوزها (Permissions Policy) را بررسی کرد.

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

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

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