Rewriter API

เผยแพร่: 20 พฤษภาคม 2025

คำอธิบาย เว็บ ส่วนขยาย สถานะของ Chrome ความตั้งใจ
GitHub ช่วงทดลองใช้จากต้นทาง ช่วงทดลองใช้จากต้นทาง ช่วงทดลองใช้จากต้นทาง ช่วงทดลองใช้จากต้นทาง ดู ความตั้งใจที่จะทดลอง

API การเขียนใหม่ช่วยให้คุณแก้ไขและปรับโครงสร้างข้อความได้ API นี้และ Writer API เป็นส่วนหนึ่งของ ข้อเสนอ API ความช่วยเหลือด้านการเขียน

API เหล่านี้จะช่วยปรับปรุงเนื้อหาที่ผู้ใช้สร้างขึ้นได้

กรณีการใช้งาน

ปรับแต่งข้อความที่มีอยู่ให้ยาวขึ้นหรือสั้นลง หรือเปลี่ยนโทน ตัวอย่างเช่น คุณสามารถทำสิ่งต่อไปนี้ได้

  • เขียนอีเมลสั้นๆ ใหม่ให้ดูสุภาพและเป็นทางการมากขึ้น
  • แนะนำการแก้ไขรีวิวของลูกค้าเพื่อช่วยให้ลูกค้ารายอื่นเข้าใจความคิดเห็น หรือนำเนื้อหาที่เป็นพิษออก
  • จัดรูปแบบเนื้อหาให้ตรงกับความคาดหวังของผู้ชมบางกลุ่ม

หากไม่เห็น Use Case ของคุณ เข้าร่วมโปรแกรมทดลองใช้ก่อนเปิดตัว เพื่อแชร์ความคิดเห็น

เริ่มต้นใช้งาน

เข้าร่วมช่วงทดลองใช้จากต้นทางของ Rewriter API ซึ่งจะทำงานใน Chrome 137 ถึง 142

ตรวจสอบข้อกำหนดเกี่ยวกับฮาร์ดแวร์

นักพัฒนาแอปและผู้ใช้ที่ใช้งานฟีเจอร์โดยใช้ API เหล่านี้ใน Chrome ต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้ เบราว์เซอร์อื่นๆ อาจมีข้อกำหนดในการใช้งานที่แตกต่างกัน

API ตรวจหาภาษาและ 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: VRAM มากกว่า 4 GB เท่านั้น
  • เครือข่าย: อินเทอร์เน็ตแบบไม่จำกัดหรือการเชื่อมต่อแบบไม่จำกัดปริมาณ

ขนาดที่แน่นอนของ Gemini Nano อาจแตกต่างกันเล็กน้อย หากต้องการดูขนาดปัจจุบัน ให้ไปที่ chrome://on-device-internals แล้วไปที่สถานะโมเดล เปิดเส้นทางไฟล์ที่ระบุเพื่อกำหนดขนาดโมเดล

ลงชื่อสมัครเข้าร่วมการทดลองใช้จากต้นทาง

Rewriter API พร้อมใช้งานในช่วงทดลองใช้จากต้นทางร่วมกับ Writer API วิธีเริ่มใช้ API เหล่านี้

  1. รับทราบนโยบายการใช้งานที่ไม่อนุญาตสำหรับ Generative AI ของ Google
  2. ไปที่ช่วงทดลองใช้ Rewriter API จากต้นทาง
  3. คลิกลงทะเบียน แล้วกรอกแบบฟอร์ม ในช่องแหล่งที่มาของเว็บ ให้ระบุแหล่งที่มาหรือรหัสส่วนขยาย chrome-extension://YOUR_EXTENSION_ID
  4. คลิกลงทะเบียนเพื่อส่งข้อมูล
  5. คัดลอกโทเค็นที่ได้รับ แล้วเพิ่มลงในหน้าเว็บที่เข้าร่วมทั้งหมดในต้นทาง หรือใส่ไว้ในไฟล์ Manifest ของส่วนขยาย
  6. เริ่มต้นใช้ Rewriter API

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเริ่มต้นใช้งานช่วงทดลองใช้ฟีเจอร์ใหม่

เพิ่มการรองรับ localhost

หากต้องการเข้าถึง Writer และ Rewriter API ใน localhost ระหว่างช่วงทดลองใช้จากต้นทาง คุณต้องอัปเดต Chrome เป็น เวอร์ชันล่าสุด จากนั้น ดำเนินการตามขั้นตอนเหล่านี้:

  1. ไปที่ chrome://flags/#rewriter-api-for-gemini-nano
  2. เลือกเปิดใช้
  3. คลิกเปิดอีกครั้งหรือรีสตาร์ท Chrome

ใช้ Rewriter API

ก่อนอื่น ให้เรียกใช้การตรวจหาฟีเจอร์เพื่อดูว่าเบราว์เซอร์รองรับ API เหล่านี้หรือไม่


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

Rewriter API และ AI API ในตัวอื่นๆ ทั้งหมดจะผสานรวมอยู่ในเบราว์เซอร์ ระบบจะดาวน์โหลด Gemini Nano แยกต่างหากในครั้งแรกที่เว็บไซต์ใช้ AI API ในตัว ในทางปฏิบัติ หากผู้ใช้โต้ตอบกับ API ในตัวแล้ว แสดงว่าผู้ใช้ได้ดาวน์โหลดโมเดลไปยังเบราว์เซอร์แล้ว

หากต้องการตรวจสอบว่าโมเดลพร้อมใช้งานหรือไม่ ให้เรียกใช้ฟังก์ชันแบบอะซิงโครนัส Rewriter.availability() โดยจะแสดงผลสตริงที่มีค่าที่เป็นไปได้ 4 ค่า ดังนี้

  • unavailable: เบราว์เซอร์รองรับ Rewriter API แต่ใช้ไม่ได้ในขณะนี้ ซึ่งอาจเกิดจากสาเหตุหลายประการ เช่น มีพื้นที่ในดิสก์ไม่เพียงพอ ที่จะดาวน์โหลดโมเดล
  • available: เบราว์เซอร์รองรับ Rewriter API และสามารถใช้งานได้ทันที
  • downloadable: เบราว์เซอร์รองรับ Rewriter API แต่ต้องดาวน์โหลดโมเดลก่อน
  • downloading: เบราว์เซอร์รองรับ Rewriter API และกำลังดาวน์โหลดโมเดล

หากต้องการทริกเกอร์การดาวน์โหลดโมเดลและเริ่มโปรแกรมเปลี่ยนคำ ให้เรียกใช้Rewriter.create() ฟังก์ชัน หากการตอบกลับ availability() คือ downloadable ให้ฟัง ความคืบหน้าการดาวน์โหลดและแจ้งให้ผู้ใช้ทราบ เนื่องจากอาจใช้เวลาสักครู่

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: เมื่อเขียนเนื้อหาหลายชิ้นใหม่ บริบทที่แชร์จะช่วยให้โมเดลสร้างเนื้อหาที่สอดคล้องกับความคาดหวังของคุณได้ดียิ่งขึ้น

ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้นออบเจ็กต์ 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);
  });
}

เริ่มเขียนใหม่

การแสดงผลเนื้อหาจากโมเดลทำได้ 2 วิธี ได้แก่ แบบไม่สตรีมและแบบสตรีม

เอาต์พุตที่ไม่ใช่การสตรีม

การเขียนใหม่แบบไม่สตรีมมิง โมเดลจะประมวลผลอินพุตทั้งหมด แล้วจึงสร้างเอาต์พุต

หากต้องการเอาต์พุตที่ไม่ใช่สตรีมมิง ให้เรียกใช้ฟังก์ชัน 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();

สาธิต

มีส่วนร่วมและแชร์ความคิดเห็น

Writer API และ Rewriter API อยู่ระหว่างการหารืออย่างต่อเนื่องและอาจมีการเปลี่ยนแปลงในอนาคต หากคุณลองใช้ API นี้และมีความคิดเห็น เรายินดีรับฟัง

ดู API ของ AI ในตัวทั้งหมดที่ใช้โมเดล ซึ่งรวมถึง Gemini Nano และ โมเดลผู้เชี่ยวชาญอื่นๆ ในเบราว์เซอร์