Writer API

เผยแพร่เมื่อวันที่ 20 พฤษภาคม 2025

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

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

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

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

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

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

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

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

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

ตรวจสอบข้อกำหนดด้านฮาร์ดแวร์

เครื่องมือตรวจหาภาษาและ Translator API ใช้งานได้ในเดสก์ท็อปใน Chrome เท่านั้น

Prompt API, Summarizer API, Writer API และ Rewriter API จะทำงานใน Chrome ได้เมื่อมีคุณสมบัติตรงตามเงื่อนไขต่อไปนี้

  • ระบบปฏิบัติการ: Windows 10 หรือ 11, macOS 13 ขึ้นไป (Ventura ขึ้นไป) หรือ Linux API ที่ Gemini Nano รองรับยังไม่รองรับ Chrome สำหรับ Android, iOS และ ChromeOS
  • พื้นที่เก็บข้อมูล: อย่างน้อย 22 GB ในวอลุ่มที่มีโปรไฟล์ Chrome
  • GPU: VRAM มากกว่า 4 GB เท่านั้น
  • เครือข่าย: อินเทอร์เน็ตแบบไม่จำกัดหรือการเชื่อมต่อแบบไม่จำกัดปริมาณ

ข้อกำหนดเหล่านี้มีไว้สำหรับคุณในกระบวนการพัฒนาและผู้ใช้ของคุณที่ใช้ฟีเจอร์ที่คุณสร้างขึ้น

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

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

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

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

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

หากต้องการเข้าถึง Writer และ Rewriter API ใน 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 แยกต่างหากเมื่อเว็บไซต์ใดก็ตามใช้ AI API ในตัวเป็นครั้งแรก ในทางปฏิบัติ หากผู้ใช้โต้ตอบกับ API ในตัวแล้ว แสดงว่าผู้ใช้ได้ดาวน์โหลดโมเดลลงในเบราว์เซอร์แล้ว

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

  • 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.
  writer = await Writer.create(options);
  writer.addEventListener('downloadprogress', (e) => {
    console.log(e.loaded, e.total);
  });
}

เริ่มเขียน

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

เอาต์พุตแบบไม่สตรีม

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

หากต้องการเอาต์พุตแบบไม่สตรีม ให้เรียกใช้ฟังก์ชัน 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 นี้แล้วมีความคิดเห็น เรายินดีรับฟัง

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