Writer API

פורסם: 20 במאי 2025

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

בעזרת Writer API אפשר ליצור תוכן חדש שתואם למשימת כתיבה ספציפית. ‫Writer API ו-Rewriter API הם חלק מההצעה ל-Writing Assistance APIs.

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

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

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

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

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

שנתחיל?

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

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

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

ממשקי ה-API של כלי זיהוי השפה והתרגום פועלים ב-Chrome במחשב. ממשקי ה-API האלה לא פועלים במכשירים ניידים. ממשקי Prompt API,‏ Summarizer API,‏ Writer API ו-Rewriter API פועלים ב-Chrome כשמתקיימים התנאים הבאים:

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

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

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

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

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

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

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

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

  1. לעבור אל chrome://flags/#writer-api-for-gemini-nano.
  2. בוחרים באפשרות מופעל.
  3. לוחצים על הפעלה מחדש או מפעילים מחדש את Chrome.

שימוש ב-Writer API

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

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

ממשק Writer API וכל ממשקי ה-AI API המובנים האחרים משולבים בדפדפן. ‫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.
  const writer = await Writer.create({
    ...options,
    monitor(m) {
      m.addEventListener("downloadprogress", e => {
        console.log(`Downloaded ${e.loaded * 100}%`);
      });
    }
  });
}

להתחיל לכתוב

יש שתי דרכים להפיק כתיבה מהמודל: לא בסטרימינג ובסטרימינג.

פלט שאינו סטרימינג

בכתיבה ללא סטרימינג, המודל מעבד את הקלט כמכלול ואז יוצר את הפלט.

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

הדגמה (דמו)

השתתפות ושיתוף משוב

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

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