Writer API

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

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

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

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

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

بر اساس ایده اولیه و زمینه دلخواه خود، محتوای جدید بنویسید. این می‌تواند برای موارد زیر استفاده شود:

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

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

شروع کنید

به نسخه آزمایشی Writer 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 ثبت نام کنید

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

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

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

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

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

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

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

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

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

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

برای تعیین اینکه آیا مدل آماده استفاده است یا خیر، تابع 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 : هنگام نوشتن چندین خروجی ، یک 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}%`);
      });
    }
  });
}

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

رابط برنامه‌نویسی کاربردی نویسنده (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();

نسخه آزمایشی

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

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

<!--
  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) در Web Workerها در دسترس نیست. این به دلیل پیچیدگی ایجاد یک سند مسئول برای هر Worker به منظور بررسی وضعیت سیاست مجوزها است.

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

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

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