Rewriter API

תאריך פרסום: 22 באוקטובר 2025

סרטון הסבר פיתוח אתרים תוספים הסטטוס של Chrome הרציונל
GitHub גרסת מקור לניסיון גרסת מקור לניסיון גרסת מקור לניסיון גרסת מקור לניסיון תצוגה הבעת כוונות לניסוי

ה-API של הכתיבה מחדש עוזר לשנות את מבנה הטקסט ולשפר אותו. ה-API הזה ו-Writer API הם חלק מההצעה ל-APIs של עזרה בכתיבה.

ממשקי ה-API האלה יכולים לעזור לכם לשפר את התוכן שנוצר על ידי משתמשים.

תרחישים לדוגמה

לשפר טקסט קיים על ידי הארכה או קיצור שלו, או שינוי הטון. לדוגמה, אפשר:

  • לשכתב אימייל קצר כך שיישמע מנומס ורשמי יותר.
  • להציע עריכות לביקורות של לקוחות כדי לעזור ללקוחות אחרים להבין את המשוב או להסיר תוכן רעיל.
  • לעצב את התוכן כך שיתאים לציפיות של קהלים מסוימים.

תרחיש השימוש שלכם לא מופיע? כדי לשתף את המשוב שלכם, אתם יכולים להצטרף לתוכנית הגישה המוקדמת.

שנתחיל?

הצטרפות לגרסת המקור לניסיון של Rewriter API, שפועלת ב-Chrome מגרסה 137 עד 148.

בדיקת דרישות החומרה

הדרישות הבאות חלות על מפתחים ועל משתמשים שמפעילים תכונות באמצעות ממשקי ה-API האלה ב-Chrome. בדפדפנים אחרים עשויות להיות דרישות הפעלה שונות.

Language Detector ו-Translator APIs פועלים ב-Chrome במחשב. ממשקי ה-API האלה לא פועלים במכשירים ניידים.

Prompt API,‏ Summarizer API,‏ Writer API,‏ Rewriter API ו-Proofreader API פועלים ב-Chrome כשמתקיימים התנאים הבאים:

  • מערכת הפעלה: Windows 10 או 11;‏ macOS 13 ואילך (Ventura ואילך); Linux; או ChromeOS (מגרסה Platform 16389.0.0 ואילך) במכשירי Chromebook Plus. ‫Chrome ל-Android, ל-iOS ול-ChromeOS במכשירים שאינם Chromebook Plus עדיין לא נתמך על ידי ממשקי ה-API שמשתמשים ב-Gemini Nano.
  • אחסון: לפחות 22 GB של שטח פנוי בכרך שמכיל את פרופיל Chrome.
  • GPU או CPU: אפשר להפעיל מודלים מובנים באמצעות GPU או CPU.
    • מעבד גרפי (GPU): יותר מ-4 GB של VRAM.
    • יחידת עיבוד מרכזית (CPU): זיכרון RAM של 16 GB או יותר ו-4 ליבות CPU או יותר.
  • רשת: חבילת גלישה ללא הגבלה או חיבור ללא הגבלה.

הגודל המדויק של Gemini Nano עשוי להשתנות כשהדפדפן מעדכן את המודל. כדי לדעת מה הגודל הנוכחי, אפשר לעבור אל chrome://on-device-internals.

אחרי שתעמדו בדרישות.

הרשמה לתקופת ניסיון של תכונה

ממשק Rewriter API זמין בגרסת מקור לניסיון משותפת עם Writer API. כדי להתחיל להשתמש בממשקי ה-API האלה:

  1. אישור המדיניות של Google בנושא שימוש אסור ב-AI גנרטיבי.
  2. עוברים אל גרסת המקור לניסיון של Rewriter API.
  3. לוחצים על הרשמה וממלאים את הטופס. בשדה 'מקור באינטרנט', מזינים את המקור או את מזהה התוסף, chrome-extension://YOUR_EXTENSION_ID.
  4. כדי לשלוח, לוחצים על הרשמה.
  5. מעתיקים את האסימון שסופק ומוסיפים אותו לכל דף אינטרנט שמשתתף במקור או כוללים אותו במניפסט של התוסף.
  6. מתחילים להשתמש ב-Rewriter API.

איך מתחילים להשתמש בתקופות ניסיון של מקורות

הוספת תמיכה ב-localhost

כדי לגשת ל-Rewriter API ב-localhost, משתמשים בתכונות ניסיוניות של Chrome:

  1. מגדירים את chrome://flags/#optimization-guide-on-device-model למופעל.
  2. מגדירים את הדגלים הבאים לערך Enabled או Enabled Multilingual:
    • chrome://flags/#prompt-api-for-gemini-nano-multimodal-input
    • chrome://flags/#writer-api-for-gemini-nano
  3. לוחצים על הפעלה מחדש או מפעילים מחדש את Chrome.

שימוש ב-Rewriter API

קודם מריצים זיהוי תכונות כדי לראות אם הדפדפן תומך בממשקי ה-API האלה.

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

ממשק ה-API של הכלי לשינוי ניסוחים, וכל ממשקי ה-AI API המובנים האחרים, משולבים בדפדפן. ‫Gemini Nano מוריד בנפרד בפעם הראשונה שאתר כלשהו משתמש ב-API מובנה של AI. בפועל, אם משתמש כבר יצר אינטראקציה עם API מובנה, הוא הוריד את המודל לדפדפן שלו.

כדי לקבוע אם המודל מוכן לשימוש, מפעילים את הפונקציה האסינכרונית 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() מאפשרת להגדיר אובייקט חדש של כתיבה מחדש. הפונקציה מקבלת אובייקט options אופציונלי עם הפרמטרים הבאים:

  • tone: טון הכתיבה יכול להתייחס לסגנון, לאופי או לגישה של התוכן. הערך יכול להיות more-formal,‏ as-is (ברירת מחדל) או more-casual.
  • format: פורמט הפלט, עם הערכים המותרים as-is (ברירת מחדל), markdown ו-plain-text.
  • length: אורך הפלט, עם הערכים המותרים shorter,‏ as-is (ברירת מחדל) ו-longer.
  • sharedContext: כשמשכתבים כמה קטעי תוכן, הקשר משותף יכול לעזור למודל ליצור תוכן שתואם יותר לציפיות שלכם.

בדוגמה הבאה אפשר לראות איך יוצרים אובייקט 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);
  });
}

הקצאת שפות צפויות

‫Rewriter API תומך בכמה שפות. כשיוצרים את הסשן, מגדירים את שפות הקלט, הפלט וההקשר הצפויות. כך הדפדפן יכול לדחות את הבקשה אם הוא לא תומך בשילוב שפות ספציפי.

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 אופציונלי כדי לספק למודל מידע רקע, שיעזור לו לעמוד טוב יותר בציפיות שלכם לגבי הפלט.

// Request-based
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 Workers

כברירת מחדל, Rewriter API זמין רק לחלונות ברמה העליונה ול-iframes שלהם מאותו מקור. אפשר להעניק גישה ל-API ל-iframes ממקורות שונים באמצעות מאפיין allow="" של מדיניות ההרשאות:

<!--
  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 של הכלי לשינוי ניסוח לא זמין ב-Web Workers. הסיבה לכך היא המורכבות של יצירת מסמך אחראי לכל עובד, כדי לבדוק את הסטטוס של מדיניות ההרשאות.

אינטראקציה ושיתוף משוב

ממשקי Writer ו-Rewriter API נמצאים כרגע בתהליכי דיון ופיתוח, ויכול להיות שהם ישתנו בעתיד. אם תנסו את ה-API הזה ויהיה לכם משוב, נשמח לשמוע אותו.

אתם יכולים לגלות את כל ממשקי ה-API המובנים של AI שמשתמשים במודלים, כולל Gemini Nano ומודלים אחרים של מומחים, בדפדפן.